Apache Tuscany SCA Runtime
==========================

Tuscany SCA Native is an SCA (Service Component Architecture) runtime written
in C++ and integrated with the Apache HTTPD server.

It supports SCA components written in C++ and Python. Experimental support
for other programming languages is under construction. SCA bindings are
available for the JSON-RPC, ATOMPub and RSS protocols. User signin is
implemented using OpenID and OAuth.

Several useful SCA components are provided on top of the SCA runtime, which
can be used to help assemble distributed SCA composite applications:

Cache: key/value memory cache, using Memcached;
Chat: XMPP chat, using Apache Vysper and Libstrophe;
Filedb: key/value 'NoSQL' persistent store, using plain files;
Http: HTTP client, using Libcurl;
Log: distributed logger, using Facebook Scribe;
Nosqldb: key/value 'NoSQL' persistent store, using TinyCDB;
Queue: AMQP queuing, using Apache Qpid/C;
Sqldb: SQL database, using PostgreSQL;
Webservice: Web service gateway, using Apache Axis2/C.

These components present a simple ATOMPub REST interface, allowing you to send
a message to a queue, a chat connection, or add an entry to a cache or a
database for example, using a simple HTTP POST. 


Getting the source code
=======================

To checkout the source code, do this:
git clone git://git.apache.org/tuscany-sca-cpp
or
svn checkout http://svn.apache.org/repos/asf/tuscany/sca-cpp tuscany-sca-cpp

To checkout the source code with commit access, do this:
git clone git://git.apache.org/tuscany-sca-cpp
cd tuscany-sca-cpp/.git
curl -OL http://git.apache.org/authors.txt
cd ..
git config svn.authorsfile .git/authors.txt
git config user.email <you>@apache.org
git config svn.rmdir true
git svn init --prefix=origin/ -s https://svn.apache.org/repos/asf/tuscany/sca-cpp
git svn rebase


Layout
======

Here's a rough guide to the Tuscany SCA source tree:

 /
 |-- trunk                    Master development branch
 |   |
 |   |-- kernel               SCA runtime kernel
 |   |
 |   |-- modules              Modules that plug into the runtime
 |   |   |-- atom             AtomPub data encoding
 |   |   |-- edit             Composite app editor
 |   |   |-- http             HTTP protocol
 |   |   |-- java             Support for Java components
 |   |   |-- json             JSON data encoding
 |   |   |-- oauth            User signin using OAuth
 |   |   |-- openid           User signin using OpenID
 |   |   |-- python           Support for Python components
 |   |   |-- rss              RSS data encoding
 |   |   |-- scheme           Support for Scheme components
 |   |   |-- server           Apache HTTPD server integration
 |   |   |-- wsgi             Python WSGI server integration
 |   |
 |   |-- components           Useful SCA components
 |   |   |-- cache            Memcached key/value cache
 |   |   |-- chat             XMPP chat
 |   |   |-- filedb           Plain file NoSQL database
 |   |   |-- http             HTTP client
 |   |   |-- log              Scribe logger
 |   |   |-- nosqldb          TinyCDB NoSQL database
 |   |   |-- queue            AMQP message queue
 |   |   |-- sqldb            PostgreSQL database
 |   |   |-- webservice       Axis2 Web service gateway
 |   |
 |   |-- samples              Sample Applications
 |   |   |-- store-cluster    Online store on a proxy + server + db cluster
 |   |   |-- store-cpp        Online store written in C++
 |   |   |-- store-gae        Online store written in Python, working on GAE
 |   |   |-- store-java       Online store written in Java
 |   |   |-- store-nosql      Online store using a NoSQL database
 |   |   |-- store-python     Online store written in Python
 |   |   |-- store-scheme     Online store written in Scheme
 |   |   |-- store-sql        Online store using an SQL database
 |   |   |-- store-vhost      Online store on virtual hosts
 |   |
 |   |-- macos                Automated install on Mac OS X 10.1.7
 |   |-- ubuntu               Automated install on Ubuntu 10.10
 |
 |-- branches                 Topic and release branches
 |
 |-- tags                     Release tags


Building
========

See the INSTALL file at the root of the source tree.


Contributing to the project
===========================

To contribute to the project or report issues see the Tuscany development
mailing list:
dev@tuscany.apache.org

Archives:
http://www.mail-archive.com/dev@tuscany.apache.org
http://marc.info/?l=tuscany-dev

To subscribe send an email to:
dev-subscribe@tuscany.apache.org

