tags:

views:

481

answers:

8

I was recently using a commercial centrally controlled version control system in a large company with about 100 different subsystems written in different operating systems and languages, and I have noticed that several developers use either git or mercurial on their pet projects, but not for their work systems. I personally am more familiar with git but was wondering what reasons are their to "Not" use Git in the enterprise, apart from the fact that the choice has already been made (we have many problems with our centrally controlled version system, so I can't say it is brilliant).

+8  A: 

If I had to guess, I'd say it's because enterprise has always been wary about using "free" things. Mostly because they lack a stable support system (generally, support comes in the form of StackOverflow.com or forums when it comes to open-source), but there's also a pervasive mentality of "you get what you pay for." They figure if it doesn't cost them a buttload in licensing fees, it must be worth as much in terms of real usability.

Of course, we, as tech experts, know that's a load.

dclowd9901
support is a huge factor. I was going to suggest it was because git is rather complicated and has a higher learning curve than other solutions, but yea, I think support trumps it.
SB
Yeah, but at the same time, how often do you lodge a support ticket against your VCS... We used VSS for a long time, and while it was pants, we never raised a ticket for it.
Paddy
Paddy: It's not just "how often do you need it", but the product of that and "what's the cost of not having it". I've never filed a support ticket against my VCS, but I have filed a support ticket against my database, and without that, I would have been totally sunk. I'll take "1,000:1 you find a bug that kills your business, plus support" over "1,000,000:1 with no support" any day.
Ken
@Ken: Of course, with the git mailing list out there, and a maintainer like Junio Hamano, and Linus still around, you can hardly say git has no support. You'll get fast response to a severe bug.
Jefromi
Mercurial with support: http://www.fogcreek.com/Kiln/
Joel Mueller
Caninical offers or is to offer support for Bazaar. FogCreek offers support for Mercurial-based Kiln. GitHub offers support for Git-based GitHub:FI.
Jakub Narębski
+4  A: 

From my experience it is the fear of change. Source code management is a central piece of infrastructure and affects all developers. If the current system doen't hurt too much enterprise IT will actually fight change.

Another reason I've heard quite often is that IDE integration has not yet reached the quality of e.g. CVS or Subversion. Though the argument is true it is becoming increasingly lees an issue.

Fabian Jakobs
+5  A: 

Some of the many reasons:

  • Inertia: There's an enormous number of people out there familiar with centralized systems. You don't have to "retrain" developers if you just don't change.

  • Interactions with other tools: Corporate environments are of course big on extra tools like continuous integration, IDEs, fancy issue trackers, and so on. Naturally, there's more support for the established centralized VCSs with those than with the relatively new git and hg.

  • Support: When you buy a commercial VCS product, you're not just buying the program, you're buying peace of mind.

Of course, I'm not saying these are good reasons; they're just convincing to people in the position to make this decision. I think it's worth overcoming inertia - it takes work now, but it pays off later. I think the external tools are getting better at supporting git, particularly the open-source ones - they just need plugins. And as for support, we all know there's plenty of less formal support out there on the internet.

Really, there's a common thought in all of these - the free software philosophy just isn't the way corporations do business. Buying a product is established and easy. You pay your money, you get what you need. Management doesn't have to worry. Using a free software product... well, it may be much better, but it's more complex to deal with. It doesn't come in a box.

A clarification: I use the word "free" in the same way those in the free software world do - free as in freedom not as in beer. Hopefully this phrase will get drilled into everyone's heads eventually. Note that I never dealt with the issue of cost here - though I do think that in the case of git, in general it will be ultimately be cheaper than a purchased solution despite the costs of bringing everyone up to speed on it and making sure it fits in with the rest of your process. This isn't a cut-and-dry issue though, and since I think git comes out ahead, there's no sense putting it among the bullets.

Jefromi
Free software isn't always *free* in the enterprise world (with emphasis on your first two bullet points -- those cost money in the enterprise world). Even the cost of support can be offset with possibly having to hire another employee dedicated to the tasks the support contract would have provided. Though I do agree with you that they aren't *good* reasons for using an inferior tool.
Austin Salonen
Although the professional costs of psychiatric care for devs forced to use VSS and the security guards for when they go postal are also rather high.
Martin Beckett
@Austin Salonen: edited in a response to your comment.
Jefromi
+3  A: 

This same question can be asked about switching any large infrastructure service with something else. When there are hundreds or thousands of people using something, it had better be broken or the new thing had better offer some compelling features.

Think about switching email systems. Someone is going to have to train all the users, transfer all of the messages, make the switch with minimal downtime and without losing data, and then convince management it isn't going to cause a major disruption to business operations.

In your specific example, converting the source control system for 100 subsystems while retaining history and retraining all of the developers, testers and release engineers, and not impacting their daily productivity, is a huge task. The existing system will have to be really broken.

Steve Madsen
the existing system often really *is* really broken, but it's only broken for devs, not for management: it sorta does the thing it's supposed to do, but it makes developers 10 time less productive
hasen j
I've seen a major productivity jump from switching from svn to git, from the benefits of quick branching, so I have to assume that other DVCSes or VCSes are indeed hampering developer's workflows.
Tchalvak
I'm not arguing against a DVCS. I use Git for some projects where it makes sense. I have to question the "10x less productive" claim, though. Be honest about how much of your day is spent writing code vs. actually working with your VCS. If you spent 90% less time in "VCS mode," but total time is 30 minutes, most management isn't going to take you seriously. I'm not saying it's right, I'm just being realistic. Companies will want proof that a big change like this is worth the time and money, and just because SOME devs will be fine with a DVCS does not mean ALL devs will.
Steve Madsen
it's not about how many seconds you spend in it. it's about how it affects your "flow"; it's similar to the way vim affects productivity.I'm not making the argument against svn in particular (I've not much experience with it), but against commercial tools like starteam
hasen j
+2  A: 

Git is a version control system with an attitude of collaboration and sharing. There is practically no way you can enforce a specific pattern of access and sharing. If the people who're using git don't want to follow your rules, the tool is not going to help you much.

Although I personally think this kind of organizational behaviour is stupid, I'm sure somewhere someone thinks it's a good idea. Maybe you're concerned that your unruly employees work on the wrong projects, or you're desperate to keep changes out of the code.

krosenvold
+9  A: 

I have to disagree with the ideas that Enterprises are afraid of free or that they are slow to change. These may be true, but to dismiss the slow git adoption rate for the Enterprise space to them misses the point of what Enterprise means. Besides, SVN is pretty popular and it's free.

Enterprise is about centralization. You want all your developers to follow the same procedure, get the same code, etc.

Eric Sink is more eloquent on this subject than I could be: http://www.ericsink.com/articles/vcs_trends.html

Richard Morgan
Very topical article.
Tchalvak
It's not so much that they're afraid of free, per se, but they know what free means: no support.
dclowd9901
Again, svn is in the same boat, support-wise.
Tchalvak
@dclowd9901 Support is independent of whether a thing is Free or not. And support isn't just what you pay for, the quality of git support and turn around time is probably faster than any commercial support. But you likely mean paid support. Subversion has paid support via collab.net. Support for git can be gotten through clearvision-cm.com and github. Are they any good? No idea! But "Enterprise support" is more about being a security blanket than quality.
Schwern
+1  A: 

"Apart from the fact that the choice has already been made"

That part of the statement is actually too important to disregard, because it ties in with the learning curve of any particular tool. Learning, for example, SVN takes a while, and the learning process costs money in the form of developer time. Learning git, in my experience, takes more time, and is made more complex in the absence of simplified interfaces (gittortoise's ongoing development not withstanding). Plus Git has so many tools that it's learning curve could actually be considered more of a learning slope.

The payoff after getting over the curve is great, but the initial requirement is a barrier to adoption.

Tchalvak
+1  A: 

A significant practical barrier to enterprise adoption, apart from lack of central control and integration as mentioned by Eric, is "ease of use".

If you are used to Subversion, or similar tools such as PVCS, then Git (and DVCS in general) represents a significant learning hill to climb -- both at the conceptual level and the daily workflow. In my (somewhat jaded) experience many enterprise developers are often unwilling to invest the effort in learning a new tool or concepts; and I fear will scupper any attempt to introduce DVCS.

Please prove me wrong

Alec the Geek