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

Reply via email to