On Tue, Jan 20, 2015 at 04:06:07PM +0100, Thomas Monjalon wrote:
> 2015-01-20 09:37, Neil Horman:
> > On Tue, Jan 20, 2015 at 03:00:01PM +0100, Thomas Monjalon wrote:
> > > 2015-01-16 10:33, Neil Horman:
> > > > --- /dev/null
> > > > +++ b/doc/abi.txt
> > > > @@ -0,0 +1,36 @@
> > > > +ABI policy:
> > > > +       ABI versions are set at the time of major release labeling, and 
> > > > ABI may
> > > > +change multiple times between the last labeling and the HEAD label of 
> > > > the git
> > > > +tree without warning
> > > > +
> > > > +       ABI versions, once released are available until such time as 
> > > > their
> > > > +deprecation has been noted here for at least one major release cycle, 
> > > > after it
> > > > +has been tagged.  E.g. the ABI for DPDK 1.8 is shipped, and then the 
> > > > decision to
> > > > +remove it is made during the development of DPDK 1.9.  The decision 
> > > > will be
> > > > +recorded here, shipped with the DPDK 1.9 release, and actually removed 
> > > > when DPDK
> > > > +1.10 ships.
> > > > +
> > > > +       ABI versions may be deprecated in whole, or in part as needed 
> > > > by a given
> > > > +update.
> > > > +
> > > > +       Some ABI changes may be too significant to reasonably maintain 
> > > > multiple
> > > > +versions of.  In those events ABI's may be updated without backward
> > > > +compatibility provided.  The requirements for doing so are:
> > > > +       1) At least 3 acknoweldgements of the need on the dpdk.org
> > > > +       2) A full deprecation cycle must be made to offer downstream 
> > > > consumers
> > > > +sufficient warning of the change.  E.g. if dpdk 2.0 is under 
> > > > development when
> > > > +the change is proposed, a deprecation notice must be added to this 
> > > > file, and
> > > > +released with dpdk 2.0.  Then the change may be incorporated for dpdk 
> > > > 2.1
> > > > +       3) The LIBABIVER variable in the makefilei(s) where the ABI 
> > > > changes are
> > > > +incorporated must be incremented in parallel with the ABI changes 
> > > > themselves
> > > > +
> > > > +       Note that the above process for ABI deprecation should not be 
> > > > undertaken
> > > > +lightly.  ABI stability is extreemely important for downstream 
> > > > consumers of the
> > > > +DPDK, especially when distributed in shared object form.  Every effort 
> > > > should be
> > > > +made to preserve ABI whenever possible.  For instance, reorganizing 
> > > > public
> > > > +structure field for astetic or readability purposes should be avoided 
> > > > as it will
> > > 
> > > astetic? typo?
> > > 
> > > > +cause ABI breakage.  Only significant (e.g. performance) reasons 
> > > > should be seen
> > > > +as cause to alter ABI.
> > > > +  
> > > > +Deprecation Notices:
> > > 
> > > Neil, are you sure it's a good idea to put deprecations notices here 
> > > instead
> > > of release notes?
> > > 
> > Funny, I just made mention of that in my last note.  I do think that the 
> > release
> > notes is the right place to "officially" announce deprecation warnings, but 
> > I
> > think we need a way for developers to communicate that efficiently (given 
> > that
> > the release notes aren't stored in the git tree).
> 
> Yes, they are:
>       http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes
> So I suggest to remove Deprecation Notices from abi.txt and create an entry
> in release notes.
> 
> > I think this is the place for
> > developers to canonically list deprecations, and make reading this file 
> > part of
> > the release notes generation process.  That way, updates can be made as 
> > part of
> > the commit process easily.
> 
> Developpers can update the release notes themselves.
> 
ok, I was unaware. If thats the case, then yes, putting these deprecations
directly in the release notes makes the most sense. I'll resubmit with that
changed.


> > > I'm also thinking that we need to add more things in this doc:
> > >   - case of macros/constant deprecation (API only)
> > >   - case of structure update: must be renamed to provide ABI 
> > > compatibility?
> > > 
> > I'm definately in favor of adding such notices here, but I hadn't planned 
> > for
> > any strict formatting of any given notice.  That is to say, I considered 
> > you're
> > two issues above to be able to be included here.  I have no issue with 
> > listing a
> > deprecation note that indicates macros are being removed or that sections 
> > of api
> > are being versioned to accomodate structure changes. of any sort
> 
> No, I was suggesting to explain in this doc that macro removal must be
> announced with a deprecation notice,
> and that in case structure must be reworked, the name must change if we
> want to preserve ABI compatibility with old structure.
> 
> > > Do you think we can have a tool to test the ABI compatibility by building
> > > examples/apps of previous version and checking them with built DSO of
> > > current version?
> > > 
> > I do, though I'm not sure its within the scope of this update.  The easiest 
> > way
> > to do it currently is to checkout the last released version of the dpdk, 
> > build
> > it as a DSO build, copy out one of the test/example apps, checkout the HEAD 
> > of
> > the tree, rebuild, and run the saved off test app from the first build 
> > using the
> > shared objects of the second build.  That does some rudimentary validation,
> > but it only touches on the API aspects that the application you're using 
> > makes
> > use of.  What would be better would be if we had a test application that 
> > made a
> > call to every exported API call that we have, so that we could be confident 
> > that
> > we were exhaustively testing the ABI surface.  I think thats a large piece 
> > of
> > work, but it would be beneficial to have.
> 
> Yes, it should be another patchset.
> Do you plan to work on it? It would be very convenient for developpers and
> maintainers to test ABI compatibility.
> 
Gladly, if we can get this in.  I think its an important tool.

> Thanks
> -- 
> Thomas
> 

Reply via email to