No.

crc is actually a misnomer here.  If you say crc, one
assumes binascii.crc32.  That is not what crc is.  What is exposed as .crc
is actually a custom function in vppapigen called foldup_blocks, which is
dependent on the version of vppapigen that generated it.[0]. (Ask me how I
know...) In fact, in the source is a fixup_crc_dict [1] with pre/post
6/25/20 crc's hardcoded.

backward_compatable is a misnomer.  If you marked existing fields
as backward_compatable, which is true by common definition of the option's
name, that value is removed from the crc and everything trusting the crc
breaks.

Having the same crc match against different sources is a real problem.  It
is a violation of a consumer's trust.

History has already shown that you have made the process overly difficult.
Let's go back and revisit [2]. We have a version (a semver) attached to
the .api.  The refusal in [2]  was to continue to follow the rules of
semantic versioning in the name of expediency. (For those who are having
trouble following along, if a bug is fixed, the version is to be
incremented[3]. In this case, it was decided to not increment the semver,
to not trigger the overly painful process)  A single semver with differing
results violates our contract with the consumer.

No matter how hard you make the process, in the end, we can not violate the
trust given to us by consumers of VPP by providing them "sometimes" false
information.  We owe it to the community to do better!

[0]
https://github.com/FDio/vpp/blob/master/src/tools/vppapigen/vppapigen.py#L1058
[1]
https://github.com/FDio/vpp/blob/master/src/tools/vppapigen/vppapigen.py#L1072
[2] https://lists.fd.io/g/vpp-dev/message/16406
[3] https://semver.org/


On Wed, Nov 25, 2020 at 11:51 AM Andrew 👽 Yourtchenko <ayour...@gmail.com>
wrote:

> A naive implementation of that will break all of the CRC for the affected
> messages, which effectively means abandoning the message stability process.
>
> --a
>
> On 25 Nov 2020, at 17:27, Paul Vinciguerra <pvi...@vinciconsulting.com>
> wrote:
>
> 
> I would like to socialize the idea of removing the backwards_compatible
> option from the .api files before the upcoming and any future releases.
>
> The commit message states:
>
> This allows adding backwards compatible (as guaranteed by the developer)
> enums.
> The enums marked backwards compatible are not considered in the CRC
> calculation.
>
> Because it is the widespread practice of the VPP comitter community to
> merge commits without Maintainer approval, it is practically not possible
> for the developer to assert his/her "guarantee".  This is a potentially
> risky area.
>
> If we remove these tags from the .api files before the next release, we
> can guarantee a "golden image" of sorts, for lack of a better analogy, of
> crc values.
>
> After the release, backwards_compatible could be used for subsequent
> additions, again being removed before the next release is cut.
>
> Does a repo exist with the code used for verification while "cutting" a
> release?
>
> I don't mind putting up a changeset.
>
> Paul
>
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18141): https://lists.fd.io/g/vpp-dev/message/18141
Mute This Topic: https://lists.fd.io/mt/78503177/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to