Free software has always been touted as being a great opportunity for education. After all, all of the code can be examined, modified, studied, and contributed to a greater good. In this respect, the GNU Project (and hundreds of other Free Software projects) have contributed to the academic studies of potentially millions of people around the globe. An entire generation of programmers has grown out of this. Granted, Free Software code is not without is problems, but with enough people to observe these flaws and speculate upon them, any problem is serviceable, any problem can be fixed.
Lately, the trend of "Anyone can contribute" is taking a turn for the better as established developers and teams are looking at new ways to help lower the bar for the next wave of developers to come in. That's right, they're looking at how to make it easier for kids to not only program, but contribute to the Free Software community at large. I think this is probably the coolest "educational" program ever. As far as I can tell, there are a few current initiatives worth mentioning.
First and foremost, the GNU Generation Project went through a 2.0 reboot. According to their project webpage,
GNU Generation is an ongoing community and competition to involve pre-university and high school students (approximately age 13-18) in Free Software. Once registered, students work on a project. Each year, participants will be evaluated based on their contribution to Free Software. All active contributors will receive a complementary membership to the FSF, and the top contributors will win a GNU/Linux netbook!
Right off the bat, that is awesome. It's a project to get kids interested in Free Software, with a free membership to the FSF and possibly a netbook to boot. Awesome. So, what do they have the kids do? Programming? Bug fixing?
It turns out that it's much more than that. Hop on over to the task list, and you'll find that they have members making postsers to promote the project, translate a piece of documentation into a different language, volunteer to fix bugs found on OpenHatch, Promote OGG to local radio stations, write about Free Software in school publications, and submit detailed bug reports to developers. They're not just programmers or some LUG full of teenagers, they're activists. They're getting out and actually doing something, and that to me is phenomenal.
It makes me wish I were a few years younger so that I could get involved in the project.
The scope of such an initiative broadens when you consider the GNU Social project. I've blogged about it in the past, but let's reiterate: GNU Social is an initiative to create a Free Software Facebook clone that focuses on the FOSS community. Social would be to Facebook as identi.ca is to Twitter, and that's great. With the influx of already-interested budding developers, what better place to foster software development than a social network? Not to mention, if Social were to also encourage Creative Commons, Free Speech, open standards, privacy, and Open Codecs, they would have a surefire hit on the web. Young people would have an easy way to not only be interested in Free Software, they would have a real feeling of belonging there, too. I know I'll be flocking there as soon as possible.
As the community finds new ways to attract young developers by setting up a niche, some developers are facilitating the technical difficulty of getting into programming. Software development is not always an inherently obvious process, and in this case it's a good idea to simplify the tools to make them more self-explanatory. One such recent development is Jono Bacon'sPyJunior project.
PyJunior is a simplified Python IDE geared towards kids.From the dialogs to the layout of the editor, everything is dead simple. It strikes me as a great way to pick up on Python programming, especially with the help of his other Python program, Acire, which is a tool used for browsing through snippets of example code written in Python. A real gem for those of us who learn best by cracking open the code and looking at what the functions do.
Then, consider the implications of additional Python libraries that you could use with this simple little editor. Suppose a kid wanted to write a game using some PyGame libraries and PyJunior? Not only is this totally doable, it suddenly makes everything that much easier for a kid to make a full-fledged game using Free Software. Completely free to use his or her imagination to his or her heart's content.
Never has it been better to be young and enter the world of Free Software development.