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;
Constdb: fast persistent store for mostly constant data, using TinyCDB;
Filedb: key/value persistent store, using plain files;
Http: HTTP client, using Libcurl;
Smtp: SMTP client, using Libcurl;
Kvdb: fast key/value persistent store, using LevelDB;
Log: distributed logger, using Facebook Scribe;
Queue: AMQP queuing, using Apache Qpid/C;
Sqldb: SQL database, using PostgreSQL and PgBouncer;
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
 |   |   |-- opencl           Support for OpenCL components
 |   |   |-- 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
 |   |   |-- constdb          TinyCDB constant persistent store
 |   |   |-- filedb           Plain file persistent store
 |   |   |-- http             HTTP client
 |   |   |-- kvdb             LevelDB key/value persistent store
 |   |   |-- log              Scribe logger
 |   |   |-- queue            AMQP message queue
 |   |   |-- smtp             SMTP client
 |   |   |-- 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
 |   |-- patches              Temporary patches to some of the dependencies
 |
 |-- 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

