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

> On Thu, Mar 11, 2010 at 10:25 AM, Hyrum K. Wright
> <hyrum_wri...@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

Reply via email to