Hi, Carsten Ziegeler schrieb: > Felix Meschberger wrote: >> Yes, it is true: a bundle is *just* a deployment unit (and development >> unit if you wish). Nothing more nothing less. Whether a package is part >> of one bundle or another does not matter at all. As such the increased >> version number of a bundle just indicates: hey there are some changes in >> this bundle with respect to the previous version. >> >> Now, the level granularity of interaction between bundles *is* the >> package: bundles don't care for other bundles; they care for packages to >> wire to. And it is the package we are importing and exporting. As such >> we have to assign version numbes on the correct level. > Yes, right. > >> <SNIP/> >> If I change the API in the o.a.s.api.resource package, why would it make >> sense and make lives easier, if I upgrade the minor version number of >> the package o.a.s.api.request, too ? In fact, this makes life even >> harder for the end user: We have to upgrade the bundling implementing >> the request interface (if only to increase package import version) and >> we have to deploy the new bundle. Why ? Because the resource API was >> upgraded. Does not make any sense at all. This is not what OSGi is about. > Yes, sure, but I think this is more theory than practice. How likely is > it that the there are two separate implementations, one for the resource > and one for the request package? Only in this case, having different > version numbers matters. > Now, I as I said, having version numbers on a per package base seems to > be more correct.
Point is that there is an API bundle whose API is implemented by more than one implementation bundle: The Sling API exports API implemented by the jcr/resource, the engine, scripting/core, servlet/resolver, and possibly more bundles. IIRC this is in fact the only such case in Sling. > >> So lets make life harder for the us working on the exported API ! The >> harder this life, the harder we will think about changing the API ! >> Consider this as sort of an additional security net against too >> deliberate API changes .... >> >> So whenever you change something in an exported package, make sure you >> also think about consequences for your downstream user's in terms of >> assigning the correct version number. > Ok. > >> Yes, it requires more thinking. Yes, it requires more work on our side. >> Yes, it might be error prone. But also, it is a problem of us coders >> thus helping our users. Don't place the burden on our users. This is >> IMHO the wrongest thing we could do. >> >> Finally: We should change a version number only if there is in fact a >> change. >> >> Granted, it is not simple and easy, but it is definitely worth the effort. > Ok, so if we would do this, we would use different versions for packages > and the bundle version is then just the highest version number used for one > package (at least in most cases). > The only problem I still have is that in the end there is no correlation > between the bundle version and the package versions. If for example a > bundle has two packages A and B, we start with version 0.1 for both > packages -> bundle version 0.1; then we change B to 0.2 -> bundle > version 0.2 but A is still 0.1. > Now we change A to 0.2 as well which would result in what bundle > version? 0.2.2? > Now this is no problem per se, it just makes the users life a little bit > harder. Imagine you search for a bundle providing package A in version > 0.2 - due to the package name/bundle symbol name correlation you choose > the above bundle in version 0.2 - but that one does not contain it. > So a better way would be to just increase a number for bundle release, > like API R1, API R2 etc :) Well, this is the same issue as for the OSGi API libraries: These (core and compendium) are at version 4.2 while the packages "exported" are at version 1.x. > Again, with proper tooling all of this is no problem. My stance is: tooling helps -- but it should not be a prerequisite. > > But maybe we should give it a try and see how it works. Yep. Lets start with the proposed changes for SLING-1176 ;-) Regards Felix