Greetings,

I work on the Orbit project at Eclipse, where we make "OSGi bundles" from "third party" software.

And, I've noticed, you yourselves have started to provide OSGi bundles on your download page -- so that's good! :)

But, you do them a differently than we would in Orbit, or Eclipse, so thought I'd ask if there is a reason for it, and/or suggest a different approach.

I first looked at your OSGi bundle for 4.3.5 and was surprised to see it literally contain all the "prereqs" it needed, including "httpcore", commons-logging, commons-codec, ... ).

Ordinarily we (at Eclipse) would simply have the OSGi bundle for "httpclient" "import package" or "require bundle" for it's pre-reqs, but leave the code separate. Then some other layer would be responsible for "collecting" what is needed. In our (Eclipse) case, we use often use "features", but I understand not everyone does, but seems to me, it'd be better to provide a new bundle, maybe called "httpclient.collection" or something, if that is the way you wanted to "distribute everything needed". For Eclipse, we would not even *have* to use features for a case like this since installers, such as p2, will "install" what ever the httpclient needs, as long as it's in a reachable repository.

I was especially motivated to write this note after seeing you just come out with a new version of httpcore (4.3.3) and make me wonder ... are those fixes included in httpclient 4.3.5, or will there now have to be a new client at version 4.3.6, just to include the new 4.3.3 core? (And, I think the answer is "yes" -- though, I see from some JIRA entries, there may be other reasons to have a 4.3.6 -- but, some of those are in part related to this very issue I am writing about).

It seems to me to be a better "component model" to leave your OSGi bundles seperate, and then would "match" your "Java jars" in terms of content (only adding the OSGi required stuff) and then control the packaging in some other way -- features, or installers that understood OSGi required items, etc. -- and either leave that up to the consumer to do, or if you really wanted to provide "one bundle with everything" to create a new bundle, called "collection" or similar. I know we (Eclipse) are only one case but we would not need that "collection" bundle. We'd just need the pieces.

Given all that, is there a reason you do your bundles the way you do, that I am just not aware of? Or is there any merit to my suggestion?

Thanks,

Reply via email to