Hi,

Jukka Zitting schrieb:
Hi,

On Thu, Jun 26, 2008 at 12:25 PM, Felix Meschberger <[EMAIL PROTECTED]> wrote:
I do not envision weekly releases of single components. But there may well
be one or two releases (or more) per month, yes. We also have this over at
Felix and it works quite well.

OK. I'm just wondering how it looks to a potential end user.

Looking at the Felix download and news pages, it's quite difficult to
determine whether an end user needs to care about all that. A release
is not just an artifact pushed to the Maven repository, but also
related stuff like release notes and relevant documentation updates.
Each release should come at least with enough information to tell a
user whether they should upgrade and what the effects will be if they
do.

Agreed. Release notes will certainly help. But these may be semi-automated, I am sure.

Regarding end-user experience: Our current download pages has exactly three downloadables: the standalone app, the web app and the source. We might add individually released bundles in the future. But I don't think, this is good. Read on ;-)


I would only consider merging if it would make sense on a code-wise basis.
Merging to "simplify" release management is IMHO wrong and bad.

How about merging to simplify end user experience?

We have this merging already and these are the apps we distribute today. we might add other bundlings in the future in Deployment Packages.

Unless we can
somehow automate upgrades (wouldn't it be cool if bundles and all the
dependencies were automatically downloaded from the Maven
repository... :-), our users could well end up manually managing a
complex dependency tree. At least we should document the component
dependencies somewhere.

Oh yeah, this _is_ possible ! There is the so-called OSGi bundle repositories -- OBR for short. The Sling applications come pre-installed with support for these repositories by means of the Felix Web Console and Felix bundlerepository bundles.

If you go to the bundles list of the web console you might notice the generally grayed-out "Update" buttons. If you happen to have an appropriate OBR registered (go to the OSGi Repository page) providing updates for one or more bundles, you see the button activated. Simply clicking on such a button will upgrade the given bundle -- and automatically also upgrade any required dependencies.

For now we have the OBR for the first Sling release as a test bed at [1]. This will be expanded and be coordinated with similar efforst in the Apache Felix project with the ultimate goal of providing OBRs for ease of use.


In the end, we should make everything a bundle. This enables all use cases,
import and embedding. Because, remember: A bundle basically is just a JAR
with special manifest headers.

The bigger difference is how they are presented to the user in a
running system. For example, on the web console, does it make sense
that for example commons-collections can be individually removed or
upgraded? How aware the end user should be of all the inter-component
dependencies? IMHO, the fewer dependencies the user needs to worry
about the better.

In the current web console you can see for each bundle, what imports are active and what exports and which bundle is actually importing from the bundle you are looking at.

So you can quickly decide which bundle will be touched when removing a bundle. When upgrading a single bundle, the depending bundles will generally quite happily work with the more recent version.


For example, say I have a component that uses some fancy new Map
implementation in a recent commons-collections release. When a user
deploys my component, it would be nice if she didn't need to also
worry about the commons-collections version. IMHO the same reasoning
applies also to things like commons/json.

Beware of mixing terms: What is a component here ? Is it a Declarative Services Component ? In this case it is deployed as part of a bundle, which might have an import to the commons-collections library. if you deploy the bundle through OBR and the OBR has the newer library available, it will automatically be deployed together with the new component bundle.

If the updated commons-collections library is not available the new bundle will not resolve -- or is not deployable through OBR due to missing dependencies.

Hope this helps.

Regards
Felix

[1] http://people.apache.org/~fmeschbe/sling-repository.xml

Reply via email to