I believe we are ruling out the middle way (release by module) as it presents too many challenges, both in making existing tools work, avoiding releasing the same thing twice in a sub-module and just being hard to understand. This leaves us, as Guillaume suggested originally, with a choice between what we have now (a single release) and some sort of release-by-bundle scheme.

Releasing by bundle, with the correct semantic versioning, still presents a number of issues. I suggest that the next step is that I create another branch and attempt to devise an optimum SVN layout and process for release by bundles. This would still be purely experimental but it would give us something concrete to compare with the current process.

I have summarised the issues that I believe you have raised below:


How to version a bundle?
===============

There is a tool [1] but it's a prototype and will not always do what we need. Guillaume said "Theproblem is that there are cases where a purely semantic change (i.e. you change a service implementation in an incompatible way without changing the API) can't be find by such a tool, as it can only work at the API (class / method) level I think." Graham agreed and said that we would need a way to manually specify a version. I believe Jeremy has asked about the state of the tool on the dev@ace list.

Guillaume is also right to point out that a released version of a bundle doesn't have to be the same as the version in development. So, a bundle version 1.0.1 could be released from a development stream at 0.4.0-SNAPSHOT. In fact, I believe it would be necessary to use this because one cannot be certain of the correct release version until development has finished and the code can be compared with the previous release.

[1] http://www.osgi.org/wiki/uploads/CommunityEvent2010/OSGi%20Community%202010%20-%20Brada.pdf


What size bundles?
===========

OSGi good practice (Graham) indicates separating the API from implementation. This argues in favour of keeping the bundles as we have them now. Alasdair also supported this view.


Consumability.
=========
Consumers need (at least) two things:

1) For each "module" what is the set of bundles (names and versions) that I need to implement some functionality? Eg - if I want to implement a blueprint service what do I need from Aries? How can I get them without doing multiple manual downloads?

2) What is the most recent complete set of released Aries bundles that has been tested together with a released, documented, set of the samples? Not being able to run the samples is the 3rd most irritating thing when looking at OS projects (no build instructions, and not being able to build from source are the first two). It's also true that the blog sample is a good catch-all test, in the past it has caught problems that get by other tests.

3) To avoid conflicts in dependencies. Guillaume raised this as a problem - but I believe that Alasdair addressed it in terms of using OSGi to avoid conflicts. Correct me if this is still an issue.


Branching
======

I don't think there is any way to combine semantic versioning and SVN branching in a fool proof manner. That is, if a bundle has been released at version 1.0.1 and again at 1.0.2 there is no 'OSGi blessed' way to release a bundle that fixes a single bug in 1.0.1. This situation may of course never happen in Aries, but surely it is a general concern? If so, has someone raised it with the Alliance?

Zoe


Reply via email to