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

Re: Bump minimal APR version

From: Hyrum K. Wright <hyrum_wright_at_mail.utexas.edu>
Date: Thu, 11 Mar 2010 10:18:50 -0600

On Mar 11, 2010, at 9:31 AM, Mark Phippard wrote:

> On Thu, Mar 11, 2010 at 10:25 AM, Hyrum K. Wright
> <hyrum_wright_at_mail.utexas.edu> wrote:
>
>> My general thoughts on stuff like this is that folks want a newer version of Subversion, they may > need to upgrade their dependencies. If they are unable or unwilling to do so, then they will just
>> have to stick with the older version of Subversion. If these means that somebody on a RHEL 4.0
>> box who is stuck using httpd 2.0.x can't run Subversion 1.7 without more work, tough. I suspect
>> these folks are a relatively small number of our usership.
>
> I don't get this. We are willing to do things like require Python 2.4
> (which we did in 1.6) and consider requiring APR 1.3. These sorts of
> things impact a significant number of our users and really bring us as
> developers only modest benefits in terms of making our lives easier.

I dunno. The *vast* majority of people get a prepackaged client. As Peter mentioned elsewhere, Debian has been shipping apr 1.2.x with Subversion for some time, and I suspect that a large number of other clients have already moved to apr 1.x. The *only* people an apr version bump affects are developers and people who build Subversion from source, who are vastly in the minority. (I'd be interested to know who in the dev community still uses apr 0.9.x, for instance.)

> Yet, we force ourselves to jump through hoops keeping our libsvn_wc
> API compatible, probably tripling the amount of time it takes to
> rewrite it. When the impact on our users if we just said screw it and
> broke the compatibility would probably be minimal. After all, the API
> sucks how many people wrote custom tools to this level of the API as
> opposed to libsvn_client? And most of those users would probably live
> with the notion that at least their own code would get easier when
> they had to update it for a new library.
>
> Anyway, I know we are not going to change this approach, I just think
> we are our own worst enemy some times.

I *think* what you're saying is that our compatibility guidelines are a bit screwy. If that's your assertion, I tend to agree. :)

When we talk about backward compat, there are actually several dimensions we've lumped into one:
* API compatibility
* ABI compatibility
* on-the-wire protocol compatibility
* persistent storage formats (wc metadata and repos formats)
* command line output (for scripting purposes, etc.)

For a long time, we've tried very hard to keep *all* of these backward compatible, but experience has shown that most users only care about a subset of these dimensions (though that subset may differ between groups of users). As Subversion continues to evolve, we need to figure out which areas are important, and which we can drop if/when we go to 2.0.

For instance, I believe that we should maintain wire protocol compat ad infinitum, even through 2.0, simply because it allows people to continue deploy a heterogeneous client/server environment. We've already practically broken our wc metadata format, and we've occasionally extended the command line output when it's made sense. (I often wonder how people who scripted against 'svn up' dealt with the new conflict summary.)

Staying backward ABI compatible *forever* just isn't scalable. At some point, the costs outweigh the benefits , and I'm suggesting that maybe we should start thinking about what the costs are, and whether it makes sense to tell the 0.0001% of people who'd need to recompile to do so. (This is somewhat analogous to the decision to not upgrade pending logs in wc-ng.)

As Jeremy alluded to elsethread, we've continued to support platforms which aren't even supported by their respective vendors anymore. I reiterate my statement that if users want a new enough Subversion, they may need to upgrade other aspects of their systems as well. If done gracefully, the updating of compatibility can be done effectively.

(FWIW, I think doing a green-field implementation of wc-ng probably would have taken just as long. The incremental approach we've taken has yield a plethora of benefits, not the least of which has been the ability to continue to leverage the existing test suite. I personally see wc-ng as a stepping stone to 2.0, but that's a discussion for another day.)

I'll now pause, to let Greg flame me. :)

-Hyrum
Received on 2010-03-11 17:20:20 CET

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