===========================================================
Welcome to Apache ESME  <http://esme.apache.org/>
===========================================================

Enterprise Social Messaging Experiment (ESME) is a secure and highly 
scalable microsharing and micromessaging platform that allows people to 
discover and meet one another and get controlled access to other sources 
of information, all in a business process context.   


Building ESME
=============

Please note that ESME currently only works with JDK 1.6. We are hopeful
that JDK 1.5 will soon be supported.

You can build the ESME sources using the Maven 2 build system. Execute the
following command in the ESME source directory to build the sources and
to start the application via jetty:

    mvn jetty:run

See the Maven web site at http://maven.apache.org/ for more instructions
and the latest Maven downloads. 

Mailing Lists
=============

Discussion about the ESME project takes place on the development mailing
list dev@esme.apache.org. The list is open to anyone and
publicly archived. You can subscribe the mailing list by sending a
message to dev-subscribe@esme.apache.org, and unsubscribe by
sending a message to dev-unsubscribe@esme.apache.org. To receive
more instructions, send a message to dev-help@esme.apache.org.

Issue Tracker
=============

If you encounter errors in ESME or want to suggest an improvement or
a new feature, please visit the ESME issue tracker at
https://issues.apache.org/jira/browse/ESME. There you can also find the
latest information on known issues and recent bug fixes and enhancements.

