Tuscany provides multiple language implementations of the Service Component Architecture (SCA) specifications and related technologies such as SDO (links to these specifications are in the "Initial Source" section of this proposal).
Its overall goal is to simplify the implementation of services and the composition of heterogeneous service networks by building infrastructure bridging the gaps between language-specific application component implementation technologies (e.g. Java EE, BPEL, Spring, etc) using SOA concepts/design approaches (e.g. web services, loosely coupled asynchronous messaging, ESBs, etc).
The seed code for the project will consist of in-progress C++ and Java implementations of several SCA specifications that we intend to continue development on in conjuction with other Apache communities. More information on the scope of the seed code can be found in subsequent sections of this proposal.
The Tuscany committers recognize the desirability of running the project as a meritocracy; indeed, the scope of the project is so broad that we find it hard to envision success any other way. One of the lessons taken from the historic development of middleware is that specifications developed in isolation from real usable code or amongst a narrowly restricted list of contributors often do not see widespread adoption. We are eager to engage other members of the community and operate to the standard of meritocracy that Apache emphasizes.
Tuscany is not based on an existing open source community, but the contributors involved have experience participating in and building other open source communities. A primary objective of the project is to build a vibrant community of users and active contributors.
Most of the initial committers are members of BEA and IBM development teams. 4 are committers on other Apache projects.
An initial implementation has been written in Java and has already been integrated with Apache Tomcat as a deployment platform; it is expected that this implementation will soon be integrated with other Java middleware environments including Apache Geronimo and ObjectWeb Celtix. This implementation makes extensive use of projects from the Apache Web Services community, including Axis and associated tools; future implementation of policies will increase the collaboration with other web service projects.
Another implementation has also been written in C++ and has been integrated with Apache HTTPD and the Axis C++ project.
The scope of the project is broader than just Java and C++, and some development has started on component containers for other programming languages including BPEL and PHP.
As a broad goal is to present a SOA development model that mediates over a variety of middleware technologies, there is potential synergy with many other Apache projects including:
- Customized component/application packaging and deployment on Geronimo
- Data access integration with Beehive controls
- XML model representation and parsing using XMLBeans
- Language/platform neutral messaging infrastructure using Synapse
- OSGi packaging and deployment on Felix
AVOIDING THE WARNING SIGNS
The initial code submission is based on active code developed collaboratively by BEA and IBM who believe that its continued evolution in an open community will lead to a stronger, more widely accepted foundation for development of SOA-based applications.
Inexperience with open source:
Several of the committers have experience working on open source projects and are committers on other Apache projects. The seed materials have been co-developed in an environment that is structurally similar to open source communities (for example, design decisions made over mailing lists based on technical merit).
The current list of committers includes developers from several different companies who are geographically distributed across the U.S., Europe, and Asia. They are experienced with working in a distributed environment, and with resolving technical differences outside the scope of a common employer.
Reliance on salaried developers:
Most of the initial developers are paid by their employers to contribute to this project; however, this includes three independent employers with track records for ongoing investment in open source communities (including Apache and Eclipse).
No ties to other Apache products:
As described in the Alignment section, this framework already has ties to many Apache products. The initial codebase is already licensed under the Apache License 2.0.
A fascination with the Apache brand:
The committers are intent on developing a strong open source community around frameworks that treat SOA-centric design in a first-class manner. We believe that the Apache Software Foundation's emphasis on community development makes it the most suitable choice for such a project.
SCOPE OF SUBPROJECTS
The initial contributors envision an active community of related projects sharing a common model for SOA applications but targeting specific technical areas of that model.
Tuscany will be seeded with several projects based on donated material (see the next section):
- an assembly model defining a mechanism for composing SOA applications
- a Java implementation running on top of Tomcat and Axis
- a Java implementation of SDO2 and a data access subsystem
- a C++ implementation running on top of Apache HTTPD and Axis C++
- a C++ implementation of SDO2
To assist in community building the committers have identified several key technology areas that will allow new contributors to actively engage in the project. These include:
- transition web service integration to Axis2
- integration with Axis2 policy implementations for security, transactions, reliable messaging
- support heterogeneous components written in C/C++, BPEL, PHP and other languages
- support callbacks, allowing a component to call back to the service that invoked it
- support asynchronous calls using JMS
- support typesafe SDOs in the C++ implementation of SDO2
These initial projects are intended merely as starting points and should not be taken as bounding the scope of the Tuscany project as a whole. Some other potential projects may include:
- Integration with existing development frameworks (such as JEE5/EJB3 or Spring).
Integration with rich middleware frameworks (such as Celtix or ServiceMix).
- Frameworks for providing service-oriented data access to a variety of existing resources.
- Richer tooling support for SOA-based applications, especially in the areas of services composition, monitoring and policy administration.
A group of vendors are developing a set of specifications relating to the design and composition of systems using SOA, collectively called Service Component Architecture (SCA). In progress versions are available at:
The initial contributors have been developing Java and C++ code bases (already licensed under the Apache License 2.0) which implement aspects of these specifications, and intend to donate it to Apache. A snapshot of this code has been uploaded to JIRA and is is available at:
Although the Tuscany project expects to bootstrap using these materials and in the case of specifications, to provide feedback that will be incorporated into their ongoing development, we expect and encourage the open source community to take the project in new directions not envisioned by them.
ASF resources to be created
- Tuscany (TUSCANY)
- Jeremy Boynes
- Frank Budinsky
- Don Cai
- Jean-Sebastien Delfino
- Mike Edwards
- Padmapriya Illindala
- Jim Marino
- Geir Magnusson Jr.
- Eddie O'Neil
- Radu Preotiuc-Pietro
- Rick Rineholt
- Pete Robbins
- Michael Rowley
- Edward Slattery
- Ken Tam
- Alexandre Vasseur
- Kevin Williams
The WS PMC has voted to accept this project into the WS project upon successful incubation.
- Geir Magnusson Jr.
- Sam Ruby
- Davanum Srinivas (Dims)