On 29 September 2011 11:32, Emily Jiang <[email protected]> wrote: > On Thu, Sep 29, 2011 at 11:24 AM, David Bosschaert < > [email protected]> wrote: > >> Hi Emily, >> >> I'm not sure that's sufficient... Just a small example. >> >> Let say your bundle provides an interface FooCallback that users of >> your project need to implement to receive callbacks. If you add a >> method x() to that interface, all of your consumers will stop to >> compile. This should be a major version upgrade. >> >> In this case, according to semantic versioning white page, the implementor > limits its version range to a minor version changes e.g. [1.0.0, 1.10). It > should not tolerate any minor version changes. Any minor version changes > will not make into this client.
I'm happy to be proven wrong but I think the definition of an implementor is not as simple as you describe above. I think that, in the context of semantic versioning, an implementor is considered to be someone who provides an implementation of a technology. Like for instance Apache Aries is an implementor of the Blueprint technology. However, in some cases a user of a technology also needs to implement an interface in order to work with that technology. Just an example could be the BlueprintListener. You can implement that interface to interact with the Blueprint components but are not considered an implementor of the technology. In this case the an import of [1.0.0, 2.0.0) should work, given that you are logically speaking a consumer of the technology. Cheers, David
