=============================================================
Welcome to Apache Sanselan  <http://sanselan.apache.org/>
=============================================================

License (see also LICENSE)
==============================

Collective work: Copyright 2007-2009 The Apache Software Foundation.

Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


Getting Started
===============

Mailing Lists
-------------

To get involved with the Apache Sanselan project, start by having a
look at our website (link at top of page) and join our mailing
lists by sending an empty message to

   sanselan-dev-subscribe     :at: incubator.apache.org
and
   sanselan-commits-subscribe :at: incubator.apache.org

and the dev mailing list archives can be found at

   http://incubator.apache.org/mail/sanselan-dev/


Downloading
-----------

The Sanselan source code is available via Subversion at

   https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk

and anonymous access is available at

   http://svn.apache.org/repos/asf/commons/proper/sanselan/trunk

or with ViewVC at

   http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/

To checkout the main Sanselan source tree, run

   svn checkout http://svn.apache.org/repos/asf/commons/proper/sanselan/trunk/sanselan

Once you have a copy of the source code tree, you can use Apache Maven

   http://maven.apache.org/

to build the project. You should use Maven 2 to build Sanselan.
The minimal command to build, test, and package all the main Sanselan
components is:

   mvn install

For more instructions, please see the documentation at:

   http://sanselan.apache.org/doc/building.html

Credits
=======

See http://sanselan.apache.org/team-list.html for the list of 
Sanselan committers and main contributors.
