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 mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
I hereby release this comment under a GPL. You are free to use this comment or modify this comment in away you feel fit. But if you distribute this comment or any modifications of it, you need to also publish all the embarrassing things you have said said drunk.
Look at the script... lefthome.asp! Thats what i would do if I had my site running on Microshit stuff.
Sunday, August 19, 2007: Did Microsoft's Men In Black ever met Linus Torvalds? But why is he so critical of GPLv3? Why does he slam Subversion? What would happen to the kernel development if he chooses to do something else more important? These are some of the questions Linux/open source community from around the globe wanted to ask Linus. And, here is Linus candid and blunt, and at times diplomatic. Check if the question you wanted to ask to the father of Linux is here and what does he have to say...
Q: What are the future enhancements/paths/plans for the Linux kernel? --Subramani R
Linus: I've never been much of a visionary -- instead of looking at huge plans for the future, I tend to have a rather short timeframe of 'issues in the next few months'. I'm a big believer in that the 'details' matter, and if you take care of the details, the big issues will end up sorting themselves out on their own.
So I really don't have any great vision for what the kernel will look like in five years -- just a very general plan to make sure that we keep our eye on the ball. In fact, when it comes to me personally, one of the things I worry about the most isn't even the technical issues, but making sure that the 'process' works, and that people can work well with each other.
Q: How do you see the relationship of Linux and Solaris evolving in the future? How will it benefit the users?
Linus: I don't actually see a whole lot of overlap, except that I think Solaris will start using more of the Linux user space tools (which I obviously don't personally have a lot to do with -- I really only do the kernel). The Linux desktop is just so much better than what traditional Solaris has, and I expect Solaris to move more and more towards a more Linux-like model there.
On the pure kernel side, the licensing differences mean that there's not much cooperation, but it will be very interesting to see if that will change. Sun has been making noises about licensing Solaris under the GPL (either v2 or v3), and if the licence differences go away, that could result in some interesting technology. But I'm taking a wait-and-see attitude to that.
Q: Now that the GPLv3 has been finalised and released, do you foresee any circumstance that would encourage you to begin moving the kernel to it? Or, from your perspective, is it so bad that you would never consider it? -- Peter Smith / Naveen Mudunuru.
Linus: I think it is much improved over the early drafts, and I don't think it's a horrible licence. I just don't think it's the same kind of 'great' licence that the GPLv2 is.
So in the absence of the GPLv2, I could see myself using the GPLv3. But since I have a better choice, why should I?
That said, I try to always be pragmatic, and the fact that I think the GPLv3 is not as good a licence as the GPLv2 is not a 'black and white' question. It's a balancing act. And if there are other advantages to the GPLv3, maybe those other advantages would be big enough to tilt the balance in favour of the GPLv3.
Quite frankly, I don't really see any, but if Solaris really is to be released under the GPLv3, maybe the advantage of avoiding unnecessary non-compatible licence issues could be enough of an advantage that it might be worth trying to re-license the Linux kernel under the GPLv3 too.
Don't get me wrong -- I think it's unlikely. But I do want to make it clear that I'm not a licence bigot, per se. I think the GPLv2 is clearly the better licence, but licences aren't everything.
After all, I use a lot of programs that are under other licences. I might not put a project I start myself under the BSD (or the X11-MIT) licence, but I think it's a great licence, and for other projects it may well be the right one.
Q: Currently are there any Indians who you'd like to highlight as key contributors to the Linux kernel?
Linus: I have to admit that I don't directly work with anybody that I actually realize as being from India. That said, I should clarify a bit: I've very consciously tried
This one is not (yet) slashdotted:
http://www.efytimes.com/archive/144/news.htm
--- These are not words: wierd, genious, rediculous
[Microsoft][ODBC SQL Server Driver][SQL Server]Transaction (Process ID 666) was summoned by an evil deadlocked process in order to lock up and throw away the key to any IT resources process to request any reasonable requirement for open source software chosen by the deadlock victim. Rerun the transaction with Microsoft products next time and this threat will disappear into thin air - Steve Balmer, Head Deadlocker.
This article is only slightly about Subversion. A couple paragraphs from the whole thing! They talk about "the plan" for the Kernel, outsourcing to India (they talk a lot about India actually), and other crap. I got bored half way through and just searched for the subversion part, which even then wasn't that interesting.
Find Nearby Indie Events
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...
and if you're a programmer or an admin that knows sql server, then you know to disable this before you go into production. again, this is not a problem with the product. saying such would be like saying solaris is trash because it enables everything plus the kitchen sink, unless you tell it not to...
oracle is all great and fun if you have the money to cough up for it. sql server has great performance at a fraction of oracle's cost. of course, a competent architect will know when to use sql server and when to use oracle.
There are other issues: the Subversion authors have made a very real mistake here in keeping unencrypted passwords online, by default, in every public Linux or UNIX client compiled from Subversion's basic source code.
I just had to have a polite conversation with a professional peer who kept his home directory on his laptop, then turned on NFS shares "to get work done". I waited, very politely, until he put his laptop on the DMZ with his NFS shares turned on. Then I pulled his SSH keys for a set of sourceforge projects from his directory, and his password from his oher Subversion repositories. Voila! I now have write access to his Sourceforge subversion epositories.
I'm patient. But crackers aren't, and scan for this sort of vulnerability constantly. The Subversion authors should never have bothered to include the ability to store the password, at all.
As to my 'iconic image', I tend to dislike that part personally. I'm not a great public speaker, and I've avoided travelling for the last several years because I'm not very comfortable being seen as this iconic 'visionary'. I'm just an engineer, and I just happen to love doing what I do, and to work with other people in public.
This, people, is the key difference between Linux and Microsoft, and even Apple. Steves Ballmer and Jobs both want to be seen as visionaries, as all-knowing technological sages of our time. That isn't neccessarily a bad thing, as we've seen with the way Jobs has turned Apple around since he took over, but it does explain the difference between the philosophies of the groups: Apple and Microsoft take the approach of throwing new features in whenever they find them, so as to be seen as forward-thinking and 'next-gen', and sometimes that works and sometimes it doesn't - Spotlight being an example of something that does work (yeah, there had been desktop search before, but nothing quite that efficient and right-on-the-desktop in what can be called the 'Big 3' operating systems), and things like the are-they-in, are-they-out dropped features from Vista being an example of something that doesn't.
Linux, however, taking it's cues from Linus, approaches things from an engineering perspective. Visionary? That's all well and good, but will it run the risk of breaking? Yes? Then it's not going in. When you don't have a product to sell, it's a lot easier to base your development priorites on a more sound engineering base. Therein lies the difference; Jobs and Ballmer see themselves as visionaries, while Linus - who, whether he likes it or not, is the 'spiritual leader' of the Linux community - sees himself as 'just an engineer'. (Of course, the point could be made that Linus has the luxury of only being concerned with the kernel, where security and stability are the key things and form over function is rarely if ever required - do the likes likes of Mark Shuttleworth, Matthew Szulik, etc see themselves as engineers, or as visionaries?)
Dealing with lawyers would be a lot less tedious if they all looked like Casey Novak.
Damnit, it's a paradigm shift that Linus is talking about. True distributed source code management brings an entirely new way of working. It enables very fast merging at a very fine granularity, which lets you use casually use this information (about what changed and when) in a way that changes the nature of how you work! It's the same sort of difference that code completion or Google search made. Once a certain kind of very useful information -- that has always been available, but a bit inconveniently -- becomes like running water out of the tap, it enables ways of working that just wouldn't have been practical before.
4 4603874737&q=git+google+tech+talk&total=3&start=0& num=10&so=3&type=search&plindex=1
If you really want to know what Linus is talking about from the man himself, watch this Google Tech Talk. It's over an hour, but there's nothing like hearing it straight from the horse's mouth.
http://video.google.com/videoplay?docid=-21993320
If CVS isn't broken, I have a three-legged ladder I'd like to sell you. I'll even set it up in the parking lot and, with but a modest presence of mind, balance myself motionlessly on the very top step to prove how very not-broken it really is. On one foot. And I'll juggle, too.
CVS is what happens when you've roped yourself up into some high, awkward, inaccessible place, then you discover you brought along the wrong toolbox. Subversion is a fancy pair of vise-grips with rubber handles: doesn't hurt your hand so much when you have to grasp with extreme force the bolt head with no remaining flat edges, because you're too damn lazy to rope yourself back down to get the tool you should have used in the first place.
Wish I had some mod points but I believe you make a really good point.
But to be sure, allow me to draw a parallel to help illustrate what I understood:
It's not that Walmart is a crappy store... it's not and they generally have some pretty good stuff there. It's the people who shop at Walmart that gives Walmart its reputation.
Is this pretty much what you're saying about Microsoft stuff? It's not that the products are bad--they're not. It's the people who use Microsoft products that give Microsoft its bad reputation.
I think there is a lump of truth to this assertion. Microsoft is a lot more ubiquitous and available than many competing products. Certifications demonstrating expertise typically only require enough money and a list of answers to acquire.
I think this is an assertion that requires some meditation: It's not the products, it's the users...
Both do their job (CVS since years). SVN does some trivial things better than CVS.
SVN doesn't do the job because there's no built-in merge tracking, which leads to serious merge bugs.
Repeated merges (bi-directional merges) between branches generates false positives (the lack of merge tracking causes SVN to re-merge previously merged code.) The lack of true renames, means that you can lose changes during a merge if renamed files are modified on both branches. The svnmerge.py script only works at one directory level, which makes merging a single file deep in the project annoying. Since a checkin and a merge checkin are identical, there's no way to enforce merge tracking standards via hooks. All of these merge weaknesses require extra training and/or merge meisters, which is really clumsy in a large organization.
SVN is useful if you only use short lived branches (which will minimize the problems listed above.) I would not use it for large organizations due to training issues, nor for branches that require lots of inter-branch merging.
Hopefully, the merge tracking being implemented for SVN 1.5 will make SVN a real/complete scource code control system.
``Q: India is one of the major producers of software engineers, yet we don't contribute much to the Linux domain. What do you think is keeping Indians from becoming proactive on that front? How do you feel we could encourage Indians to get involved and contribute heavily? You have a fan following in India; could your iconic image be used to inspire enthusiasts? -- Bhuvaneswaran Arumugam.
Linus: This is actually a very hard question for me to answer. Getting into open source is such a complicated combination of both infrastructure (Internet access, education, you name it), flow of information and simply culture that I can't even begin to guess what the biggest stumbling block could be.''
My guess is it's because the _bulk_ of Indian software engineers are being raised on Microsoft technology (the fact that it's Microsoft is irrelevant here; what matters is that it isn't Linux and doesn't resemble Linux). I don't actually know that this is the case, but I suspect it. I've spoken to a number of people from various parts of the world that aren't Europe or North America, and the picture I get is mostly the same: virtually everybody who uses a computer uses (cheap or pirated) Windows, if you take classes in CS you are taught Microsoft tools, and, at work, you use Windows. It's like nothing else exists. Why would you contribute to Linux, coming from such an environment?
Also, I know for a fact that a lot of people in India get trained on Java. That's yet another platform that isn't Linux and, even if it's more like Linux than Microsoft's platform is, it's still different in important ways. Besides, Java can run under Linux...but that's not what usually happens.
Please correct me if I got my facts wrong.
He's right about Subversion, but he misses one point:
Putting your project in a Subversion repository takes an hour or two, maybe half a day if you're an idiot. Setting up an arch repository took me at least twice as long. Explaining how to use arch to developers who hadn't worked with it before is an order of magnitude more difficult than explaining Subversion to developers who haven't worked with it before.
Subversion is "good enough", but it's also simple, straightforward and frankly if you have anything that goes beyond a very simple project or where more than one person is involved, I can't think of many reasons to not put it into a Subversion repository.
I still like arch more for the concepts. But I don't use it. I might look at git one of those days, if I have a need Subversion doesn't address.
Assorted stuff I do sometimes: Lemuria.org
Perhaps slightly off topic, but I realize now that I'm always compelled to read stories with Linus' name because I'm a fan (not fanboy) and user of Linux. However, the man never seems to have anything positive to say. Really, is his opinion all that relevant anymore? Of course he will always be somewhat relevant due to the fact he is pretty much in charge of the kernel and contributes heavily to it, not to mention the trademark holder of Linux, but in the end he really has to answer to the community. He has to know he can't ever bite the hand that feeds him or people will go other directions.
I'm not trying to troll or insight a flame war, I'm just saying his curmudgeonly ways are getting a bit old already. At some point I imagine him being viewed as the Dvorak of Linux. Anyway, I'll understand if I get modded down, I just wanted to put my opinion in even if it's not worth much.
There are lots of clients to choose from at the tigris.org site. If you don't want or need a file browser plug-in/Explorer extension/IDE integration, there are a number of apps to choose from. Granted, TortoiseSVN and Subclipse track the Subversion releases more closely than the others. Personally I use a combination of TSVN with Kdiff3. I also use AnkhSVN in Visual Studio, just for the auto-add and file icons.
It is probably the most advanced and stable kernel out there.
What kernels do you actually know?
Why do you think it owns a lot of high end film production? ILM, Pixar and more. It is used for many super computers and kinda owns clustering.
Well, the Linux kernel is used in all those areas because they don't need a lot of advanced features; in some of them, complexity is downright harmful. In fact, there are few applications that do. That's why a simple, open source kernel with lots of drivers does the trick.
That's why Linux is so successful: it's simple, it's limited, and it's good enough. Furthermore, the kernel and its maintenance are so byzantine that it simply can't be changed quickly, which is something the market likes (kind of like the market also usually likes it when the US government is deadlocked).
(Linus with a little balloon on hovering over his head)
"Oh hi, i shiftedz ur paradigmses."
Paradigmses, he shifted them.
"Merge Tracking in Subversion 1.5.0 is roughly equivalent in functionality to svnmerge.py, recording and using merge history to avoid common cases of the repeated merge problem, and allowing for cherry-picking of changes." -- http://subversion.tigris.org/merge-tracking/
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I like his comment about "rotating" media. What a disdainful term that will become. It immediately made me picture my nine-yr-old son teasing me in 10 years because I still have stuff on my lame rotating media.
"I can be self-referential if I want to," said Tom, swiftly.
Please correct me if I'm wrong, but when I first looked into git, I was left with the impression that there was /no way/ to use git as if it were centralized: every user had to have the full history, even if 99.99% of that history was irrelevant. I recall reading something where Linus noticed that if everyone used git with full history, they would all wind up with needlessly huge local copies. His solution: rather than fixing this obvious flaw in git, he chose instead to simply not import old version information. Did I read this wrong? Has something changed? These are not rhetorical questions, I have asked them previously and have yet to receive an answer. I just don't know. Why is git superior when it seems that it was fundamentally incapable of handling the full depth of the very project for which it was written?
My goal of a "perfect" version control system is one that is decentralized, but lets me decide how much history I want, and lets me decide if something is so old as to be irrelevant, not worth having locally. If older versions can be discarded without impacting day-to-day work, why have I not seen this as an option for any decentralized systems?
It is one of those "seems obvious enough to me that I am probably just using the wrong keywords in Google" things.
SVN lets me check out just the "most recent" copy, and I can pull whatever I need from the remote repository if I need it.
git, from what I've read, does not.
I am not trying to be arrogant here, I would love to be corrected. Given history of other times I've asked this question, I don't expect to.
-- 'The' Lord and Master Bitman On High, Master Of All
a brief googling reveals hard drive space was not the issue - it was bandwidth. My point is more related to archives in general, not the linux kernel itself, though (that Linus chose not to put the whole tree into git I still think is very telling, though). My primary concern is: if it wasn't worth it to have 3-year-old history THEN, why not three years from then? It just seems like a fundamental design issue that I've never heard explained other than "hard disks are cheap and bandwidth is infinite nowadays!", which is an outright lie and pretty much just says "git: not meant to be portable" /like/ to be able to check out/in from resource-limited systems without resorting to YetAnotherTool.
Perhaps I use SVN in situations where something simpler would suffice, but I
mostly, though, it's just the idea of "we don't want to import 3 years of history, it's not worth it right now" + "And this is good for the long term!"
-- 'The' Lord and Master Bitman On High, Master Of All
This was very quick googling, of the type "I think I remember reading something like...", typing "linus git kernel import", and clicking until I found something similar to my memory, total time 20 seconds:
/ALWAYS/ in a situation where I have a lot of bandwidth and hard disk space at my disposal. When I'm in a resource-limited situation, I still like to be able to check in/out, do other "what went wrong?" type of things without using a second system.
/when they wanted it/.
http://kerneltrap.org/node/5014
Just because I'm the type of person who uses version control and often have access to high-speed internet and large hard drives doesn't mean I'm
As for "give it a try", I did, but very early in its history so I don't think enough niceties were there at the time.
Mostly, it comes down to: sometimes my SVN repository grows very quickly due to all the sometimes unneeded history. There's no "svn obliterate", so we just put up with it. This causes (actual, not hypothetical) storage issues even with centralized version control. I wouldn't want to multiply this problem by the number of developers, while adding bandwidth issues previously not dealt with because some things they just didn't care about, just to allow them access to histories
-- 'The' Lord and Master Bitman On High, Master Of All