Linus on Subversion, GPL3, Microsoft and More
victor77 writes "Linus has repeatedly slammed Subversion and CVS, questioning their basic architecture. Subversion community has responded...how valid is Linus's statement?" This and many other subjects are covered in this interview with Linus.
I've never used git on any project big enough to have multiple developers, but I use git for my one-man-projects for the simple fact that it's so easy to create a repository.
Simply move the directory you're working in and type 'git init' and you're off and running. If you're developing the same code on multiple machines, it's simple to develop on them independently and still sync relevant changes. Frustrating.
With SVN, you have to set up a central repository (not difficult, but tedious) and if you're working with the code on multiple machines that aren't always on the same network you either have to have a SVN repository on each one and manage syncing them somehow, or one machine can't make commits when the other isn't on the network. Frustrating.
I still find git to be a little confusing (especially in regards to warnings seen when pushing or pulling changes from one repository to another and merging branches), but I've decided that even if git isn't the best answer, a distributed version control system is closer to the Right Thing than the old way of doing it (for my purposes, at least).
*sigh* back to work...
Subversion works, but like Linus says, it's nothing wonderful. You can hardly point at some feature of it and say it was the product of a genius. It does CVS right, and that's about it.
But SVN is limiting. For example I have a fork of the Second Life source, and SVN was PAIN for that. I ended up switching to SVK because it was the first thing I found that could sync with a SVN repository (which is what LL hosts), but Git would probably be also a fine choice as well.
SVN's problem is that when you want to branch somebody's source but still follow it by merging improvements it becomes really painful. You have to use svn-load-dirs, which is a hack. You have to give it megabytes of source to process, which can suck really badly when you've got your SNV repository hosted externally so that other people can access it.
Yes this is extremely old news. I thought it would be something new, but then I see the comment from the SVN guys is dated 2006: last year for people who keep track of time.
.svn metadata folder in each normal directory; hence if you have 1000 normal directories you get 2000 directories.
For instance, the comment from the Subversion team states that they hope the kernel dev team find some VCS that they like. They already did and it was git (http://git.or.cz/), a program that Linus Torvalds wrote himself.
As a side comment, I like git over Subversion for a number of reasons. First it has data verification in the form of checking SHA1 (note that this isn't for repository protection from attacks but just for verification from corruption). It's distributed, and doesn't blow up the repository size when the repository gets large. SVN keeps a
Even if that's not much of an increase in space, it's ugly and it makes the repository (just files) hard to copy (have no idea why they implemented it this way). Of course there's a backup feature in the program so there's no reason to copy by hand, but still, it's inelegant.
"What lies behind us, and what lies before us are tiny matters compared to what lies within us." Ralph Waldo Emerson
And do try to go easy on the phrase "paradigm shift" in your explanation even if this is one; marketdroids love over-using it and it's come to be a code phrase for "same old, same old". Focus on how things have changed for you and you'll get a better response.
"Little does he know, but there is no 'I' in 'Idiot'!"
In exactly what way does a distributed source code management system change the way you work?
It gives you private branches and commits, which allow you to work with the power of a VCS, but without having to pollute the main repo with dead ends, poorly written changes, and experiments. It also allows for true disconnected operation, and allows any developer to "pull" from another developer, again without having to pollute the master repository.
And specifically with git vs. SVN, git offers true branches and tags (unlike SVN's bizarre, nonsensical "simulations"), and true merges.
And do try to go easy on the phrase "paradigm shift" in your explanation even if this is one; marketdroids love over-using it and it's come to be a code phrase for "same old, same old". Focus on how things have changed for you and you'll get a better response.
It (git and distributed VCS) is a "paradigm shift" the same way that, say, the relational model is a paradigm shift over the network model. It generalizes the problem and strips it down to certain fundamental concepts, and makes those concepts available to you directly, instead of under a layer of ill-conceived and limited operators.
For instance, in SVN, how do you move a changeset from the tip of one branch to another? You can't. It's not allowed by the model, even though in terms of more fundamental operations, it's easy to describe. But in git, you can. Just cherry pick it to the new branch, then move the tip of the old branch back one changeset (the "dangling" changeset on the old branch will eventually get garbage collected). You could also write your own "git-move-changeset" command using the existing low-level git commands.
Instead of considering the deeper, underlying issues, the SVN team just cloned CVS's behavior and made it cleaner. Too bad.
That's exactly what a "paradigm shift" is: finding the deeper, fundamental operations and then showing how the existing systems are just subsets of that functionality.
When I first heard this crap about Linus not liking SVN I was thinking what a dork, SVN is great. But then this post opened my eyes. This reminded me of all the crap I have to deal with in SVN, it's a pain. I also have to be honest, I've never heard of git, now I must find out more about it.
the promise of NT and Cairo. Except that the "frivolous" lawsuit actually did find offending code. The only thing that saved BSD is that AT&T/USL had stolen even more code. You can call the lawsuit stupid, annoying, or disrespectful, but there was an element of truth to it. The community should have policed itself a little bit better. To this day we still here software companies decrying open source's disrespect for copyright and properly policing the code; which IMNSHO is fallout from the original attitude taken when BSD was being developed. I like open source too, but the way to go about it isn't by ignoring the licenses for code, no matter how small or insignificant the amount. Hindsight is 20/20, but that was an important lesson. By the end of the 90s, Unix vendors had mainly squabbled amongst themselves, BSD had been largely overlooked, and Linux had expended millions of dollars in efforts to reinvent a perfectly good wheel. That allowed Microsoft to take over the desktop. This makes no sense to blame on Linux. The BSD license allowed commercial forks, so they happened, while BSD failed to market itself and grow its development community (instead it forked). Meanwhile Linux was doing its own thing, but was it "wrong" for not spending its funds on supporting BSD instead? If you look at all the money ever spent developing Linux, its probably less than what was spent on one of the major commercial Unixes. Why is this ok in the business world, but not in the open source world? Also, keep in mind a lot of recent investment in Linux is precisely because of the GPL; IBM would not support development of BSD code, as that might help its competitors closed-source products.
Meanwhile, Microsoft successfully marketed a desktop, and took over a market many feel a free Unix could have occupied. Of course, in that case you should blame X-Windows and the slow development of broadly supported GUI toolkits. Both of those run on both Linux and BSD, so I don't see why this should be blamed on Linux. I guess Linus should have written a BSD-licensed version of KDE to make you happy?
Once again, technical superiority is not the only thing that matters. It isn't true in business, and it isn't true in the open source world. Building a healthy community and a working development process is just as important for long term success. And, like in business, sometimes a little competition helps, as it spurs development that might not happen in a pure monopoly.