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

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 Commons 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 the Apache Commons mailing lists

   user-subscribe :at: commons.apache.org
and
    dev-subscribe :at: commons.apache.org

and the dev mailing list archives can be found at

   http://mail-archives.apache.org/mod_mbox/commons-dev/

Please prefix the subject line of any messages with [sanselan].

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

The Commons 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://commons.apache.org/building.html

Credits
=======

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