Orbit/Promotion, Release, and Retention Policies
= UNDER REVIEW =
Orbit itself does not have releases, per se, since the 3rd party jars that are bundled have already been released. But, we will still use the Eclipse Simultaneous Release rhythm to set deadlines for ourselves and promote and retain bundles.
An Orbit milestone will be considered the same as the base Eclipse platform. This is a statement of time, as opposed to content, since for anyone else in the Simultaneous Release to use an Orbit Bundle, it would have to be ready (and final) at least a week or two before their milestone deadline.
Our continuous builds produce bundles ("builds") in the committers area. Their purpose is for the committers to have something to see or download and confirm all is as they expect it to be. These builds are often short lived and can be deleted without notice.
Once per week, currently by Monday noon (Eastern time), the latest continuous build will be copied over to the downloads area. These are similar or analogous to weekly Integration Builds, and will be retained in place until the Milestone release.
Once per milestone, (roughly simultaneous with the platform's milestone), the bundles from the latest weekly build will be copied to the bundles area. This is to be considered the final home for the bundles added here. That is, these "milestone" bundles should not normally have to be re-built. In case they do, they will have different qualifiers in the fourth field. As a matter of policy, we will retain up to 3 qualified versions of the same bundle. (And, we anticipate it being very rare to hit that limit).
'Issue: ' This permanent home for the bundles will not have "timestamp" directories, so it is easier to specify a permanent URL, write scripts, etc. The issue is that while these can currently be easily obtained one by one, but we have not yet decided what, if any, archive or update files to create for these "final" bundles.
The downloads area and bundles area are mirrored, so we will have a retention policy for bundles in general, to be sure it doesn't grow too large over the years. By policy, we will retain up to 3 versions of some bundle and after that, the older versions will be moved to the archive area. These "versions" do not include qualified versions, but means, for example, Xerces 2.8.0, 2.8.1, and 2.9.0. Once 2.9.1 was put in the repository, 2.8.0 would be archived. Eclipse Projects may request waivers to this policy if needed for some specific cases.
Comments from Martin Oberhuber:
Do we really need multiple different qualified versions in the bundles area? By definition, these have the same content in terms of class files but slightly different meta-info, "markup" or licensing words. I would expect that such "markup" can only get better over time and can't see any reason why anybody would want a "previous-qualified" version. Especially, I cannot see how clients would ever reliably select a particular one from multiple different qualified versions (except referencing exactly one but that's also unreliable since it may be gone at some time).
The only compelling reason for keeping old "qualified" versions of bundles would be to be able and reproduce old builds exactly as they were. But for this, just keeping 3 qualified versions is not sufficient -- rather than that, clients would need to advertise what they put into an official release. It might be better to plan that clients who need to reproduce an old build should do that by running the Orbit build scripts out of CVS themselves rather than downloading some pre-built bundle. It might be a good idea anyways to make the Orbit build scripts such that they can run on any client's computer.
Also, if I'm not mistaken one of the prime reasons for Orbit was to ensure that all clients of a given library version use exactly the same binary. This means that at release time there can be only one qualified version - "the" version for everyone. No point in allowing anyone use any other qualified version than what's the official Orbit version.
My EUR 0.02