
                    A  P  A  C  H  E        L  E  N  Y  A

  About Apache Lenya
  ------------------

  Apache Lenya is a Java-based Open-Source Content Management System.
  It is based on open standards such as XML and XSLT. One of its core
  components is Cocoon from the Apache Software Foundation.

  Apache Lenya supports inline WYSIWYG editors. Your site editors do not
  have to learn XML. This is possible thanks to the support of XML,
  XSLT and XML Schema on the client side. An administration interface
  allows advanced users to monitor the CMS, and perform configuration
  tasks.


  Installation Instructions and Documentation
  -------------------------------------------

  For the source distribution read INSTALL-SRC.txt.

  The documentation available as of the date of this release is included
  in this directory.

  If you are updating from a previous release of Lenya, make sure
  that you read the installation instructions on updating first.

  Look for the most updated documentation on the Apache Lenya web site
  (http://lenya.apache.org/).



  Licensing and legal issues
  --------------------------

  Apache Lenya is licensed under the Apache Software License, a license of the BSD
  family, and contains software which is compatible with the BSD licensing
  style.

  For more information, please read the LICENSE files in the /legal directory.



  Credits
  -------

  For more information on credits and due reference to included software,
  please read the CREDITS.txt file in this directory.


  Known issues
  ------------

  The Apache issue tracker is available at
  http://issues.apache.org/bugzilla/ .



  Thanks for your interest in Apache Lenya.



                                               The Apache Lenya Project
                                             http://lenya.apache.org/
