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,
- Question/Suggestion on your OSGi bundles David Williams
-