[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Compatibility-promise-less API's Re: Let's branch on Friday.

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Thu, 11 Apr 2013 04:50:24 +0300

Daniel Shahaf wrote on Thu, Apr 11, 2013 at 02:28:30 +0300:
> Ivan Zhakov wrote on Wed, Apr 10, 2013 at 23:33:01 +0400:
> > On Wed, Apr 10, 2013 at 10:02 PM, Daniel Shahaf <danielsh_at_elego.de> wrote:
> > > Ivan Zhakov wrote on Wed, Apr 10, 2013 at 21:48:39 +0400:
> > >> On Wed, Apr 10, 2013 at 9:44 PM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
> > >> > On 04/10/2013 12:33 PM, Daniel Shahaf wrote:
> > >> >> Right now, trunk has APIs backing an 'svnadmin info' (or 'svnlook info')
> > >> >> command but not a UI for them. (Some of them have unit tests.) I think we
> > >> >> don't want to release with just the half-backed APIs, so we'll have to either
> > >> >> revert them or add a UI for them. As far as I'm concerned reverting is fine,
> > >> >> and I can continue the work on trunk and propose for backport before, say,
> > >> >> beta1.
> > >> >
> > >> > Either revert or privatize them -- whatever's easiest. Now's really not the
> > >> > best time to be trying to introduce new UI, methinks.
> > >> >
> > >> +1
> > >
> > > Made them conditional on -DSVN_FS_INFO.
> > I think it's better to make API private instead of ifdef:
> > 1. svn_repos.h/svn_fs.h readers might be confused with this ifdef
...
> > 2. Private API still allow to use this functionality by svn 1.8 API
> > users with disclaimer that this may change in svn 1.9.
>
> That's unprecedented, we've never released an API "without compatibility
> promises". We could do that but that's a separate discussion IMO.

That might be a good idea. How about we introduce a class of public
APIs, disabled by default (i.e., opt-in towards library consumers),
which doesn't have any cross-minor-line (1.x <-> 1.y) compatibility
promises? Or even, "doesn't have any compatibility promises", full
stop: may change arbitrarily between 1.8.x and 1.8.y.

The idea is to make new APIs more widely available for consumption and
testing; currently, the only exposure new APIs get is by (a) third party
consumers who use trunk code, (b) the alpha/beta/rc cycle.

And I nominate the svn_fs_info_*/svn_repos_info_* set of APIs to be
released in 1.8.x as part of this new "No compat" mode. They can be
(modified as needed, and then) upgraded to the normal compatibility
rules in 1.9.x.

As to implementation, I see a few options. We could hide those APIs
with a preprocessor flag, or name them differently (e.g.,
svn_${library}_X_*), or make them an unconditional runtime error unless
getenv("USE_SVN_X_svn_fs_info_format") != NULL, etc.
Received on 2013-04-11 03:51:03 CEST

This is an archived mail posted to the Subversion Dev mailing list.