[Here’s another one in the long list of ideas I’d like to execute but will probably never have time.]
If kids learn programming these days, it’s usually LOGO or BASIC or some other training-wheels language. This is no way to breed the next generation of hackers. And I’m sure there are geeks around the world who would love their sons, daughters, nephews and nieces to get into programming, but look down the shelves of their bookshop with a cry of despair. It seems to be a choice between “Visual Basic for Dummies”, “Programming Excel” and “Learn C in 24 Easy Lessons”. As Dijkstra famously said, “”It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.” And when you are learning to program, you want to write programs which do stuff, not have to spend ages in C managing memory and making sure your strings are terminated with \0.
Sometimes these books come with a CD, containing a cut-down version of a commercial development environment they are hoping you will buy, and perhaps a weedy editor, all running under Windows with no source code available. What sort of example is that to set? Trying to learn to hack on a Microsoft Windows machine or any other closed-source system is like trying to learn to dance while wearing a body cast.
The obvious problem is that, before the revolution, most kids will still have Windows on their home computer, and parents tend to frown on suggestions from their 12-year-old which go along the lines of “Hey, Dad, there’s this cool new operating system – er, that’s like software which controls the computer – called Linux that I’d like to use to learn to program. Can I install it on our computer alongside Windows? It probably won’t mess it up. I promise.” The publishing company might also quail at the thought of the tech support calls.
So, the book would include either a Linux LiveCD, or something based on coLinux which allows you to boot your Linux desktop in a Windows window. Then, of course, you can give them access to decent free editors, compilers, scripting languages, webservers, development environments etc. etc. All the manuals, references and source code samples for the languages and projects would be pre-installed. It would use various cool loopback/filesystem overlay tricks that the LiveCD community have invented to store all the kid’s programs and other configuration data on the computer’s real hard drive. And, of course, it would include the source for, and ability to rebuild, all the tools – and at least one project would involve hacking on, say, the editor to add a new feature to it.
How compelling would that be?
 Of course, in the real world, you wouldn’t be able to use that title :-(