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.

On the other hand if you have an interface Foo that users simply call
(e.g. it might be provided by a service that's part of your project),
then adding x() will be fine for users so in this case a minor version
upgrade is needed.

I *think* that in most cases it a human will need to decide in which
category an interface falls.

In any case, I fully support this effort. We can have another
discussion on the details when the subproject is there.

Best regards,

David

On 29 September 2011 10:29, Emily Jiang <[email protected]> wrote:
> Hi David,
>
> For an interface, the tool just finds out whether it has binary
> compatibility changes or not. If yes, the major version will need to be
> updated. If it has new methods etc (based on sementic versioning white
> paper), its minor version needs to be increased. Its version should be
> determined by the changes not by the different types of clients. As
> mentioned by Valentin, its client or implementors can protect themselves by
> using different version ranges.
>
> By the way, the tool is implemented based on the semantic version white
> paper as per your email.
>
> Regards
> Emily
>
> On Thu, Sep 29, 2011 at 9:05 AM, David Bosschaert <
> [email protected]> wrote:
>
>> Hi Valentin,
>>
>> It's all in this doc:
>> www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf
>>
>> Cheers,
>>
>> David
>>
>> On 29 September 2011 08:34, Valentin Mahrwald <[email protected]>
>> wrote:
>> > Hm, I thought the distinction between usage of the interface was a
>> distinction made on the import side. So as for an interface I am using but
>> not implementing I have a range of [a, a+1) and for one I am using through
>> implementation, [a, a+0.1). In either case I would have thought the semantic
>> versioning tool should suggest a+0.1 as the next version for adding a new
>> method, so as to enable the user to make that choice.
>> >
>> > What am I missing?
>> >
>> > Regards,
>> >
>> > Valentin
>> >
>> > On 29 Sep 2011, at 08:28, David Bosschaert wrote:
>> >
>> >> Hi Emily,
>> >>
>> >> Yes, sounds great. Especially if this plugin can ultimately be
>> >> integrated with maven and work alongside the maven-bundle-plugin that
>> >> would be great.
>> >>
>> >> Regarding the semantic versioning, this relates to the role that a
>> >> certain interface plays.
>> >> If an interface is extended (e.g. with a new method) then there are
>> >> two situations:
>> >> * if it's an interface that is supposed to be *implemented* by end
>> >> users then this is a major version increase. I think this is what you
>> >> have right now.
>> >> * however, if it's an interface that is supposed to be *used* by end
>> >> users but implemented by the infrastructure (e.g. part of the
>> >> 'project' you are comparing, which might span multiple bundles) then
>> >> only a minor version increase is needed. In this case the interface is
>> >> still binary compatible with users of it. It's just not compatible
>> >> with implementors of it. Note that this only applies to a limited set
>> >> of changes to an interface. E.g. removing a method is binary
>> >> incompatible for everyone.
>> >>
>> >> I'm not sure whether its possible to automatically guess what the role
>> >> of an interface is, so the tool needs to be configurable wrt to this.
>> >> I would even suggest that the tool fails unless this information is
>> >> available for all its public interfaces since guessing it wrong can
>> >> have pretty bad consequences.
>> >>
>> >> Cheers,
>> >>
>> >> David
>> >>
>> >> On 28 September 2011 19:36, Alasdair Nottingham <[email protected]> wrote:
>> >>> +1
>> >>>
>> >>> I think this would be a really good tool to have here. I'm happy to
>> assist
>> >>> with getting it integrated if you need anything.
>> >>>
>> >>> Thanks
>> >>> Alasdair
>> >>>
>> >>> On 28 September 2011 17:17, Emily Jiang <[email protected]>
>> wrote:
>> >>>
>> >>>> I use ASM and also have to load classes to access super classes:(.
>> >>>>
>> >>>> On Wed, Sep 28, 2011 at 5:10 PM, Timothy Ward <
>> [email protected]
>> >>>>> wrote:
>> >>>>
>> >>>>>
>> >>>>> Emily,
>> >>>>>
>> >>>>> Are you using ASM, or some other bytecode tool, to work out what has
>> >>>>> changed, or do you have to load classes and use reflection to find
>> out?
>> >>>>>
>> >>>>> Regards,
>> >>>>>
>> >>>>> Tim
>> >>>>>
>> >>>>>> Date: Wed, 28 Sep 2011 16:58:33 +0100
>> >>>>>> Subject: Re: Semantic Versioning tool
>> >>>>>> From: [email protected]
>> >>>>>> To: [email protected]
>> >>>>>>
>> >>>>>> Hi David,
>> >>>>>>
>> >>>>>> It works by comparing the current binary with the baseline binary:
>> >>>>>> 1. For each export package, it scans each non private class to see
>> >>>>> whether
>> >>>>>> there are binary incompatibility changes (according to Java
>> >>>>> specificiation
>> >>>>>> chapter 13 Binary Compability). If yes, a major version change is
>> >>>> needed
>> >>>>> for
>> >>>>>> this pkg.
>> >>>>>> 2. If there are not binary incompability changes, it will see
>> whether
>> >>>>> there
>> >>>>>> are abstract class, methods or new xsd file added. If yes, the
>> >>>> package's
>> >>>>>> minor version needs to be increased.
>> >>>>>> 3. It then determine the bundle version based on package versions
>> >>>> changed
>> >>>>>> according to semantic versioning white paper.
>> >>>>>>
>> >>>>>> The tool ignore micro version changes.
>> >>>>>>
>> >>>>>> I can contribute the tool as a project and then we can create a mvn
>> >>>>> plugin
>> >>>>>> from it or something even smarter.
>> >>>>>>
>> >>>>>> Regards,
>> >>>>>> Emily
>> >>>>>>
>> >>>>>> On Wed, Sep 28, 2011 at 4:16 PM, David Bosschaert <
>> >>>>>> [email protected]> wrote:
>> >>>>>>
>> >>>>>>> Very interesting, Emily. Would you be able to provide some
>> >>>> information
>> >>>>>>> regarding how it works?
>> >>>>>>>
>> >>>>>>> In any case I would welcome such an addition to Aries.
>> >>>>>>>
>> >>>>>>> Best regards,
>> >>>>>>>
>> >>>>>>> David
>> >>>>>>>
>> >>>>>>> On 28 September 2011 16:02, Emily Jiang <[email protected]>
>> >>>>> wrote:
>> >>>>>>>> I have developed a semantic checking tool to check whether a
>> >>>> bundle's
>> >>>>>>>> version or the export package versions are correclty versioned
>> >>>>> according
>> >>>>>>> to
>> >>>>>>>> OSGi semantic versioning whitepaper. I would like to contribute to
>> >>>>> Apache
>> >>>>>>>> Aries as subproject under a code name of 'llama' ( or a better
>> >>>> name.
>> >>>>> I am
>> >>>>>>>> open to suggestions).
>> >>>>>>>>
>> >>>>>>>> Any thoughts or suggestions?
>> >>>>>>>> --
>> >>>>>>>> Thanks
>> >>>>>>>> Emily
>> >>>>>>>> =================
>> >>>>>>>> Emily Jiang
>> >>>>>>>> [email protected]
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> --
>> >>>>>> Thanks
>> >>>>>> Emily
>> >>>>>> =================
>> >>>>>> Emily Jiang
>> >>>>>> [email protected]
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Thanks
>> >>>> Emily
>> >>>> =================
>> >>>> Emily Jiang
>> >>>> [email protected]
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Alasdair Nottingham
>> >>> [email protected]
>> >>>
>> >
>> >
>>
>
>
>
> --
> Thanks
> Emily
> =================
> Emily Jiang
> [email protected]
>

Reply via email to