Todos conocemos a Linus Torvalds. También sus opiniones sobre Windows, Richard Stallman, el software libre, y otras cosas. Pero menos conocidas son sus opiniones técnicas, relacionadas directamente al codeo o al diseño de software:
Diseño de software
Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you’ll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don’t think about some big picture and fancy design. If it doesn’t solve some fairly immediate need, it’s almost certainly over-designed. And don’t expect people to jump in and help you. That’s not how these things work. You need to get something half-way useful first, and then others will say “hey, that almost works for me”, and they’ll get involved in the project.
Linux Times (2004-10-25).
Don’t underestimate the power of survival of the fittest. And don’t ever make the mistake that you can design something better than what you get from ruthless massively parallel trial-and-error with a feedback cycle. That’s giving your intelligence much too much credit. Quite frankly, Sun is doomed. And it has nothing to do with their engineering practices or their coding style.
Torvalds, Linus (2001-11-30). Coding style – a non-issue. Retrieved on 2010-03-25.
Why don’t we write code that just works? Or absent a “just works” set of patches, why don’t we revert to code that has years of testing? This kind of “I broke things, so now I will jiggle things randomly until they unbreak” is not acceptable. […] Don’t just make random changes. There really are only two acceptable models of development: “think and analyze” or “years and years of testing on thousands of machines”. Those two really do work.
Torvalds, Linus (2011-04-13). Linux 2.6.39-rc3. Retrieved on 2011-04-21.
“Regression testing”? What’s that? If it compiles, it is good; if it boots up, it is perfect.
Torvalds, Linus (1998-04-08). Message. linux-kernel mailing list. IU. Retrieved on 2006-08-28.
…git actually has a simple design, with stable and reasonably well-documented data structures. In fact, I’m a huge proponent of designing your code around the data, rather than the other way around, and I think it’s one of the reasons git has been fairly successful […] I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Torvalds, Linus (2006-06-27). Message to Git mailing list. Retrieved on 2006-08-28.
Sometimes “pi = 3.14” is (a) infinitely faster than the “correct” answer and (b) the difference between the “correct” and the “wrong” answer is meaningless. And this is why I get upset when somebody dismisses performance issues based on “correctness”. The thing is, some specious value of “correctness” is often irrelevant because it doesn’t matter. While performance almost always matters. And I absolutely detest the fact that people so often dismiss performance concerns so readily.
Git mailing list, Fri, 8 Aug 2008
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.
Torvalds, Linus (2009-03-25). Message to Linux kernel mailing list. Retrieved on 2009-03-25.
Evidentemente, Torvalds es un pragmático, al que no le gusta la sobreingeniería. Es muy interesante su punto de vista sobre empezar proyectos chicos cuyo objetivo es específico y definido, y después ir agregándole funcionalidad sólo en la medida que lo necesite. Es decir, hacer el software a medida del problema, cosa que ya es bastante complicada, y no a medida de teorías o futuros que no están directamente relacionados con el problema.
Algunas otras frases que me dejaron pensando, esta vez relacionadas a temas mas diversos:
Your problem has nothing to do with git, and everything to do with emacs. And then you have the gall to talk about “Unix design” and not gumming programs together, when you yourself use the most gummed-up piece of absolute sh*t there is!
Torvalds, Linus (2008-12-17). Message. Git mailing list. Gmane. Retrieved on 2008-12-18.
An infinite number of monkeys typing into GNU emacs would never make a good program.
Linux 1.3.53 CodingStyle documentation (1995). Retrieved on 2011-08-13.
For example, the GPLv2 in no way limits your use of the software. If you’re a mad scientist, you can use GPLv2’d software for your evil plans to take over the world (“Sharks with lasers on their heads!!”), and the GPLv2 just says that you have to give source code back. And that’s OK by me. I like sharks with lasers. I just want the mad scientists of the world to pay me back in kind. I made source code available to them, they have to make their changes to it available to me. After that, they can fry me with their shark-mounted lasers all they want.
Lyons, Daniel (2006-03-09). “Linux Licensing”. Forbes. Retrieved on 2006-08-28.
Al filo del peligro
…the Linux philosophy is “laugh in the face of danger”. Oops. Wrong one. “Do it yourself”. That’s it.
Torvalds, Linus (1996-10-16). Post. linux.dev.kernel newsgroup. Google Groups. Retrieved on 2006-08-28.
Is “I hope you all die a painful death” too strong?
Linus to the hardware manufacturers that refuse to release the specifications of their hardware so they could operate with the Linux kernel.
Torvalds, Linus (2007-08-22). Linus Torvalds talks future of Linux. Retrieved on 2007-08-22.
Controlling a laser with Linux is crazy, but everyone in this room is crazy in his own way. So if you want to use Linux to control an industrial welding laser, I have no problem with your using PREEMPT_RT.
Torvalds, Linus (2007). Kernel development..
No. That’s it. The cool name, that is. We worked very hard on creating a name that would appeal to the majority of people, and it certainly paid off: thousands of people are using linux just to be able to say “OS/2? Hah. I’ve got Linux. What a cool name”. 386BSD made the mistake of putting a lot of numbers and weird abbreviations into the name, and is scaring away a lot of people just because it sounds too technical.
Torvalds, Linus (1993-03-16). Post. comp.unix.pc-clone.32bit. Google Groups. Retrieved on 2011-02-19.
Let’s put it this way: if you need to ask a lawyer whether what you do is “right” or not, you are morally corrupt. Let’s not go there. We don’t base our morality on law.
First off, I’m actually perfectly well off. I live in a good-sized house, with a nice yard, with deer occasionally showing up and eating the roses (my wife likes the roses more, I like the deer more, so we don’t really mind). I’ve got three kids, and I know I can pay for their education. What more do I need? The thing is, being a good programmer actually pays pretty well; being acknowledged as being world-class pays even better. I simply didn’t need to start a commercial company. And it’s just about the least interesting thing I can even imagine. I absolutely hate paperwork. I couldn’t take care of employees if I tried. A company that I started would never have succeeded – it’s simply not what I’m interested in! So instead, I have a very good life, doing something that I think is really interesting, and something that I think actually matters for people, not just me. And that makes me feel good.
…you might as well skip the Xmas celebration completely, and instead sit in front of your linux computer playing with the all-new-and-improved linux kernel version.