There was a time when the Linux community used BitKeeper as its source code control system, after switching from the open-source CVS. But then Samba developer Andrew Tridgell figured out you could telnet to a BitKeeper server, type "HELP," and get a list of commands. Upon hearing of Tridgell's daring hack, BitMover - the company …
"Rather than cry about it like a little bitch"
Uh, a bit of revisionary editing going on there, fella!
Tridge never signed up and never used BitKeeper. Yet, despite never having used it, Linus's mate who was the owner of BitMover threw his toys out the pram in a Theo de Raadt style.
Linus went crying like a girl, telling everyone that what Tridge did was mean, wrong and illegal and that Tridge had done something REALLY TERRIBLE to all FOSS developers (forgetting Tridge's work in the same vein with reverse engineering SMB, which Linus had used several times to show how good Linux was and how not in trouble with "IP" it was).
Flames galore with Linus continuing to lambast Tridge and tell everyone that his mate (McVoy? I think it may have been his name, can't be arsed to google) was right to be upset and right to remove the FOSS license (which wasn't FOSS because it demanded that you not work on a competing product, like, say CVS, which has FUCK ALL to do with copyright owner rights, but there you go).
And whilst doing so, him and a few others worked on git.
Linus DID cry about it like a little bitch but whilst doing so (when it turned out Tridge wouldn't say sorry and forget all the stuff he'd found out) helped work on a replacement.
NOTE: Linus had been told that it was dangerous to move (and to make any kernel developer move) to a non-GPL (or nonBSD, since BSD licensing would have worked OK too) closed source application to do the work on.
This was pooh-pooh'd by Linus who didn't see there any downside to it.
Strangely enough, he forgot he said that when McVoy yanked the code back and ran off sobbing like a baby with their dummy taken away.
But there you go.
Linus is a good engineer but woefully ignorant (and willfully so) about consequences.
and some of us...
are stuck with sourcesafe... :(
management... always afraid of the non-microsoft tool in the chain...
one small error
the linux kernel community never used cvs before switching to bitkeeper... it was just email, patches and tarballs ("much better than cvs", according to linus)... and i don't think the sentence makes sense if you talk about "linux community" either, because the linux community (if there is such a thing) didn't switch to bitkeeper, that was just the kernel (or the kernel and one or two other projects at most)
Git sounds like Rational's clear case...
Not that I've played with git, but the main feature outlined in the article about git is a feature of clear case..
So git is the only DVCS then ?
For the sake of completeness, it might have been worth mentioning that not everyone likes git's style; for example, that file renaming is handled by a dirty rotten hack. It's a pity that Torvalds succumbed yet again to NIH syndrome and couldn't bend his fine principles just a little, to avoid reinventing yet another wheel. So now we have Git, Bazaar and Mercurial slugging it out and ensuring 'diversity' in the open-source DVCS field.
His Steveness, because my opinions are perfect and it just needs everyone else to realise it and agree with me.
Linus wouldn't be as good as he is if....
...he worried about consequences. He often cuts right through the arguments to what needs to be done, and shapes the correct solution. If he upsets people along the way, they usually forgive him once they realise what has been built.
As soon as I realised what Linus had accepted in order that Larry McVoy would be prepared to license BitKeeper for kernel development I just knew it would all end in tears.
I tried to follow the above, but between the constant name-calling and large number of (...) asides, I lost track of who was doing what to whom.
Uhh a few points
Linus never used cvs for developing the kernel. He has always thought it was braindead and was never shy about saying so (Others may have had CVS trees for sub projects though).
The mark above is correct that Tridge never used bitkeeper, he just reverse engineered the network protocol (something he has a great deal of experience in), however the rest of the comment is just the sort of crap people not really involved in the incident spouted to make it all appear much worse than it really was.
The hard part is retraining management
Distributed source control is a very powerful tool and gives the programmer a lot of features like being able to store local commit points. That's a handy thing to have if you're tinkering and want to be able to go back to where you were a few hours back. In some ways that gives you what the good old Vax gave you: a way of going back to previous file versions, but obviously it gives you a lot more.
With cvs and svn there's the idea of the Big Corporate Repository. The corporation's intellectual assets being kept safely under lock and key. git tells them to go away from that which is quite scary.
Git sounds good.
If I am messing with subversion ... I'll have a local CVS repository so I can have local and global commits.
Sounds like a GIT would let me do that without resorting to two systems. The next time I am making changes to my dev tools I will have to look into GIT :)
Re: So git is the only DVCS then ?
git's nice but it's a complete… itself to use. I'm one of those strange people who prefer mercurial, as do some kernel subsystem development teams – the LinuxTV people, for example.
@one small error
"the linux community (if there is such a thing) didn't switch to bitkeeper, that was just the kernel"
Linux is the kernel, and nothing more. Technically speaking, and even if we all keep using Linux to mean the whole OS. If RMS heard you... hehe
A year of git behind me
After cvs, clearcase and a smattering of svn, it is refreshingly simple to install, configure and use. Eclipse integration is nice, too.
While cc is powerful it's a monster to set up and maintain.
I do see a benefit in centralization considering the risk of disk failure, but I hope people push more often than the article suggests. And you can keep your repo on a backed up system, such as a shared server
> Git sounds like Rational's clear case...
and anyone who has made serious use of Clearcase knows what a pile that is ...
Just posted a comment how Linux (oand OSS) is getting better, but it leed to lose the stupid names and then right on cue, along come a GIT.
Please, stop using them...
Hi my Git makes sure my gimp is not being shafted by a gutsy gibon....gaaahhhhh
@Neoc and @Brian
Neoc, read it again. If you don't like it, then google up about it and read the real deal. You don't like the wording, YOU do the work. PS how many names were called? No more than the article (freetard, little girl, etc). Did you complain about that?
Brian, he wouldn't have dumped lots of developers in the shit (because you couldn't be a kernel developer AND work on a code respository system) going in to BK and drop them ALL in the shit when BK wasn't usable.
If he'd thought of the consequences, he would have been a better developer.
If I wrote a new REALLY GOOD program for my job quickly but ignored the consequence of me not being there to look after it, the developers looking after it will have a nightmare. And that is NOT being a good engineer. If I ignore the consequences of not documenting the code (I wrote it, it will work, I won't need to fix bugs), then adding features or fixing bugs would take much longer. Not documenting your code is bad engineering. Why? Because there are consequences of not documenting and you should not ignore it.
"however the rest of the comment is just the sort of crap people not really involved in the incident spouted to make it all appear much worse than it really was."
quotes from the above:
Tridgell "screwed people over", claims Torvalds, portraying him as a hooligan who had no purpose other than willful destruction.
"'[Tridgell] ... tore down something new (and impressive) because he could."
"He didn't write a 'better SCM [source code management tool] than BK [Bitkeeper]'. He didn't even try - it wasn't his goal. He just wanted to see what the protocols and data was, without actually producing any replacement for the (inevitable) problems he caused and knew about."
How was the posting making it out to be worse? How was Linus not the one "making it worse than it was"?
Maybe we need a Linus-with-ring-around-head icon...
git is great
I vaguely know the story behind it but don't care about it much. The point is, git is great. I'd been using Subversion since 2002 and switched to git in November. I haven't looked back since. There is a steep learning curve but once you get it, it really works for you.
I have moved our small dev team from CVS to subversion and, by golly, am gonna stay on it. I don't know where the desire to do "still better" would come from. The idea that svn is somehow connected to the "Big Corporate Repository" is totally idiotic; now there is a confusion between a technical implementation and political structure.
"a urinary tract infection done right.”
Thanks for that. Now I just have to wait for the appropriate moment to use it.
Got a directory here, got a directory on a share, I don't see any problem here.
@I M Gumby - ClearCase?
I haven't used git, but I really hope it isn't like ClearCase.
I work in a huge multinational organisation that uses ClearCase to distribute its code around the world. You have no idea of what a hideous clusterfuck ClearCase can be at times.
It's big, expensive, slow, full of bugs and requires teams of geniuses in white coats to gently nurture it along on big expensive servers. Did I mention it was expensive? You also have to pay an arm and a kidney each year in "maintenance" fees, which gives you the right to talk to some idiot in the Netherlands who doesn't understand your defect reports even after you've emailed them 3 times, each time rewording it in a way that might possibly break through the ignorance barrier. Actually this doesn't matter, because his job is to eventually explain that they aren't going to fix this defect anyway. Either that or they'll fix it in the next release, which is A Bad Thing because the next release will bring a shitload of new bugs with it, each of which will cause you to go round the defect reporting loop again.
In the hands of the top 20% of engineers in any given organisation who are really good, it's a powerful tool and can be made to do nice things. But that won't happen because of the boat-anchor effect of all the process and admin people who don't really understand it and who will mandate ever-more-complex and pointless procedures on top of it, in a bid to avoid the fuckups caused by the other 80% of your engineers who don't understand it either. Those engineers will treat it like a hostile filesystem, whose purpose is to slow them down, so they'll just bypass it and cause you even more grief.
Oh, and it's really expensive.
I feel your pain, we are switching from VSS to TFS as that is compatible with Visual Studio, and we can't have the little MS darlings have to use two applications; oh no. Must all be integrated.
Meanwhile the server team uses Eclipse and does TFS integrate with that? Does it buggery.
I had hoped we'd go FOSS, but I guess the lure of MS proved too great; I am not even sure other solutions were examined.
For a pedant, you write some nonsensical, malformed XML :)
Yet another tool...
Businesses spend (good) money/time investing in SCCM tools because they perceive a real world benefit greater than simple 'record keeping' and the profusion of open source 'tools' does not help.
The CVSNT project has just released the first stable of CVSNT/EVS 3.1 and it is a single server that supports CVS and SVN clients (and will soon add VSTS/TFS clients and will eventually add GIT clients probably too) and supports change sets, failsafe audit, access control, promotion levels centralised rules etc etc. At least it's an attempt at addressing the bigger picture.
If a developer can work more productively with tool XYZ - all good - but the business needs certain tools and controls and processes at the server side and the only thing that a developer gives to an organisation by bringing in tools through the back door without listening and addressing the requirements of all the stakeholders is a legacy of total paranoid control by management.
Sneak GIT in the back door today - tomorrow have ClearCase hoisted upon you.
If you feed a Troll, make sure you bring enough for everyone
Larry McVoy wrote Bitkeeper. Larry McVoy got to choose the license. I did not like his license, so I did not use his software. This did not stop me building and modifying my own kernel. The cost of not using Bitkeeper was that Linus would have to make a greater effort to include a patch.
There was a lot of trash talked about the Linux kernel being dependant on non-open source software. Much of it was fuelled by dislike of Bitkeeper's license. Some people cannot get used to the idea that he who pays for the software chooses the license. No-one was forced to pay for a copy of Bitkeeper with every new computer. There was nothing to prevent people from making a GPL licensed alternative to Bitkeeper or from contributing to the kernel without using Bitkeeper. The trolls were conclusively proved to be talking from their backsides when Larry pulled the plug and the kernel did not fall into an abyss.
Unfortunately, the trash talk did have an effect. Larry replied to the trolls. He got into public arguments with them. The publicity surrounding the arguments caused more harm to his busyness than the value of demonstrating his software could cope with a big rapidly changing project like the Linux kernel. I think the bad publicity concerning the entire affair was a significant price to pay for getting git. On the other hand, it did teach a few people that some journalists prefer to fan flaming troll droppings rather than find real news.
Learning curve flattener
Not perfect but a lot clearer that the manuals. Doesn't explain pushing branches though, and I always have to google it.
re: If you feed a Troll
Neither did Tridge sign up.
So how was the license broken?
Why not CVS?
Would someone be able to point me in the direction of discussion on *why* cvs and SubVersion are so awful?
Certainly the idea of this distributed control system doesn't wash with me. The *good* thing about centralised source code stores is that everyone can see everyone elses code all the time. It may be that an authoritarian corporate regime can mismanage that and retain too tight a control of the code, but that's a corporate problem, not a software one. Besides, a company with that attitude wouldn't use a distributed system anyway, on the basis that it doesn't retain enough control of the code.
Having only ever really had much experience with SourceSafe, and that almost ten years ago, I would like to know what this is all about.
A lot of developers work off laptops - which are not the most resilient pieces of hardware, what with the abuse they often take. Is one of the premises of git the idea that you commit a mountain of changes locally and after possibly weeks of work, commit to your main server (which should be raided and backed up) - the whole time praying that your globally uncommitted changes are safe?
Also, one of the touted benefits seemed to be that you could avoid checking in potentially embarrassing code? A coder with this hangup may have some ego issues (or be a damned lousy coder - either way this seems to be a cure for a different sort of problem).
What he said
I agree with confused's post. My knowledge of programming came on in leaps and bounds when other people *were* looking at my code all the time. The way to save embarressment as a programmer is to be better at it, not to hide your code until it gets rushed through, or you have spent way, way too long getting it right before committing it to your archive.
My inner xml parser thought exactly the same.
re: Why not CVS?
I think that it is because the kernel development is so very widespread and there isn't really much in the way of intercommunication (which is fine for the kernel since there's a lot of modularity going on in there). And CVS doesn't deal with binary blobs being kept as a delta.
@ Gumby, Mounteney, Beard, etc
@Gumby/Clearcase -- Git is blazingly fast. People who've used CC may be forgiven for thinking it isn't actually doing anything -- it's that fast.
I don't know how easy it is to create a branch in CC, but in git, when you say "git branch new" it essentially creates a 41-byte file. Your branch is created, and once you switch to it all your changes go on that branch. Didn't like it? Switch back to the master branch and delete that one. Or leave it lying around -- a git repo takes far, far less space than most other VCSs (more than an order of magnitude less than SVN anyway), and you never know when you may want to cherry-pick one of those changes you made while "in the zone".
@Mounteney -- renaming a dirty rotten hack? Clearly you have not moved most of the guts of a function from one source file to another one and had "git gui blame" tell you exactly where those lines came from, and what their history was **back in that other file**.
@Beard -- When you fall off a cliff, it's not the fall that kills you; it's the sudden stop at the end. People who think SVN does branching fine miss the point. It's the merging that sucks. You can't have two long lived branches merging at regular intervals without having to remember where your last merge was so you don't re-merge old stuff the next time.
As for "everyone seeing code all the time", that's nonsense. If a dev doesn't want anyone else to see work-in-progress code, he won't check it in -- you can't force that on him by using a centralised VCS. A DVCS just gives him a little sanity and breathing room. I don't know about you but I like to pamper my devs with good tools!
The really useful thing about a DVCS is that it allows small commits -- makes it easier to review, easier to revert **just the bad parts**, easier to debug (git bisect is fantastic -- it basically does a binary search to find the specific commit that caused the bug), and -- best of all -- makes it easy to work offline.
Git stores all the history of all the branches on your local repo, and yet it takes less space than SVN takes for its "one extra copy, just the latest version".
If you try it, you'll be hooked!
@AC: and some of us...
Count yourself lucky. I was forced to move from VSS to Subversion and it's like going back to the dark ages - the merge function in a 10-year-old version of VSS is infinitely better than the schoolboys's pants that the latest release of Subversion comes with.
also, about SVN
...also, for those wondering what's the big deal, here's a great comment from somewhere in the trenches:
@AC @AC 22:20
Why would TFS integrate with eclipse? It's a MS product designed as part of the VS suite, so what do you expect?
And your comment about "MS darlings" suggests that you are not a developer and therefore not really qualified to comment - it seems that you are probably some tape jockey who has an anti-MS axe to grind. If you were a developer you would know how much extra productivity you get from integrating VS with an MS-based source control system - after all, that's what it's designed to do.
Having had the recent pain for going from VSS to Subversion whilst still using VS I can vouch for the associated reduction in productivity. I have no issue with people not using MS stuff, but if you're an MS shop then you'd be insane not to use the full integrated suite.
Nothing wrong with CVS
I and I would speculate a majority of developers use CVS day in day out in an agile enterprise development team and have done for years. Simple, no-frills version control. And if something does ever go wrong I can just telnet straight into the server and sort it out.
Well TFS would FUBAR if integrated with an IDE like eclipse because the TLA doesn't STFU and is MIA anyway...
Jeese-oh, ask Carol Vordeman for some more letters to fill the words in...!
Re: @Neoc and @Brian
@Mark: Posted Thursday 22nd January 2009 09:20 GMT
"Neoc, read it again. If you don't like it, then google up about it and read the real deal. You don't like the wording, YOU do the work. PS how many names were called? No more than the article (freetard, little girl, etc). Did you complain about that?"
<sigh> I may have to explain in simple terms.
I did not complain about the article because there was no need to - you were already doing it. *HOWEVER*; having written a comment to "set the record straight", I would have preferred it had you written it in such a way that people who don't know the history (like myself) were able to follow it. As for me needing to "google up" to get it, may I point out that if I need to do such a thing you have utterly failed in putting your "record-straightening" point across intelligently and intelligibly both.
But complaining about me using names and not the author you have painted yourself as a hypocrite.
And why should a hypocrite be listened to?
Therefore destroying any utility in your posting.
You don't calm a fight down by saying to the one who escalated but didn't start the fight "You shouldn't get so agitated". That doesn't calm things down. You tell them BOTH to calm down.
PS I don't work for you. If you want me to write a certain way, please send a cheque or postal order to my address.
Or, if you don't like this idea, read up yourself elsewhere. Hell, Orlowski had a less parenthetical prose on the subject here on El Reg and I link to it later.
Read that one.
With git you can have any number of repositories (it is a "distributed" version control system after all).
If you want to use a laptop, you can periodically connect it to a network and send your changes up to your desktop machine, assuming your desktop is backed up. Then weeks later or whatever, you can push those changes from the desktop up to the main repository.
Of course, just because you _can_ do that doesn't make it good engineering practice. Version control systems like git are just tools - they don't force you to use them sensibly.
Oh dear - and he started so well...
... and just as I was thinking, "Finally, a decent article from him", there's the incorrect and trollish use of the word freetard. I thought we'd managed to get away from this. Perhaps Drew should have a word.
Whilst I'm here, I use VSS (work), I've had a go with the team stuff, and I've used CVS and Subversion at home. The team stuff was unusable; the VSS version I have to use functions, but I come up against its limitations too often (although that's mostly due to the rights I've been given (or not) on the server - it still limits me though); Subversion gave me all sorts of sych errors just saving a few files for no readily apparent reason. I recently went running back to CVS and embraced it like an old friend.
YMMV but even if it does, it doesn't invalidate my opinion or experiences or anyone else's for that matter. The phrase "horses for courses" springs to mind.
- Hi-torque tank engines: EXTREME car hacking with The Register
- Review What's MISSING on Amazon Fire Phone... and why it WON'T set the world alight
- Product round-up Ten excellent FREE PC apps to brighten your Windows
- Product round-up Trousers down for six of the best affordable Androids
- Why did it take antivirus giants YEARS to drill into super-scary Regin? Symantec responds...