I've probably read this a dozen times. I used to read it for motivation.
"Trying to learn to hack on a Microsoft Windows machine or under any other closed-source system is like trying to learn to dance while wearing a body cast."
I never agreed with this. The only time it's possibly a problem is if you want to learn about operating systems, and in that case the source to a current release of the Linux kernel is probably too complex. You'd be better off running Minix under a virtual machine, which you can do in Windows (or Mac OS X, or other proprietary OS) just fine.
A much more compelling argument is it's much easier to experiment with and install open source software on systems that have package management systems like apt-get. Certain excellent pieces of software run best on Unix-like OSes: Emacs, the MATLAB clone Octave, numerical libraries like ATLAS and GSL, Intel's LAPACK implementation, etc.
Whether you have the source to your kernel in particular is irrelevant in all of this and has everything to do with the open source community and traditions surrounding free software instead.
I view things this way because I've always cared more about making enduser applications/solutions instead of libraries and systems packages.
try installing something like LFS (Linux from scratch) and see how much you learn about Linux. Maybe I'm just old school but even on Windows I was always studying the OS internals, the specs of the various protocols and the details of the filesystem. The difference is in Linux I have access to the sourcecode so in addition to reading a book on the specs I can study the implementation ad well.
Does this really make me a better programmer? I hope so. But it might be just an extreme form of procrastination.
There's a big difference between operating systems which provide a C compiler by default and those that don't. About 10 years ago, the distinction wasn't the type of operating system but the vendor. Windows and Irix didn't have a C compiler by default. Linux distros did have a C compiler. Other languages, such as Perl, PHP, Java, Python and Ruby, weren't available by default on most platforms or didn't exist. So, you got a C compiler, if you were lucky. You got Perl if you were very lucky.
Of course, you can install interpreters and compilers on operating systems but, because there is no default, the userbase is instantly split. For example, those using Sun's C compiler versus those using gcc. Hardware was also more diverse. So, you could have a programming problem which was specific to a subset of processor, hardware, operating system type, operating system version, language and choice of compiler.
Nowadays, there's a fairly consistent base of gcc installs with a fairly consistent base of Perl, PHP, Java, Python and Ruby built on top. So, someone else is much more likely to have already solved a problem that you have encountered.
Anyhow, a closed-source operating system is less likely to be supplied with programming languages and you'll be more likely to encounter further barriers as you proceed.
"Eric Raymond's thoughts on this topic are here; his HOWTO describes how to join "hacker culture." The culture isn't really necessary to participate in free software projects though, IMO. As long as you follow the community way-of-working you don't have to get into the social aspects (unless you'd like to)."
Attitude #2 is precisely what our startup http://bug.gd is intended for:
2. No problem should ever have to be solved twice.
[...]
To behave like a hacker, you have to believe that the thinking time of other hackers is precious — so much so that it's almost a moral duty for you to share information, solve problems and then give the solutions away just so other hackers can solve new problems instead of having to perpetually re-address old ones.
"During the first ten years of this HOWTO's life, I reported that from a new user's point of view, all Linux distributions are almost equivalent. But in 2006-2007, an actual best choice emerged: Ubuntu."
Ubuntu sort of spoils users by making a fancy GUI available for most every aspect of system management and administration. When I was starting out with Linux, I must've went through about a half dozen of broken Slackware installs (and a lot of banging my head on the keyboard) before I really got the hang of how to work with a Unix system, but it was a great learning experience nonetheless.
This isn't to say that Ubuntu isn't a great distro--it is, but I'm afraid that its ease of use impedes the whole "learning to be a hacker" process, while other distros practically force you to learn a lot to use them, and that's a Good Thing.
I'm afraid that its ease of use impedes the whole "learning to be a hacker" process
I have extensive graduate training in the art of building transistors from raw silicon. I guess I'm some sort of god in your world. :)
In my world, however, building transistors from raw silicon is an esoteric skill that doesn't have much use. Most of us prefer to spend a few bucks to buy our transistors by the billion, because transistors are a solved problem.
And I'm happy to use Ubuntu and the Mac to actually get things done, rather than pretend that repeatedly fixing bugs in the Slackware installer represents a valuable form of education.
Think about an analogy with python. Learning C first would force you to learn memory management. Python doesn't, and it's easier to learn programming because of it.
To master Python, you need to understand C. It comes with time - at the right time.
I think it's more likely that being hard to use would deter users who don't care what makes computers tick from using it, not force them to learn. They'd just go back to Windows.
"Don't call yourself a ‘cyberpunk’, and don't waste your time on anybody who does."
Whoa! Where did that come from? Perhaps ESR had a bad experience watching Blade Runner or something, but this is entirely uncalled for. Quite frankly, cyberpunk remains fresh and still alive and happily uninfected by the mainstream -- just how we like it.
I think what he's getting at is that while cyperpunk and hacking culture are not mutually exclusive, they do not entail each other.
From what I've seen a cyberpunk "hacker" is usually the "other" kind of hacker (again, not mutually exclusive)
I'm sure ESR wouldn't tell you to not waste your time on an amazing hacker (in the original sense of the word) who also happened to be into "cyperpunk", but most cyberpunks are not amazing hackers.
of course no one should want to be a hacker ... in the same sense that no one want to be a book reader, you just can't suddenly force it on you to like reading book! either you do or you don't like to read, think about what you read and than discuss what you read ... if this ever gets a better name than a 'book reader' ... you can't choose to be one
i am of course a book reader
anyway, if you ever decide to be hacker, please read the article in the link above, actually i would recommend you read all of esr writing, particulary the cathedral and the bazaar ... learn python too, and hack on the twistedmatrix networking framework... this will surely make u a great hacker ... :)))
"Trying to learn to hack on a Microsoft Windows machine or under any other closed-source system is like trying to learn to dance while wearing a body cast."
I never agreed with this. The only time it's possibly a problem is if you want to learn about operating systems, and in that case the source to a current release of the Linux kernel is probably too complex. You'd be better off running Minix under a virtual machine, which you can do in Windows (or Mac OS X, or other proprietary OS) just fine.
A much more compelling argument is it's much easier to experiment with and install open source software on systems that have package management systems like apt-get. Certain excellent pieces of software run best on Unix-like OSes: Emacs, the MATLAB clone Octave, numerical libraries like ATLAS and GSL, Intel's LAPACK implementation, etc.
Whether you have the source to your kernel in particular is irrelevant in all of this and has everything to do with the open source community and traditions surrounding free software instead.
I view things this way because I've always cared more about making enduser applications/solutions instead of libraries and systems packages.