------------------------------------------------------------------------
*From:* Neil C Smith <[email protected]>
*Sent:* Saturday, August 03, 2019 12:10PM
*To:* Dev <[email protected]>
*Subject:* Re: Aligning implementation and specification versions?


Note "git hash"!  That would be a different implementation version for
every source commit in the repository, even if no code changes in the
module.  It would mean we have a consistent implementation version
across every build of a particular set of sources, rather than
changing for every build of that source, nothing more.

My question about using spec version loosens this slightly but still
gives us unique implementation versions per release/update where
required, while having the value in the sources themselves rather than
dependent on an "external" source (git hash).

I know what you mean, but see. below..


As I have already written, the easiest solution is to manually add the
implementation version to each ANB module and manually change them only
when changing the public method signatures.
This is not what implementation version is for though - it's not about
public API.

Best wishes,

Neil

I understand it this way:


Public API:
Because it can be noted in manifest as *modulule > xx.xx.xx*

Author of the module guarantees that:

 * None of the public API classes will be removed in the future
 * None of the public/protected methods will be removed in the future
 * The signature of existing methods will not change in the future
 * The meaning of the input parameters of the methods will not change
   in the future
 * The meaning of the value of the values returned by the method does
   not change in the future

Private API - specification version:

In contrast, it is *not guaranteed* that:

 * None of the classes will be removed in the future
 * None of the public/protected methods will be removed in the future
 * The signature of existing methods will not change in the future
 * The meaning of the input parameters of the methods will not change
   in the future
 * The meaning of the value of the values returned by the method does
   not change in the future

If I want to use it it's ok, but I have to note it in the manifest *modulule = xx.xx.xx*

*It follows that if none of the above points is changed, there is no reason to change the implementation version. * There are many modules where none of this changes and can be on the same implementation  of x ANB releases.


Therefore, it is stupid to use a git hash. But one could write a hash implementation that will check those points. But only human can handle the meaning of parameters and return values..

Arsi

Reply via email to