Hi Eric,
Short answer: I think your understanding matches what I was proposing.
Longer answer below.

So, for example, we release library v1.0.0 in a few months and then library
> v2.0.0 a few months after that.  In v2.0.0, C++, Python, and Java didn't
> make any breaking API changes from 1.0.0. But C# made 3 API breaking
> changes. This would be acceptable?

Yes.  I think all language bindings are going under rapid enough iteration
that we are making at least a few small breaking API changes on each
release even though we try to avoid it.  I think it will be worth having
further discussions on the release process once at least a few languages
get to a more stable point.

Thanks,
Micah

On Tue, Jul 9, 2019 at 2:26 PM Eric Erhardt <eric.erha...@microsoft.com>
wrote:

> Just to be sure I fully understand the proposal:
>
> For the Library Version, we are going to increment the MAJOR version on
> every normal release, and increment the MINOR version if we need to release
> a patch/bug fix type of release.
>
> Since SemVer allows for API breaking changes on MAJOR versions, this
> basically means, each library (C++, Python, C#, Java, etc) _can_ introduce
> API breaking changes on every normal release (like we have been with the
> 0.x.0 releases).
>
> So, for example, we release library v1.0.0 in a few months and then
> library v2.0.0 a few months after that.  In v2.0.0, C++, Python, and Java
> didn't make any breaking API changes from 1.0.0. But C# made 3 API breaking
> changes. This would be acceptable?
>
> If my understanding above is correct, then I think this is a good plan.
> Initially I was concerned that the C# library wouldn't be free to make API
> breaking changes with making the version `1.0.0`. The C# library is still
> pretty inadequate, and I have a feeling there are a few things that will
> need to change about it in the future. But with the above plan, this
> concern won't be a problem.
>
> Eric
>
> -----Original Message-----
> From: Micah Kornfield <emkornfi...@gmail.com>
> Sent: Monday, July 1, 2019 10:02 PM
> To: Wes McKinney <wesmck...@gmail.com>
> Cc: dev@arrow.apache.org
> Subject: Re: [Discuss] Compatibility Guarantees and Versioning Post "1.0.0"
>
> Hi Wes,
> Thanks for your response.  In regards to the protocol negotiation your
> description of feature reporting (snipped below) is along the lines of what
> I was thinking.  It might not be necessary for 1.0.0, but at some point
> might become useful.
>
>
> >  Note that we don't really have a mechanism for clients and servers to
> > report to each other what features they support, so this could help
> > with that when for applications where it might matter.
>
>
> Thanks,
> Micah
>
>
> On Mon, Jul 1, 2019 at 12:54 PM Wes McKinney <wesmck...@gmail.com> wrote:
>
> > hi Micah,
> >
> > Sorry for the delay in feedback. I looked at the document and it seems
> > like a reasonable perspective about forward- and
> > backward-compatibility.
> >
> > It seems like the main thing you are proposing is to apply Semantic
> > Versioning to Format and Library versions separately. That's an
> > interesting idea, my thought had been to have a version number that is
> > FORMAT_VERSION.LIBRARY_VERSION.PATCH_VERSION. But your proposal is
> > more flexible in some ways, so let me clarify for others reading
> >
> > In what you are proposing, the next release would be:
> >
> > Format version: 1.0.0
> > Library version: 1.0.0
> >
> > Suppose that 20 major versions down the road we stand at
> >
> > Format version: 1.5.0
> > Library version: 20.0.0
> >
> > The minor version of the Format would indicate that there are
> > additions, like new elements in the Type union, but otherwise backward
> > and forward compatible. So the Minor version means "new things, but
> > old clients will not be disrupted if those new things are not used".
> > We've already been doing this since the V4 Format iteration but we
> > have not had a way to signal that there may be new features. As a
> > corollary to this, I wonder if we should create a dual version in the
> > metadata
> >
> > PROTOCOL VERSION: (what is currently MetadataVersion, V2) FEATURE
> > VERSION: not tracked at all
> >
> > So Minor version bumps in the format would trigger a bump in the
> > FeatureVersion. Note that we don't really have a mechanism for clients
> > and servers to report to each other what features they support, so
> > this could help with that when for applications where it might matter.
> >
> > Should backward/forward compatibility be disrupted in the future, then
> > a change to the major version would be required. So in year 2025, say,
> > we might decide that we want to do:
> >
> > Format version: 2.0.0
> > Library version: 21.0.0
> >
> > The Format version would live in the project's Documentation, so the
> > Apache releases are only the library version.
> >
> > Regarding your open questions:
> >
> > 1. Should we clean up "warts" on the specification, like redundant
> > information
> >
> > I don't think it's necessary. So if Metadata V5 is Format Version
> > 1.0.0 (currently we are V4, but we're discussing some possible
> > non-forward compatible changes...) I think that's OK. None of these
> > things are "hurting" anything
> >
> > 2. Do we need additional mechanisms for marking some features as
> > experimental?
> >
> > Not sure, but I think this can be mostly addressed through
> > documentation. Flight will still be experimental in 1.0.0, for
> > example.
> >
> > 3. Do we need protocol negotiation mechanisms in Flight
> >
> > Could you explain what you mean? Are you thinking if there is some
> > major revamp of the protocol and you need to switch between a "V1
> > Flight Protocol" and a "V2 Flight Protocol"?
> >
> > - Wes
> >
> > On Thu, Jun 13, 2019 at 2:17 AM Micah Kornfield
> > <emkornfi...@gmail.com>
> > wrote:
> > >
> > > Hi Everyone,
> > > I think there might be some ideas that we still need to reach
> > > consensus
> > on
> > > for how the format and libraries evolve in a post-1.0.0 release world.
> > >  Specifically, I think we need to agree on definitions for
> > > backwards/forwards compatibility and its implications for versioning
> > > the format.
> > >
> > > To this end I put some thoughts down in a Google Doc [1] for the
> > > purposes of discussion.  Comments welcome.  I will start threads for
> > > any comments
> > in
> > > the document that seem to warrant further discussion, and once we
> > > reach consensus I can create a patch to document what we decide on
> > > as part of
> > the
> > > specification.
> > >
> > > Thanks,
> > > Micah
> > >
> > > [1]
> > >
> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs
> > .google.com
> %2Fdocument%2Fd%2F1uBitWu57rDu85tNHn0NwstAbrlYqor9dPFg_7QaE-nc%2Fedit%23&amp;data=02%7C01%7CEric.Erhardt%
> 40microsoft.com
> %7C6fc59049ffb049c9ddb108d6fe99bebf%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636976334243577292&amp;sdata=YNQ%2FgL5rvmvRqvvW%2Bxjmb%2F4KeEe2JHe1ruws2VP%2BvK4%3D&amp;reserved=0
> >
>

Reply via email to