> It'd be like a Python 2 -> 3 transition

I think the simile is spot on.
But that shouldn't be a problem, it's more like evolution.

> your user base plummet

Looking at [1] and for lack of a better idea for reference [2], the
user base issues are not obvious to me.

Having said that, I'm okay with dropping the idea, I just want to make
sure it's also considered.


[1]: https://www.jetbrains.com/lp/python-developers-survey-2020/
[2]: https://www.tiobe.com/tiobe-index//

On Tue, Mar 30, 2021 at 7:20 PM Joan Touzet <woh...@apache.org> wrote:
>
>
>
> On 30/03/2021 12:57, Bessenyei Balázs Donát wrote:
> > If we are bumping major anyways, can we just go "clean slate" and
> > promise replication compatibility only?
>
> Basically: watch your user base plummet. It'd be like a Python 2 -> 3
> transition, or a Perl 5 -> 6 one. It would take years of concerted
> effort to recover.
>
> This is why I'd thought pushing that off to 5.0, with 4.0 being the
> transitional release, would be best. But I have no strong opinion.
>
> > All that while we'd publish a migration guide that explains the
> > differences and helps users adjust their implementations, but this way
> > we'd get rid of some potential complexity.
> >
> > If we do want to go with API versioning, can someone help me with a
> > worked example that shows how and when an endpoint gets a new `v_`,
> > how that affects other endpoints, which versions of CouchDB need
> > updating for such a change and when do we get to drop previous
> > versions of the API?
>
> I'd like to see this too.
>
> > Thank you,
> > Donat
> >
> > On Mon, Mar 29, 2021 at 6:28 PM Joan Touzet <woh...@apache.org> wrote:
> >>
> >> On 22/02/2021 20:48, Adam Kocoloski wrote:
> >>> Hi all,
> >>>
> >>> Several times in recent months we’ve had discussions on this list about 
> >>> behavior changes in CouchDB 4.0 that boil down to tradeoffs between
> >>>
> >>> a) maintaining compatibility with current CouchDB APIs, and
> >>> b) capitalizing on the transactional semantics of FoundationDB
> >>>
> >>> An example would be the support for large result sets in a view response: 
> >>> do we stitch together multiple transactions to support very large 
> >>> responses, or provide new pagination APIs and guarantee that each 
> >>> response is generated from a single isolated snapshot?
> >>>
> >>> I’d like to suggest that we “have our cake and eat it, too” by 
> >>> introducing versioned APIs as previously suggested by Ilya[1]. We’d have 
> >>> a V3 API that strives to maximize compatibility with CouchDB 3.x, and a 
> >>> V4 API that still looks and feels like CouchDB, but introduces breaking 
> >>> changes where necessary to provide well-defined transactional semantics. 
> >>> I think this explicit approach to API evolution could make life easier 
> >>> for client library maintainers, and also free us up to improve the API 
> >>> without needing to be quite as careful about in-place backwards 
> >>> compatibility.
> >>>
> >>> [1]: 
> >>> https://lists.apache.org/thread.html/rcc742c0fdca0363bb338b54526045720868597ea35ee6842aef174e0%40%3Cdev.couchdb.apache.org%3E
> >>>
> >>> What do you think? Cheers, Adam
> >>
> >> In general, +1, as long as the concerns raised by Bob are addressed.
> >> Namely: if I point a CouchDB 1.x-3.x client at a future CouchDB 4.0, I
> >> shouldn't be *too* surprised, and as much as possible should "just work."
> >>
> >> I've long believed that 4.0 would be a transitional version, and 5.0
> >> would break things completely... so if 5.0 (or whatever) stops accepting
> >> "v3" syntax, or "default" changes to "v4", fine by me.
> >>
> >> Also it'd be great if this was advertised in the feature strings shown
> >> in `GET /` in some intelligent way. Maybe an array of API versions
> >> supported?
> >>
> >> -Joan

Reply via email to