On Apr 5, 2011, at 19:45 , Bram de Kruijff wrote:

> 2011/4/5 Ivo Ladage-van Doorn <[email protected]>:
>> Hi List,
>> 
>> We discussed the split off of subprojects before, my question is how we
>> should deal with subprojects depending on other subprojects. In case of the
>> Cassandra subproject for example, there are a lot of dependencies with other
>> projects (almost by definition, as Cassandra implements storages defines by
>> other projects). For example:
>> 
>> -          Gadget store - used by the gadget container (Shindig)
>> 
>> -          Tenant store – used to store tenants (amdatu core).
>> 
>> -          User admin store – implements useradmin storage provider (amdatu
>> authorization)
>> 
>> -          Token store – implements amdatu token storage provider (Amdatu
>> oAuth)
>> 
>> -          Consumer registry – implements oAuth consumer registry (Amdatu
>> oAuth)
>> 
>> 
>> 
>> In our last discussion the answer was ‘define a new subproject which
>> includes this artifact’. In this case it means that I would have to
>> introduce 4 new subprojects;
>> 
>> 
>> 
>> Amdatu-cassandra-opensocial
>> 
>> Amdatu-cassandra-core
>> 
>> Amdatu-cassandra-authorization
>> 
>> Amdatu-cassandra-oauth
>> 
>> 
>> 
>> Each having its own lifecycle. I doubt if this is the way to go. There is a
>> lot of overhead involved when defining these as separate subprojects
>> (separate JIRA components, separate roadmaps, separate release lifecycle,
>> separate WIKI pages) and it will become a struggle to manage them. I would
>> rather see these implementations as modules that are part of the overall
>> Cassandra subproject. WDYT?
> 
> My 2 cents,
> 
> No we do not want a seperate (sub)projects, as in an organizational
> structures, for each module / software artifact per se. I think it
> makes most sense to keep code within the 'logical' subproject.

Let's first make sure that each of the subprojects we defined becomes a 
separate project. Within the subproject I agree its desirable to keep track of 
sub-subprojects for the artifacts you release so you at least keep the option 
open to:
a) Release only a subset of all possible artifacts: in case not all of them are 
yet "fit for release".
b) Release artifacts separately: in case you need to do a "bugfix" that only 
affects one artifact.

> Hence I
> would implement "OpenSocial Cassandra storage providers" in the
> OpenSocial subproject. This project may have one release cycle for
> this, or it may not. I expect more finegrained cycles, but I'd say
> that is up to the project itself.

Agreed.

> More important however, and that was my point in the discussion you
> refer to, is that you keep a clean separation between
> projects/modules/artifacts by defining clear api/spis and implementing
> accordingly. Eg. At this point if I want to do anything with shindig I
> am convicted to dragging cassandra along onto my compile/test/runtime
> classpaths. That is bad, the "business functionality" of a subproject
> should be available without leaking anything that is (or should be
> optional) onto any classpath.

>From a modularity point of view, that is indeed the most important aspect. For 
>the whole development cycle, just having access to the API/SPI packages must 
>be enough.

Greetings, Marcel


_______________________________________________
Amdatu-developers mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-developers

Reply via email to