summaryrefslogtreecommitdiffstats
path: root/PROPOSAL.txt
blob: 4fb0106d64d1843059300ecbffdbfff52c67573b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Apache Tuscany Proposal

RATIONALE
=========

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.

CRITERIA
========

Meritocracy:

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.

Community:

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.

Core Developers:

Most of the initial committers are members of BEA and IBM development teams. 4
are committers on other Apache projects.

Alignment:

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
==========================

Orphaned products:

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).

Homogenous developers:

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.

INITIAL SOURCE
==============

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:

    * http://dev2dev.bea.com/pub/a/2005/11/sca.html
    * http://www.ibm.com/developerworks/library/specification/ws-sca/
    * http://www.iona.com/devcenter/sca/
    * http://oracle.com/technology/webservices/sca
    * https://www.sdn.sap.com/
    * http://www.sybase.com/sca

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:

    * http://issues.apache.org/jira/browse/INCUBATOR-8

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
mailing list(s)

    * tuscany-dev@ws.apache.org
    * tuscany-commits@ws.apache.org

Subversion repository

    * https://svn.apache.org/repos/asf/incubator/tuscany

Jira

    * Tuscany (TUSCANY)

INITIAL COMMITTERS
==================

    * 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

APACHE SPONSOR
==============

The WS PMC has voted to accept this project into the WS project upon successful
incubation.

Champion

    * Geir Magnusson Jr.

Mentors:

    * Sam Ruby
    * Davanum Srinivas (Dims)