LWN.net Logo

Advertisement

E-Commerce & credit card processing - the Open Source way!

Advertise here

Subversion considers its future

Ben Collins-Sussman has posted an interesting note on the future of Subversion and centralized version control. "I've chatted with other developers, and we've all come to some similar private conclusions about Subversion's future. First, we think that this will probably be the 'final' centralized system that gets written in the open source world - it represents the end-of-the-line for this model of code collaboration. It will continue to be used for many years, but specifically it will gain huge mindshare in the corporate world, while (eventually) losing mindshare to distributed systems in the open-source arena."
(Log in to post comments)

Subversion considers its future

Posted Apr 30, 2008 16:58 UTC (Wed) by cpeterso (guest, #305) [Link]

Considering CVS's longevity, I expect SVN to have a healthy (if boring?) life ahead for large
corporate projects. Many big companies are stuck with expensive Perforce licenses but like the
centralized server architecture (for admin and backup). SVN is a good alternative for them.
The SVN team should focus on making it an even better alternative. SVN and git solve different
problems and I hope the SVN team is not derailed by chasing the shiny new world of DVCS.

Subversion considers its future

Posted Apr 30, 2008 18:24 UTC (Wed) by dbnichol (subscriber, #39622) [Link]

Yeah, I'm sure subversion will live on in corporations for a long time. Today I overheard two
of my fellow employees (we're not programmers) arguing whether the content for their project
should be kept in CVS or _RCS_! I swallowed down the vomit and decided not to waste my time
cluing them in on the wonders of the 21st century.

Subversion considers its future

Posted May 1, 2008 2:24 UTC (Thu) by boudewijn (subscriber, #14185) [Link]

I've just managed to convert my workplace from Team Coherence (an 
obscure, locking-not-merging, revision control system to subversion :-). 
It took me six months to convince my co-workers that it would be a good 
idea. Git, bzr or mercurial would have taken much longer, especially 
since I don't actually understand myself how the interaction between 
developers on a team working towards a common release really works. At 
least, not without someone blessed to produce the final source tree and 
thus having to go through all patches.

Subversion considers its future

Posted May 1, 2008 3:30 UTC (Thu) by joib (guest, #8541) [Link]

You just designate one repo as the canonical one, and tell everyone to push their changes
there if they want their code to be part of the release. The canonical repo is thus the
equivalent of THE repo in a centralized VCS like subversion. 

Subversion considers its future

Posted May 1, 2008 6:59 UTC (Thu) by nix (subscriber, #2304) [Link]

At least they're debating actual VCSes. One place I worked a few years ago 
had all its source code `version controlled' by, er, copying the tree and 
tarring it up every night. (No gzip: just tar. They didn't have enough 
clue to know about gzip.)

They had dozens of disks full of years of nightly uncompressed tarballs...

Subversion considers its future

Posted Apr 30, 2008 20:49 UTC (Wed) by ras (subscriber, #33059) [Link]

Its amazing how programmers can't see the forest for the trees.  The two points listed in the
article about why corporations adopt svn utterly miss the point, as the comments later on
explain.

As an open source programmer, DVCS looks to me like a gift from heaven.  When playing with
Debian packages for example, I have to keep track of a whole pile of patches, some from me,
some from others, until they get pushed into the mainline.  Its a nightmare.

Whether the current darling of the DVCS world, git, is a solution to that nightmare is another
matter.  Watching Martin Kraft at LCA 2008 try to use git to solve this problem was
frightening.  After several attempts to demonstrate what he was talking about which all ended
up in a mess, he fired up gitk (which displays a graphical representation of the repository).
Then, after each git command, he checked the graphical representation so he could verify the
command put him where he wanted to be, and if not he reversed it and went down another path.
In the end with gitk's help he got there.  Now Martin is/was a git beginner, and so perhaps
criticising git on this basis might seem a little unfair, and indeed I am sure if he did the
same thing next year it would just roll off his fingers.  But that is not the point.

The point is that Martin is an experienced VCS user, but even so was finding the learning
curve for a DVCS fairly steep.  (Quick check - how many svn sub-commands are there: 30.  How
many git sub-commands are there: 124.)  But Martin like all open source developers has a
considerable incentive to do so - it will make his life much easier.  The same isn't true for
a corporate developer.

A corporate developer gets almost no benefit from a VCS.  Indeed the reverse is usually true -
it just gets in the way.  It means he has to take additional steps to copy source around, it
means he has to add meaningful comments to his commits, and it means his employer can track
what he is doing.  On the other hand its a great boon to the employer - it means they have a
central, secure repository for the code.  It means they can isolate changes of one developer,
and isolate feature branches.  It means they have an audit trail that can tie into their
change management - and on it goes.  The bottom line is that a corporate VCS is imposed by
management.

Forcing the corporate programmer to use and learn a VCS is difficult.  I have done the forcing
a few times - its always accompanied by grumbles.  Forcing them to learn a DVCS would be
dammed near impossible as now they can claim with some justification that its hard to use and
hard to get right.  There would invariably be stuffed up repositories and lost work in the
beginning.  If you have non-programmers (eg engineers) using the DVCS it is impossible - they
simply don't care and don't have any interest in learning.

But if a DVCS was a huge gain to the employer perhaps that wouldn't matter.  It isn't - in
fact the reverse is true.  To share code in a VCS you have to push it into the central
repository.  With a DVCS programmers can pass patches among themselves and ignore the central
VCS entirely.  Worse, they can chose what parts of their history they want to push to the
central repository, and what to omit.  Thus the DVCS actually negates one of the primary
reasons the employer having a VCS in the first place.

So here is a prediction: in the situations where an company is getting third parties to
develop code the company owns, DVCS as we know them won't get much of a foothold.  The
favoured VCS solution's will only allow commits to be pushed to the central repository.  Many
open source projects are also run in the manner, and they also will avoid DVCS's.

Subversion considers its future

Posted May 1, 2008 2:24 UTC (Thu) by Jel (guest, #22988) [Link]

That is not a DVCS problem; it's a git problem.  Bzr is much more 
straightforward than using a single, centralised repository and having 
your own branch/repository be somehow lesser.  Everything is equal, 
commands are sensible and uniform, and it's as easy to test on two local 
dirs as to sync with a global repository.  What could be simpler?

Subversion considers its future

Posted May 1, 2008 2:56 UTC (Thu) by jmspeex (subscriber, #51639) [Link]

I've actually switched from svn to git (mainly for Speex). There's a bit of learning to do,
but in the end, it's makes my life easier. Still, one thing I don't like in git is the tons of
sub-commands you mention. The *real* problem with that (which you failed to mention) is that
among these commands, only a few are really useful (about as many as for svn). The rest are
what Linux calls "plumbing" commands that are called by other commands, but that users don't
really use. Because of that, it's much tougher to figure out what command you need. I wish
these commands were just hidden so we don't get confused into thinking they're useful.

Subversion considers its future

Posted May 1, 2008 3:22 UTC (Thu) by joib (guest, #8541) [Link]

AFAIK, as of git 1.6 all the 'git-*' binaries will be hidden away from $PATH, 'git help' or
'man git' already show only the 'porcelain' commands or at least clearly separates the
'plumbing'.

I've recently started using git-svn for interacting with an open source project whose upstream
is in subversion, and while the learning curve is pretty steep, once you get the hang of it
it's pretty powerful. You know, like the emperor in star wars, with lightning coming out of
your fingertips.

Subversion considers its future

Posted May 1, 2008 9:17 UTC (Thu) by jmspeex (subscriber, #51639) [Link]

Cool. Wasn't aware that 1.6 was going to hide the plumbing. I've actually been using git-svn
for Speex for a while now. Eventually though, I'd like to get rid of svn completely so I don't
lose the commit info when I do a dcommit.

Subversion considers its future

Posted May 1, 2008 8:33 UTC (Thu) by nix (subscriber, #2304) [Link]

I find it odd that you say that a VCS is of no benefit to a corporate 
coder. Do these paragons never make mistakes? Do they never have to 
support older code live at customer sites?

Subversion considers its future

Posted May 1, 2008 15:27 UTC (Thu) by dmag (subscriber, #17775) [Link]

> I find it odd that you say that a VCS is of no benefit to a corporate 
coder.

I agree with the intent of the original poster, except maybe the wording was a bit strong.
How's this: "Most corporate programmers don't get anything from VCS that they couldn't get from
a tarball snapshot, while their employers could find the VCS data more useful."

SVN makes branching and merging difficult, so the typical corporate programmer won't bother
with it.

> Do these paragons never make mistakes?

Yes, but most of the time people just "fix the bug and move forward" rather than trying to go
back to the old version. (I work a lot in web databases, and sometimes V2 requires altering
fields in the DB. Going back to V1 usually means loosing the extra data.)

> Do they never have to  support older code live at customer sites?

No, most corporate development is for internal deployments -- there's usually just one
instance of their code running.  Remember, only about 5% of programmers actually write code to
sell.

That's incorrect

Posted May 1, 2008 16:27 UTC (Thu) by JoeBuck (subscriber, #2330) [Link]

I play in both the corporate development world and the free software world, and anyone who thinks that corporate software development could be possible without a VCS is sorely mistaken. On the contrary, a VCS is vital.

What is a debatable issue is whether a distributed revision control system is useful for the typical corporate software development process. In the typical corporate development flow, the centralized database is a key feature, used to enforce policies, and often tightly coupled to bug tracking, performance reviews, the works. Distributed repositories could help individual developers experiment with changes on a local basis, but management isn't going to like it because they can hide information from management (which might be a good thing if you sit on the other side of the divide).

That's incorrect

Posted May 4, 2008 21:23 UTC (Sun) by rganesan (subscriber, #1182) [Link]

> I play in both the corporate development world and the free software 
> world, and anyone who thinks that corporate software development could be 
> possible without a VCS is sorely mistaken. On the contrary, a VCS is 
> vital.

I am in total agreement. I also play both in corporate development as well as free software
world. Anyone who claims corporate development can work without VCS has never worked in one.
With projects having upwards of 400 developers actively committing every day, do you guys
seriously believe corporates can manage with a tar ball?

I don't know if a distributed VCS would be very useful in a corporate setup. One of the
biggest advantages of a distributed VCS (as I understand it) is to allow experimentation with
a private branch.  In a centralized VCS, a private branch gets created for this but it still
stays centralized. "Distributed" in corporate development usually means a centralized but
multi-site VCS. 

That's incorrect

Posted May 5, 2008 5:51 UTC (Mon) by nix (subscriber, #2304) [Link]

Sure they can manage with a tarball. Everyone shares one huge build tree 
with all the source code and generated binaries in it: it gets `make 
clean'ed and tarred every night.

(Not only have I worked at places that did this, *not even the tarring job 
was automated*. People can put up with a lot if they have no idea anything 
better is possible.)

Subversion considers its future

Posted May 1, 2008 9:40 UTC (Thu) by mikov (subscriber, #33179) [Link]

(Quick check - how many svn sub-commands are there: 30. How many git sub-commands are there: 124.)

I have seen this assertion many times, but in my opinion it is a very misleading exaggeration. The svn subcommands have a practically 1-to-1 correspondence to git. Git has many commands, but:

  • All of them don't need to be used
  • Git can do a lot more things.
  • As somebody else pointed out, many of them are internal.
  • Many of them do similar tasks.

I was a heavy and enthusiastic SVN user and it took me about a couple of hours (well, perhaps a day) to learn to use Git as a 100% SVN replacement. Everything beyond that was just a bonus.

I 100% agree that the corporate world is "not ready" for Git. Here is an absurd example of my own experience. Our company's product was being certified for VISA CISP compliance (a set of requirements for secure credit card software).

One of the requirements is that all source code changes must be logged with their author, and there must be a way to verify that the source hasn't been tampered with. We use GIT and all these things (and more) are just a natural part of Git. I thought we would sail through this part.

Alas, when the "examiners" found out that we weren't using a "real" VCS, they probably thought we weren't a "serious" company. It took me hours to explain that to prevent tampering of the source it is sufficient just to record the SHA1 of the commit. I don't think they were happy, because they wanted to see encrypted source CDs hidden in a secure safe.

So, yeah, most of the corporate world is not ready for Git and probably never will. Even SVN will actually be a big improvement for them. They are too incompetent, lazy or unmotivated at various levels of the organization. But that is actually a very good thing for small young companies trying to compete :-)

Subversion considers its future

Posted May 9, 2008 7:38 UTC (Fri) by wookey (subscriber, #5501) [Link]

I was a heavy and enthusiastic SVN user and it took me about a couple of hours (well, perhaps a day) to learn to use Git as a 100% SVN replacement. Everything beyond that was just a bonus.

Mikov, you must be much cleverer than me and my fellow (corporate) developers. I've now been to 3 talks on using git, as it is obviously cool, but I still don't 'get' it. SVN I do get, at least enough to use it for our work. I don't think I'm particularly stupid so I suspect this situation is common. My compatriot Nick went to the same James Bottomley talk at Linuxconf 2007 and he came out equally nonplussed.

We find SVN does a great job and will be used for the forseeable future (I spend my time trying to stop people piling _everything_, no matter how innapropriate, in, and re-arranging stuff which has 27 slightly-different versions in different dirs because people have failed to grasp what it is that a VCS does). I'm not sure we are ready for anything cleverer.

We might use a DVCS if we could see any major advantage in doing so, and I know I'd like to understand git because I suspect it makes pushing kernel patches upstream much easier, but like I said, so far I don't get it well enough to understand exactly what it might gain us, nor to actually use it for anything. And changing any infrastructure involves significant pain so there has to be sufficient incentive...

Subversion considers its future

Posted May 11, 2008 16:18 UTC (Sun) by mikov (subscriber, #33179) [Link]

Mikov, you must be much cleverer than me and my fellow (corporate) developers. I've now been to 3 talks on using git, as it is obviously cool, but I still don't 'get' it. SVN I do get, at least enough to use it for our work. I don't think I'm particularly stupid so I suspect this situation is common. My compatriot Nick went to the same James Bottomley talk at Linuxconf 2007 and he came out equally nonplussed.

I don't think I am especially clever (or at least I won't admit it in public :-) Also, don't forget that I too am a corporate developer - I work for a corporation, albeit a small one. I think it helped me a lot that I researched a couple of alternative DVCS before trying Git, so I was already familiar with the subject area. It does take some mental re-adjustment.

It really is simple to use Git as a SVN replacement, with just a dozen commands, without getting too deep. Once you get comfortable with that, you will gradually discover the other possibilities - that's what I did.

Perhaps fortunately we had needs that SVN didn't fill while Git did (branch and patch management, efficient access from multiple locations, hierarchical commit structure, etc - btw, we did look into SVK). Also it helps that we are much more flexible, being a small shop.

I would not advocate to anybody to just blindly replace SVN with Git, if SVN is already working great for them and they don't have an obvious need to fill. SVN is a great tool. It also has advantages when keeping multiple projects in the same repository. In fact I love SVN, it is just I love Git even more :-)

About "getting" Git, even if you don't start using it seriously, my advice is not to waste time with talks, etc. I recommend reading the documentation that comes with it and perhaps Linus'es original low level description for the design motivation.

Subversion considers its future

Posted May 2, 2008 3:08 UTC (Fri) by roblucid (subscriber, #48964) [Link]

   "A corporate developer gets almost no benefit from a VCS.  Indeed the 
reverse is usually true -
it just gets in the way.  It means he has to take additional steps to copy 
source around, it
means he has to add meaningful comments to his commits, and it means his 
employer can track
what he is doing."

It is a huge benefit to be able to track what those idiot colleagues are 
doing.  Many are very poor at team-working and will lose your work, or 
break things without communication.  Good developers want managers to be 
able to see the quality work they're doing (and pay/promote accordingly, 
though promotion of the least technically gifted seems common).

SCCS was developed by corporate developer's for corporate developers, and 
was the UNIX utility RCS improved on.

Subversion considers its future

Posted May 4, 2008 22:56 UTC (Sun) by vonbrand (subscriber, #4458) [Link]

I've been following Linux' development for a long time now, through BitKeeper and then git. I've developed a bit too, first using RCS (sorry, that was the only VCS at hand then; I needed the VCS for recording my own development, no others were involved, and the local nature of RCS fitted that just fine) and then bk and later git. I don't want to look back, and the centralized VCS does get in the way more than it helps the individual developer. A DVCS like git, on the other hand, allows you to horse around in your own private room, have a few tries pending as local branches, and cherry pick changes into a decent, publishable history to share with others. This is the way we do use git for (small, local) projects right now.

The facilities for purely local work are the biggest plus for me ("local" as in "on this notebook that I lug around everywhere, anytime"), and that is where centralized systems fail miserably. And having the same tool for "serious work involving others" and "local play for my own amusement" is a definite plus. I have much of my own files under git right now, and not because I ever intend to share it with others (let alone let them put their grubby fingers in my private stuff ;-)

Offline working

Posted May 1, 2008 4:55 UTC (Thu) by endecotp (guest, #36428) [Link]

The thing that I find most strange about the popularity of distributed version control is that
people like that they can work off-line with them.  Yet networking has become pretty much
ubiquitous, and the remaining non-networked places will certainly shrink even more over the
next few years.    Is there some other factor involved?

Offline working

Posted May 1, 2008 5:20 UTC (Thu) by boudewijn (subscriber, #14185) [Link]

Working offline can be much more productive. Of course, if you're using a 
compiled language and frequently have to wait ten minutes for a compile 
to finish, it doesn't make much difference, but if you find yourself 
quickly checking lwn.net between every ten keystrokes, going offline 
might help recover productivity.

Offline working

Posted May 1, 2008 8:19 UTC (Thu) by engla (guest, #47454) [Link]

The network always has latency far greater than the linux disk cache. A git diff can literally
be computed and displayed in the blink of an eye. This shows even more with being able to
merge, look at the result, re-merge to do it better (if needed) etc. All operations become
'cheaper', and many have noticed, just like Linus himself claimed, that there is a huge
difference between having to wait 10 seconds for an operation or just having it done by the
moment you press enter.

Offline working

Posted May 1, 2008 8:45 UTC (Thu) by scripter (subscriber, #2654) [Link]

Taking a laptop on an airplane is a common occurrence. There usually no net connectivity
there. Programmers in third world countries often don't have net access from home, but they
might have connectivity from work or from an internet cafe. A remote office in the US may have
a very slow link to the main subversion server. Using a distributed tool (like git-svn)
reduces the pain.

Subversion considers its future

Posted May 1, 2008 12:53 UTC (Thu) by nevyn (subscriber, #33129) [Link]

It will continue to be used for many years, but specifically it will gain huge mindshare in the corporate world, while (eventually) losing mindshare to distributed systems in the open-source arena.

eventually, that's a pretty interesting word to use for "two years ago" (or more). Having your source in cvs/svn is pretty much the exception rather than the rule now (and even then you always get DSCM mirrors which become the de-facto public repo.) as it's a significant barrier to (esp. outside) contributors. And I don't see this as a proprietary vs. Open-source discussion, more of a "people who care about good source control" vs. "people who really don't care".

Subversion considers its future

Posted May 1, 2008 13:49 UTC (Thu) by dberlin (subscriber, #24694) [Link]

You must be completely nuts if you believe having your source control in svn is the exception.
Really.
google code has 100k+ OSS projects in svn.
Sourceforge has 100k+ OSS projects in cvs or svn.

The number of git/bzr/hg using projects is less than 10k total.

Subversion considers its future

Posted May 1, 2008 15:11 UTC (Thu) by jordanb (subscriber, #45668) [Link]


> google code has 100k+ OSS projects in svn.
> Sourceforge has 100k+ OSS projects in cvs or svn.

Well 99% of the projects in sourceforge are abandoned. Probably no more tha 70% or so of the
google ones are abandoned but I'd be really surprised if they had that many projects in there.

Subversion considers its future

Posted May 1, 2008 19:07 UTC (Thu) by dberlin (subscriber, #24694) [Link]

I only know the stats for Google Code, and it has > 30000 projects that have at least one
commit a week for the past 2 months.

This also totally changes the guy's crazy assertions about nobody using Subversion and CVS.

He's obviously off in some strange world where everyone uses git.

That is not to say there aren't high profile projects that use git, but to claim that
subversion/cvs is the exception rather the rule is really really really out of touch.




Subversion considers its future

Posted May 2, 2008 3:15 UTC (Fri) by Tet (subscriber, #5433) [Link]

This also totally changes the guy's crazy assertions about nobody using Subversion and CVS.

It all comes down to selection bias. Even at the time SVN was started, it was clear that it was the wrong approach, merely papering over the cracks in CVS, rather than redoing things properly. The concept of distributed version control was already being bandied about, and with the release of BitKeeper shortly afterwards, it was clear that it was the right way to go. And yet I remember reading a Joel On Software article a while back (fairly recently, only a year or two ago) where he claimed that one of the things needed to keep your developers happy was an SVN server. I did a double take, because SVN was so completely out of left field. I couldn't believe that any sane developer would choose SVN for a new project. That's because, in the circles I move in, it's not even considered. But the fact is, people like me are vastly outnumbered by mainstream developers, most of whom have never even heard of distributed version control, and nearly all of whom use SVN (or Visual SourceSafe). It's hard to overstate the extent to which these people are invisible to certain sections of the community. If you don't work in a corporate environment, and few of the open source projects you see are using SVN, why would you think that SVN is widely used?

Subversion considers its future

Posted May 2, 2008 7:39 UTC (Fri) by joib (guest, #8541) [Link]

There's still plenty of high profile FLOSS projects using SVN, and even CVS (!!). Gnome, KDE,
inkscape, gimp, blender use SVN, openoffice.org uses CVS. Much of the toolchain (whose
developers, if anything, should be the "alpha" geeks running headfirst into git, right?) use
CVS (autotools, GDB, glibc, binutils) or SVN (GCC). Emacs is apparently converting from CVS to
bzr.

Given how widespread CVS still is years after SVN has been stable (and that is pretty close to
a no-op upgrade for users), I don't hold much hope for any rapid migration to DVCS:es. Which
is a bit sad, since IMHO mercurial and git are really good (I don't have experience with
others so I'll refrain from commenting on them), but there's not much one can do about it.

WHAT are you developing then?

Posted May 2, 2008 13:16 UTC (Fri) by khim (subscriber, #9252) [Link]

Apparently you are not using GNU toolchain (still developed with CVS and SVN), you are not using projects on sourceforce and/or code.google.com (things like Python and DocBook), you don't use GNOME and KDE... looks like you are working on another planet!

Either that or you are just ignoring the fact that 90% of things you use in your work are not done with DVCS - and if 90% of tools you are using are invisible to you then I afraid I'll like to avoid the projects which are visible to you: who knows what other facts of life are ignored in them?

It's as ridiculous as "we don't know any Windows" attitude: it's Ok to not support Windows, but it's NOT OK to pretend it does not exist when 90% of world is still using it...

Subversion considers its future

Posted May 2, 2008 8:18 UTC (Fri) by nevyn (subscriber, #33129) [Link]

 Fedora has just over 10k projects total, last I looked Debian was a little shy of 2x Fedora
... so implying that all those "100K+ projects" are created equal is "interesting".
 Almost everything I've looked at or worked on in the past two years has been git or hg, the
two notable exceptions being glibc (which as I said in my previous comment has a de-facto std.
public git repo.) and the NSAs hosted SELinux tree (shocker, govt. being behind the times).
 And if you look at the work on packaging in the Linux distributions all of the new-ish work
just assumes git/hg, for instance Gitsrc in debian.

 But yes, before you have a seizure, I guess there probably are some older projects that
haven't moved to git/hg/bzr yet (and maybe even don't have a public de-facto std. git repo)
... for one reason or another. How many of the developers consider that a "good" thing though,
and not just a legacy that noone has fixed yet?

 Maybe it would have made you happier if I'd said "Creating your source in" instead of "Having
your source in" ... but, meh, I stand by the main point which is that SVN _lost_ any mindshare
lead it had about 2 years ago. And any SVN developers who say that'll "eventually" happen are
just deluding themselves.

Subversion considers its future

Posted May 4, 2008 23:08 UTC (Sun) by vonbrand (subscriber, #4458) [Link]

Great data point, that one: Count how many projects are handled on central servers for centralized VCSes. DVCSes just won't show, as such a central server isn't needed at all with them.

Besides, when SourceForge started, there wasn't even SVN, they use CVS and (grudgingly) offered SVN later on. Perhaps they will offer git/hg/bzr some day too...

Subversion considers its future

Posted May 13, 2008 3:50 UTC (Tue) by robbe (guest, #16131) [Link]

> DVCSes just won't show, as such a central server isn't needed at all with them.

Please point me at a few free software projects using a DVCS where no central/authoritative
server exists. I'd be interested in their development methodology.

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds