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.
Posted May 1, 2008 8: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 8: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 9: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 15: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 14: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 21: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 22: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 5, 2008 3:23 UTC (Mon) 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 11: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 15: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 13: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 22: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 9: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 5, 2008 4:56 UTC (Mon) 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 ;-)