Professional Documents
Culture Documents
.................................................................................................................. 10
............................................................................................................. 12
................................................................................................... 13
..................................................................................................... 13
.................................................................. 13
...................................................................................................................... 14
............................................................................................................. 14
.............................................................................................................. 14
.......................................................................................................................... 15
.......................................................................................................................... 15
........................................................................................................ 16
.......................................................................................................... 17
..................................................................................................................... 18
.................................................................................................................. 18
................................................................................................................ 18
........................................................................................................................... 19
................................................................................................................. 19
................................................................................................................. 19
............................................................................................................. 20
................................................................................................................................. 20
.................................................................................................................................. 20
........................................................................................................................... 21
.......................................................................................... 21
................................................................................................................. 22
.................................................................................................... 25
................................................................................................................. 25
................................................................................................................. 25
......................................................................................................... 26
............................................................................................................................... 26
........................................................................... 27
................................................................................................................................ 28
............................................................................................................. 28
.................................................................................................................... 29
............................................................................................................... 30
................................................................................................................................ 30
................................................................................................................................ 30
..................................................................................................................... 30
................................................................................................................... 31
.............................................................................................................................. 31
........................................................................................................ 31
.................................................................................................................................. 32
................................................................................................................................ 32
.................................................................................................................... 32
................................................................................................................................. 34
............................................................. 35
............................................................................................................................ 35
........................................................................................................... 35
................................................................................................................ 36
................................................................................................................... 36
........................................................................................................ 36
.................................................................................................................... 37
................................................................................................................................ 37
................................................................................................................................. 37
...................................................................................................................... 38
................................................................................................................................. 38
....................................................................................................... 39
................................................................................................................... 39
.............................................................................................................. 40
................................................................................................................................... 40
................................................................................................................................... 41
............................................................................................................................... 41
........................................................................................................................ 41
.......................................................................................................................... 42
................................................................................................... 42
................................................................................................................................ 42
............................................................................................................................... 43
............................................................................. 43
......................................................................................................... 44
............................................................................................................................. 44
............................................................................................... 44
.............................................................................................................................. 44
.................................................................................. 45
........................................................................................................... 45
.................................................................................................................. 45
................................................................................................................................. 46
................................................................................................................ 47
.................................................................................................. 49
C++................................................................................................................................. 50
................................................................................................................................ 56
...................................................................................................................... 57
................................................................................................................... 57
............................................................................................................ 57
.................................................................................................... 58
....................................................................................... 59
....................................................................................... 59
.......................................................................................... 59
.............................................................. 59
.................................................... 60
......................................................................................................................... 60
.................................................................................................... 61
........................................................................................................... 61
......................................................................................................................... 61
............................................................................................................................. 62
................................................................................................................. 62
...................................................................................................................... 62
.................................................................................................. 63
..................................................................................................................... 63
..................................................................................................................... 63
.............................................................................................. 64
......................................................................................................... 64
......................................................................................................................... 65
.......................................................................................................... 66
...................................................................................................................... 66
..................................................................................................... 68
.......................................................................................................................... 70
..................................................................................................................... 71
.............................................................. 71
............................................................................................................. 73
........................................................................................................... 74
........................................................................................................................ 74
............................................................................................................................. 74
.......................................................................................................................... 75
................................................................................................................... 75
........................................................................................................ 76
.............................................................................................................. 76
..................................................... 77
....................................................................................................................... 82
.......................................................................................................................... 87
................................................................................................................... 87
................................................................................................................ 87
.............................................................................................................. 88
............................................................................................................................... 88
....................................................................................................... 88
................................................................................................. 89
......................................................................................... 97
.................................................................................... 98
.............................................................................................................. 99
.............................................................................................................................. 101
........................................................................................................................ 101
............................................................................................... 102
................................................................................................................ 102
............................................................ 103
............................................................................................... 105
.............................................................................................................. 107
......................................................................................................................... 108
......................................................................................... 111
................................................................... 112
......................................................................................... 115
I'm sure that there is no other person in IT world that can make
you feel the way Linus does. In fact, I think nobody else can afford
managing the communities the way Linus does. Torvalds can get
away saying things like trying to come up with some code of
conduct that says that people should be respectful and polite is
just so much crap and bullshit. I certainly cant and chances are
you cant either.
This book is a collection of Linus Torvalds' best quotes about life,
programming and Linux. You can get it on
https://gum.co/shitlinussays
Happy reading!
Hello everybody out there using minix I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been
brewing since April, and is starting to get ready. I'd like any
feedback on things people like/dislike in minix, as my OS
resembles it somewhat (same physical layout of the file-system
(due to practical reasons) among other things).
I've currently ported bash (1.08) and gcc (1.40), and things seem
to work. This implies that I'll get something practical within a few
months, and I'd like to know what features most people would
want. Any suggestions are welcome, but I won't promise I'll
implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded
fs.
It is NOT portable (uses 386 task switching etc), and it probably
never will support anything other than AT-harddisks, as that's all I
have :-(.
news:comp.os.minix,
August 25, 1991
Do you pine for the nice days of minix-1.1, when men were men
and wrote their own device drivers?
Free minix-like kernel sources for 386-AT, news:comp.os.minix
October 5, 1991
The Hurd 0.0 was released in August 1996 and as of 2015, is still
not complete.
I can (well, almost) hear you asking yourselves "why?". Hurd will
be out in a year (or two, or next month, who knows), and I've
already got minix.
Free minix-like kernel sources for 386-AT, news:comp.os.minix
October 5, 1991
Well, with a subject like this, I'm afraid I'll have to reply.
Apologies to minix-users who have heard enough about linux
anyway. I'd like to be able to just "ignore the bait", but time for
some serious flamefesting!
Well, I probably won't get too good grades even without you: I
had an argument (completely unrelated not even pertaining to
OS's) with the person here at the university that teaches OS
design. I wonder when I'll learn :)
comp.os.minix: LINUX is obsolete
January 31, 1992
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".
When you say, "I wrote a program that crashed Windows," people
just stare at you blankly and say, "Hey, I got those with the
system, for free."
comp.os.linux.development.apps
March 8, 1995
Comments are good, but there is also a danger of overcommenting. NEVER try to explain HOW your code works in a
comment: it's much better to write the code so that the working is
obvious, and it's a waste of time to explain badly written code.
Generally, you want your comments to tell WHAT your code
does, not HOW.
The main reason there are no raw devices [in Linux] is that I
personally think that raw devices are a stupid idea.
LKML
October 17, 1996
Some people have told me they don't think a fat penguin really
embodies the grace of Linux, which just tells me they have never
seen an angry penguin charging at them in excess of 100 mph.
They'd be a lot more careful about what they say if they had.
comp.os.linux.announce newsgroup.
June 09, 1996
Only wimps use tape backup: real men just upload their important
stuff on ftp, and let the rest of the world mirror it ;)
LKML
July 20, 1996
If you still don't like it, that's OK: that's why I'm boss. I simply
know better than you do.
comp.os.linux.advocacy newsgroup.
July 22, 1996
See, you not only have to be a good coder to create a system like
Linux, you have to be a sneaky bastard too ;-)
comp.os.linux.development.system
July 5, 1996
Making Linux GPL'd was definitely the best thing I ever did.
The Pragmatist of Free Software
November 11, 1997
In the extreme case, if it was just you doing all the code, and the rest
of the world quietly used it, would it make sense to give it away free?
Unless you're particularly grateful for other free things you've got off
the Net, would the answer be No?"
I don't necessarily think so. It might be true in certain niche areas,
but almost any project will give a developer that "feel good" feeling
when he has users and he feels he is doing something worthwhile.
I really don't think you need all that much "quid pro quo" in
programming - most of the good programmers do programming
not because they expect to get paid or get adulation by the public,
but because it is fun to program.
What motivates free software developers?
March 02, 1998
I'd like to say that I knew this would happen, that it's all part of
the plan for world domination.
Open Sources: Voices from the Open Source Revolution,
1999
In article <7aresh$mh4$1@news.tuwien.ac.at>,
<tharsos@bigfoot.com> wrote:
>Funny how people tend to quote Linus Torvalds
> on technical issues in order
> to prove a point. I hear the guy barely made it through college.
Actually, I lied about even that. I was thrown out of fourth grade
because I couldn't write my own name, and it's been all downhill
from there.
I had to lie about getting into college just so that I'd have better
chances of making a career here at McDonalds - if you have a
college degree (or you lied about having one), they don't make you
scrape the burger pans.
> Linus might be a fine role model for the Linux clerasil crowd,
> but there are much smarter people than him working in the
> CS field.
I resent your remark about the clerasil crowd. The people I know
wouldn't get a date even if they didn't have bad skin, so they don't
bother with that fancy expensive skin treatment stuff anyway. So
we call ourself the "brown paper bag" crowd - those clerasil guys
are snobs.
I'm a bastard. I have absolutely no clue why people can ever think
otherwise. Yet they do. People think I'm a nice guy, and the fact is
that I'm a scheming, conniving bastard who doesn't care for any
hurt feelings or lost hours of work, if it just results in what I
consider to be a better system. And I'm not just saying that. I'm
really not a very nice person. I can say "I don't care" with a straight
face, and really mean it.
LKML
September 6, 2000
Hey, that's not a bug, that's a feature! You know what the most
complex piece of engineering known to man in the whole solar
system is? Guess what it's not Linux, it's not Solaris, and it's not
your car. It's you. And me. And think about how you and me
actually came about not through any complex design. Right.
"Sheer luck". Well, sheer luck, and:
Free availability and crosspollination through sharing of "source
code", although biologists call it DNA.
A rather unforgiving user environment, that happily replaces bad
versions of us with better working versions and thus culls the herd
(biologists often call this "survival of the fittest").
Massive undirected parallel development ("trial and error").
I'm deadly serious: we humans have never been able to replicate
something more complicated than what we ourselves are, yet
natural selection did it without even thinking. 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.
Coding style - a non-issue
November 30, 2001
You see. I don't think any new thoughts. I think thoughts that
other people have thought, and I rearrange them. But Sara, she
thinks thoughts that never were before.
There are literally several levels of SCO being wrong. And even if
we were to live in that alternate universe where SCO would be
right, they'd still be wrong.
BusinessWeek Online, "Linus Torvalds: SCO Is 'Just Too Wrong'".
February 2, 2004
Anybody who tells me I can't use a program because it's not open
source, go suck on rms. I'm not interested. 99% of that I run tends
to be open source, but that's my choice, dammit.
LKML
October 26, 2004
OK, I admit it. I was just a front-man for the real fathers of Linux,
the Tooth Fairy and Santa Claus.
May, 2004
A lot of people still like Solaris, but I'm in active competition with
them, and so I hope they die.
Torvalds: Waiting To See Sun's Open Solaris
February 1, 2005
I'm always right. This time I'm just even more right than usual.
LKML
July 14, 2005
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.
"Linux Licensing". Forbes.
March 9, 2006
I got slashdotted!
I also claim that Slashdot people usually are smelly and eat their
boogers, and have an IQ slightly lower than my daughters pet
hamster (that's "hamster" without a "p", btw, for any slashdot
posters out there. Try to follow me, ok?).
Furthermore, I claim that anybody that hasn't noticed by now that
I'm an opinionated bastard, and that "impolite" is my middle
name, is lacking a few clues.
Finally, it's clear that I'm not only the smartest person around, I'm
also incredibly good-looking, and that my infallible charm is also
second only to my becoming modesty.
So there. Just to clarify.
Linus "bow down before me, you scum" Torvalds
fa.linux.kernel
April 21, 2006
I like colorized diffs, but let's face it, those particular color choices
will make most people decide to pick out their eyes with a fondue
fork.
And that's not good. Digging in your eye-sockets with a fondue
fork is strictly considered to be bad for your health, and seven out
of nine optometrists are dead set against the practice.
So in order to avoid a lot of blind git users, please apply this patch.
Git mailing list
June 22, 2006
git actually has a simple design, with stable and reasonably welldocumented 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.
Git mailing list.
June 27, 2006
EFI is this other Intel brain-damage (the first one being ACPI).
LKML
May 28, 2007
GCC is crap.
Re: [PATCH] Don't compare unsigned variable for <0 in sys_prctl()
November 28, 2006
I think people can generally trust me, but they can trust me exactly
because they know they don't have to.
LKML
June 7, 2008
Nobody actually creates perfect code the first time around, except
me. But there's only one of me.
Tech Talk: Linus Torvalds on git
October 3, 2007.
If you have ever done any security work and it did not involve
the concept of "network of trust" it wasn't security work, it was
masturbation. I don't know what you were doing. But trust me, it's
the only way you can do security, it's the only way you can do
development.
Tech Talk: Linus Torvalds on git
October 3, 2007
You try to claim that the GPLv3 causes "More developers", and
that, my idiotic penpal, is just crazy talk that you made up.
LKML
June 18, 2007
I don't ask for money. I don't ask for sexual favors. I don't ask for
access to the hardware you design and sell. I just ask for the thing I
gave you: source code that I can use myself.
LKML
June 14, 2007
Me, I just don't care about proprietary software. It's not "evil" or
"immoral," it just doesn't matter. I think that Open Source can do
better, and I'm willing to put my money where my mouth is by
working on Open Source, but it's not a crusade it's just a
superior way of working together and generating code.
It's superior because it's a lot more fun and because it makes
cooperation much easier (no silly NDA's or artificial barriers to
innovation like in a proprietary setting), and I think Open Source
is the right thing to do the same way I believe science is better than
alchemy. Like science, Open Source allows people to build on a
solid base of previous knowledge, without some silly hiding.
But I don't think you need to think that alchemy is "evil." It's just
pointless because you can obviously never do as well in a closed
environment as you can with open scientific methods.
Why I 'Absolutely Love' GPL Version 2
March 19, 2007
I have an ego the size of a small planet, but I'm not always right
[...].
Re: clarification on git, central repositories and commit access lists. kde-coredevel@kde.org
August 20, 2007
C++
From: Dmitry Kakurin
Subject: Re: Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 04:48:47 GMT
> As it is right now, it's too hard to see the high-level logic thru
> this endless-busy-work of micro-managing strings and memory.
Total BS. The string/memory management is not at all relevant.
Look at the code (I bet you didn't). This isn't the important, or
complex part.
> IMHO Git has a brilliant high-level design (object database,
> using hashes, simple and accessible storage for data and
> metadata). Kudos to you!
> The implementation: a mixture of C and shell scripts, command
> line interface that has evolved bottom-up is so-so.
The only really important part is the design. The fact that some of
it is in a "prototyping language" is exactly because it wasn't the
core parts, and it's slowly getting replaced. C++ would in no way
have been able to replace the shell scripts or perl parts.
And C++ would in no way have made the truly core parts better.
> > and comparing C to assembler just shows that you don't have
>> a friggin idea about what you're talking about.
So LSM stays in. No ifs, buts, maybes or anything else. When I see
the security people making sane arguments and agreeing on
something, that will change. Quite frankly, I expect hell to freeze
over before that happens, and pigs will be nesting in trees. But hey,
I can hope.
Pluggable Security
October 1, 2007
The fact is, there aren't just two sides to any issue, there's almost
always a range of responses, and "it depends" is almost always the
right answer in any big question.
Linus' blog: Black and white.
November 2, 2008
Real quality means making sure that people are proud of the code
they write, that they're involved and taking it personally.
Interview with Linus Torvalds of The Linux Foundation.
September 15, 2008
Anyway, the theory goes that it's better that people know how you
feel than then to be surprised by it later when you simply refuse to
take their code. Oreven worseif you end up taking crap code
because you feel it's too hard to call it crap and to tell them why
you refuse.
CIO.com,
Five Things Linus Torvalds Has Learned About Managing Software Projects
August 4, 2008
Crying that it's an application bug is like crying over the speed of
light: you should deal with reality, not what you wish reality was.
Theory and practice sometimes clash. And when that happens,
theory loses. Every single time.
LKML
March 25, 2009
I may make jokes about Microsoft at times, but at the same time, I
think the Microsoft hatred is a disease.
Microsoft Patches Linux; Linus Responds
June 22, 2009
There are "extremists" in the free software world, but that's one
major reason why I don't call what I do "free software" any more. I
don't want to be associated with the people for whom it's about
exclusion and hatred.
Microsoft Patches Linux; Linus Responds.
June 22, 2009
Every time I see some piece of medical research saying that caffeine
is good for you, I high-five myself.
Because I'm going to live forever.
Linus Blog
August 3, 2010
And pointing fingers at Adobe and blaming them for creating bad
software is doubly irresponsible if you are then not willing to set a
higher standard for your own project. And "not my problem" is
not a higher standard.
Quite frankly, I find your attitude to be annoying and downright
stupid. So please just fix it.
How hard can it be to understand the following simple sentence:
THE USER DOESN'T CARE.
Pushing the blame around doesn't help anybody. The only thing
that helps is being helpful, not being obstinate.
November 30, 2010
Standards are paper. I use paper to wipe my butt every day. That's
how much that paper is worth.
Reality is what matters.
November 30, 2010
So me and the wife were completely out of our depth, and knew
absolutely nobody. We go out for a date night every week, so we a
fair number of movies, but we really aren't movie people - the
kinds of movies we go to don't make a huge impression. So there
we were, cram-packed with celebrities, not remembering names or
faces.
The good news was, that as Tove said, there was no real downside.
Nobody knew us, and nobody would ever remember us the next
day. So we could go whole retard quite openly, and brazenly just
ask people "You look really familiar, who are you?". Which we
did. With some discreet google image searches when we could
guess, and just wanted to verify it ("John Cusack or Paul Rudd?").
Everybody seemed to take it in good cheer. We interrupted David
Spade chatting up Natalie Portman and Mila Kunis (that's what
Tove says, I was oblivious - it's those famous geek social graces
again. I told her I'm sure I'd have noticed Natalie Portman and that
she can't possibly have been there, but whatever), and Tove pissed
off Warren Beatty by asking his name not just once, but twice.
So here's a shout-out to my new BFF's Jon Hamm and DJ.
We probably won't be invited again. But we have pictures for the
kids, to prove to them that their parents are cool people.
Linus' Blog,
February 28, 2011
It seems totally bogus. We've always made it very clear that the
kernel system call interfaces do not in any way result in a derived
work as per the GPL, and the kernel details are exported through
the kernel headers to all the normal glibc interfaces too.
The kernel headers contain various definitions for the interfaces to
user space, and we even actively try to make sure that the headers
can be used by user space (and try to mark which of the headers
are expected to be usable in such a way). Exactly because we know
user space needs those details in order to interact with the kernel.
So I haven't looked at exactly what Google does with the kernel
headers, but I can't see that they'd want to do anything
fundamentally different from glibc in this respect.
Of course, we do have our own 'internal' headers too, and we have
stuff that is meant to be relevant only for the kernel. But there
would be no point for Google to even use those, since they are
useless outside of the kernel, so I don't see what the whole
brouhaha would be all about. Except if it's somebody politically
motivated (or motivated by some need of attention)," he
continued.
If it's some desperate cry for attention by somebody, I just wish
those people would release their own sex tapes or something,
rather than drag the Linux kernel into their sordid world.
Letter to ITWorld
March 21, 2011
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.
gmane.linux.kernel, Linux 2.6.39-rc3
April 13, 2011
Technologies that lock things down tend to lose in the end. People
want freedom and markets want freedom.
Im an optimist: openness is successful in the long run, secure boot
is another one of these passing fads.
LinuxCon Brazil
November 18, 2011
Venting.
I don't think I can talk about "security" people without cursing, so
you might want to avert your eyes now.
I gave OpenSUSE a try, because it worked so well at install-time
on the Macbook Air, but I have to say, I've had enough. There is
no way in hell I can honestly suggest that to anybody else any
more.
I first spent weeks arguing on a bugzilla that the security policy of
requiring the root password for changing the timezone and adding
a new wireless network was moronic and wrong.
I think the wireless network thing finally did get fixed, but the
timezone never did - it still asks for the admin password.
And today Daniela calls me from school, because she can't add the
school printer without the admin password.
Whoever moron thought that it's "good security" to require the
root password for everyday things like this is mentally diseased.
So here's a plea: if you have anything to do with security in a
distro, and think that my kids (replace "my kids" with "sales
people on the road" if you think your main customers are
businesses) need to have the root password to access some wireless
network, or to be able to print out a paper, or to change the dateand-time settings, please just kill yourself now. The world will be a
better place.
.. and now I need to find a new distro that actually works on the
Macbook Air.
Google+
February 28, 2012
I really hate big laptops. I can't understand people who lug around
15" (or 17"!) monsters. The right weight for a laptop is 1kg, no
more.
Obsessing about things is important, and things really do matter,
but if you can't let go of them, you'll end up crazy.
Slashdot Interview
October 11, 2012
LKML
December 23, 2012
Of course, I'd also suggest that whoever was the genius who
thought it was a good idea to read things ONE FUCKING BYTE
AT A TIME with system calls for each byte should be retroactively
aborted. Who the fuck does idiotic things like that? How did they
not die as babies, considering that they were likely too stupid to
find a tit to suck on?
LKML
June 6, 2012
I also refuse to pull commits that have been made with the Github
web interface. Again, the reason for that is that the way the Github
web interface work, those commits are invariably pure crap.
Commits done on Github invariably have totally unreadable
descriptions, because the Github commit making thing doesn't do
*any* of the simplest things that the kernel people expect from a
commit message:
- no "short one-line description in the first line"
- no sane word-wrap of the long description you type: github
commit messages tend to be (if they have any description at
all) one long unreadable line.
- no sign-offs etc that we require for kernel submissions.
Github could make it easy to write good commit messages and
enforce the proper "oneliner for shortlogs and gitk, full
explanation for full logs". But Github doesn't. Instead, the Github
"commit on the web" interface is one single horrible text-entry
field with absolutely no sane way to write a good-looking message.
Maybe some of this has changed, I haven't checked lately. But in
general, the quality of stuff I have seen from people who use the
Github web interfaces has been so low that it's not worth my time.
I'm writing these explanations in the (probably vain) hope that
people who use Github will actually take them to heart, and
Github will eventually improve. But right now Github is a total
ghetto of crap commit messages and unreadable and unusable pull
requests.
And the fact that other projects apparently have so low
expectations of commit messages that these things get used is just
sad. People should try to compare the quality of the kernel git logs
with some other projects, and cry themselves to sleep.
What I dislike about the Github thing is that it's not "crap
happens, we'll try to minimize it", it's "crap absolutely WILL
happen". Instead of trying to minimize it, the commit message
editor actively revels in it, and makes it hard not to make a crappy
message.
Similarly, the pull request interface of Github makes it literally
impossible to make a good pull request. You literally cannot make
a good pull request using the Github web interface.
So right now, I encourage people to use Github as a hosting site,
but as a hosting site only. Don't create commits there, and don't
use Github for pull requests. Do your commits on your own
machine, push them to Github, and then when you're ready for a
pull request, again do it on your own machine and email it to the
maintainer that way.
So I'm really not trying to hate on Github. I only despise a few of
the small details of Github.
I read email. I don't look at web interface.
Github as a hosting site for open-source (or closed, for that
matter) projects is wonderful. Github as a place to generate
commits and pull requests? Not so much.
A good example of a pull request contains:
-
> Huh. I prefer sizeof without parens, like I prefer return without
parens.
Umm. The two have nothing to do with each other.
want you writing kernel code. There's a reason we have the coding
standards. They aren't for the *compiler*. They are for *humans*.
And humans should think of sizeof() as a function, not as some
ass-backwards special case C parsing rule that is subtle as hell.
July 11, 2012
Intelligence is the ability to avoid doing work, yet getting the work
done.
January 29, 2013
I hope I won't end up having to hunt you all down and kill you in
your sleep.
Google+
2013-04-05
Whoever came up with "hold the shift key for eight seconds to
turn on 'your keyboard is buggered' mode" should be shot.
Google+
June 23, 2013
Yes. And I do it partly (mostly) because it's who I am, and partly
because I honestly despise being subtle or "nice".
The fact is, people need to know what my position on things are.
And Ican't just say "please don't do that", because people won't
listen. Isay "On the internet, nobody can hear you being subtle",
and I mean it.
And I definitely am not willing to string people along, either. I've
had that happen too - not telling people clearly enough that I don't
like their approach, they go on to re-architect something, and get
really upset when I am then not willing to take their work.
Sarah, first off, I don't have that many tools at hand. Secondly, I
simply don't believe in being polite or politically correct. And you
can point at all those cultural factors where some cultures are not
happy with confrontation (and feel free to make it about gender
too - I think that's almost entirely cultural too). And please bring
up "cultural sensitivity" while at it. And I'll give you back that
same "cultural sensitivity". Please be sensitive to my culture too.
The "polite Linus" example that you point to? That was a
maintainer asking for direction for when things went wrong and
*before* sending me something dubious. Of course I'm polite then.
Sarah, I don't have Tourettes syndrome. You seem to think that
my cursing is uncontrolled and random. I argue that it has causes.
Big difference.
July 15, 2013
> BTW, I was amazed that you managed to get him have a much
softer tone in his last e-mail, you probably found a weakness here
in his management process :-)
Hey, I like arguing, and "cursing" and "arguing" are actually not at
all the same thing.
And I really don't tend to curse unless people are doing something
stupid and annoying. If people have concerns and questions that I
feel are valid, I'm more than happy to talk about it.
I curse when there isn't any argument. The cursing happens for the
"you're so fucking wrong that it's not even worth trying to make
logical arguments about it, because you have no possible excuse"
case.
.. and sometimes people surprise me and come back with a valid
excuse after all. "My whole family died in a tragic freak accident
and my pony got cancer, and I was distracted".
And then I might even tell them I'm sorry.
No. Not really.
2013-07-15
Bullshit.
The thing is, the "victim card" is exactly about trying to enforce
your particular expectations on others, and trying to do so in a
very particular way. It's the old "think of the children" argument.
And it's bogus. Calling things "professional" is just more of the
same - trying to enforce some kind of convention on others by
trying to claim that it's the only acceptable way.
Since you seem to want to keep this in public, I'll justcut-and-paste
from my reply, so you have already seen this part of my argument,
it's only slightly edited because now I'm no longer typing on my
cellphone.
The thing is, different people act and react differently. On both
sides. And I think we should recognize that and also allow for
that.
And hey, I don't actually think we've personally even had any
problems. And I realize that you may react very strongly and get
nervous about us having problems, but realistically, do you
actually expect to like all the other kernel engineers?
And equally importantly, not everybody has to like you, or
necessarily think they have to be liked by you. OK?
So as far as I'm concerned, the discussion is about "how to work
together DESPITE people being different". Not about trying to
make everybody please each other. Because I can pretty much
guarantee that I'll continue cursing. To me, the discussion would
be about how to work together despite these kinds of cultural
differences, not about "how do we make everybody nice and sing
songs sound the campfire"
Do you think you might be interested in that kind of discussion
instead of the "you are abusing me" kind of discussion?
Because if you want me to "act professional", I can tell you that I'm
not interested. I'm sitting in my home office wearing a bathrobe.
The same way I'm not going to start wearing ties, I'm *also* not
going to buy into the fake politeness, the lying, the office politics
and backstabbing, the passive aggressiveness, and the buzzwords.
Because THAT is what "acting professionally" results in: people
resort to all kinds of really nasty things because they are forced to
act out their normal urges in unnatural ways.
Re: 3.10.1-stable review,
July 15, 2013
Hello everybody out there using Linux I'm doing a (free) operating system (just a hobby, even if it's big
and professional) for 486+ AT clones and just about anything else
out there under the sun. This has been brewing since april 1991,
and is still not ready. I'd like any feedback on things people
like/dislike in Linux 3.11-rc7.
I originally ported bash(1.08) and gcc(1.40), but others have taken
over user space and things still seem to work. This implies that I'll
get the final 3.11 release within a week, and I'd like to know what
features most people would want. Any suggestions are welcome,
but I won't promise I'll implement them :-)
Yeah, I don't really want to get feature requests this late in the rc
series.
But it is 22 years today since that email, and I would like people to
try the current 3.11-rc7 kernel I just cut and uploaded to the usual
places.
August 26, 2013
I do hope that the desktop people would try to work together and
work more on technology that trying to make the log-in screen
look really nice.
LinuxCon Europe, Edinburgh,
October 23, 2013
One of the things, none of the distributions have ever done right is
application packaging [...] making binaries for Linux desktop
applications is a major fucking pain in the ass.
DebConf 14: Q&A with Linus Torvalds
October 3, 2014
[GPL] version 3 was not a good "here we give you version 2" and
then we try to sneak in this new rules and try force everyone to
upgrade; that was the part I disliked. The FSF did really sneaky
stuff, downright immoral in my opinion.
DebConf 14: Q&A with Linus Torvalds
October 3, 2014
The boldest prediction I can say is, I will probably release rc1 in
about a week.
LinuxCon Europe 2014,
October 18, 2014
Some people think I'm nice and are shocked when they find out
different. I'm not a nice person, and I don't care about you. I care
about the technology and the kernelthat's what's important to
me.
The most important part of open source is that people are allowed
to do what they are good at. All that diversity stuff is just details
and not really important.
- Linux.conf.au Conference in Auckland, New Zealand,
January 15, 2015
What I wanted to say and clearly must have done very badly
is that one of the great things about open source is exactly the
fact that different people are so different. I think people sometimes
look at it as being just 'programmers,' which is not true. It's about
all the people who are more oriented toward commercial things,
too. It's about all those people who are interested in legal issues
and the social ones, too!
There's a lot of talk about gender and sexual preferences and race,
but we're different in so many other ways too.
'Open source' as a term and as a movement hasn't been about 'you
have to be a believer. It's not a religion. It's not an 'us vs them'
thing. We've been able to work with all those 'evil commercial
interests' and companies who also do proprietary software. And I
think that was one of the things that the Linux community (and
othersdon't get me wrong, it's not unique to us) did and does
well.
Which is not to say that a lot of people aren't around because they
believe it's the ethical thing to do (I do myself too). But you don't
have to believe that, and you can just do it because it's the most
fun, or the most efficient way to do technology development.
-
I don't know where you happen to be based, but this 'you have to
be nice' seems to be very popular in the US. This concept is like an
ideology. The same way we have developers and marketing people
and legal people who speak different languages, I think we can
have some developers who are used toand prefera
more confrontational style, and still also have people who don't.
Brainstorming? Maybe it works for some people, but I happen to
simply not believe in it. I'd rather be really confrontational, and
bad ideas should be [taken] down aggressively. Even good ideas
need to be vigorously defended.
Maybe it's just because I like arguing. I'm just not a huge believer
in politeness and sensitivity being preferable over bluntly letting
people know your feelings. But I also understand that other people
are driven away by cursing and crass language when it all gets a bit
too carried away. The open source movement might simply need
more people who are good at mediating.
-
I'd expect just more of (and much fancier) rather targeted AI,
rather than anything human-like at all. Language recognition,
pattern recognition, things like that.
I just don't see the situation where you suddenly have some
existential crisis because your dishwasher is starting to discuss
Sartre with you. The whole 'Singularity' kind of event? Yeah, it's
science fiction, and not very good Sci-Fi at that, in my opinion.
Unending exponential growth? What drugs are those people on?
slashdot.org
July 8, 2015
keeper), because a few lines down the mistake then turns into pure
and utter garbage.
It's garbage that was basically encouraged by the first mistake
(thinking that C allows array arguments), namely:
for (i = 0; i < sizeof(mcs_mask); i++)
and the argument should just have been declared as the pointer it
actually is.
A later patch then added onto the pile of manure by adding
another broken array argument, but at least that one then used the
proper loop for traversal of that array.
The fact that I notice this bug from a very basic "let's just compile
each pull request and make sure it isn't complete crap" is sad.
Now, it looks like the code was just moved, and the "sizeof()" was
initially correct (because it was a size of an actual array). Well, it
was "correct" in the sense that it generated the right code, even if
the whole confusion between "number of entries" and "size in
bytes" was still there. Then it got moved and turned from
"confused but happens to generate correct code" into "buggy pile
of bovine manure". See commit 90c66bd2232a ("mac80211:
remove ieee80211_tx_rate dependency in rate mask code").
So I can see how this bug happened, and I am only slightly upset
with Lorenzo who is the author of that commit.
What I can't see is why the code has existed in at least two
maintainer trees (Johannes' and David's) for a couple of weeks,
and nobody cared about the new compiler warnings? And it was
sent to me despite that new warning?
I really want people to take a really hard look at functions that use
arrays as arguments. It really is very misleading, even if it can look
"prettier", and some people will argue that it's "documentation"
about how the pointer is a particular size. But it's neither. It's
basically just lying about what is going on, and the only thing it
documents is "I don't know how to C". Misleading documentation
isn't documentation, it's a mistake.
I see it in that file for at least the functions rate_idx_match_mask()
and rate_control_cap_mask(). I tried - and failed - to come up
with a reasonable grep pattern to try to see how common it is, and
I'm too lazy to add some sparse check for it.
Please people. When I see these kinds of obviously bogus code
problems, that just makes me very upset. Because it makes me
worry about all the non-obvious stuff that I miss. Sadly, this time I
had pushed out the merge early (because I wanted to test the
wireless changes on my laptop), so now the bug is out there.
I'm not sure what the practical impact of the bug is. Yes, it only
traverses four or eight rate entries (depending on 32-bit or
64-bitness of the kernel) out of the ten that it should. But maybe in
practice one of the first entries are always good enough matches.
So maybe testing doesn't actually show this bug, but I sure wish
people just took compiler warnings more seriously (and were a lot
more careful about moving things to functions, and never ever
used the "function argument is an array" model).
LKM mailing list,
September 03, 2015
I'm happy to see that ARM is making progress. One of these days,
I will actually have a machine with ARM. They said it would be
this year, but maybe it'll be next year. 2016 will be the year of the
ARM laptop.
LinuxCon Europe, Dublin
October 9, 2015