Agile OODT is a new version of `Object Oriented Data Technology`_.  It
improves upon the previous version by being easier to develop, maintain, and
extend; simpler to integrate by; and faster to use.

.. This is licensed software; see the files NOTICE.txt and docs/LICENSE.txt.

.. For installation instructions, see docs/INSTALL.txt.

.. References:
.. _`Object Oriented Data Technology`: http://oodt.apache.org/

.. meta::
    :keywords: OODT, data, object, OO, discovery, metadata,
        transfer, transformation, query, search, retrieval
    :description lang=en: Agile OODT, the nimble version of
        Object Oriented Data Technology

