|Network Device Testing, One Week Later|
In summary, not bad, not great. It looks as though motherboard testing has partially migrated to the right-hand side of the desk, and a limited amount of junk accumulated again.
I spent most of the day working with a volunteer on Network Device Testing, teaching him how the station works and talking about volunteering, software development and the open source world. He is interested in studying software or hardware engineering and wanted to know about the prospects for both in Vancouver.
I volunteer at Free Geek once a week, and spend the rest of my week writing Open Source Software for the Public Knowledge Project.
Open Source Software, for those who aren't familiar, is "free" in two senses of the word: free as in beer, meaning that we don't charge money for it; and free as in speech, meaning that others are free to experiment with it, e.g. by modifying and re-using the software, within the limits of the license.
Volunteers will probably be generally aware that we send out all rebuilt machines with Ubuntu, which is Open Source software. But Open Source is running in many more common places: on the router that shares an Internet connection between several home computers and provides wireless access; on the web servers that run Google and other well-known web sites; and even behind the scenes in parts of closed platforms such as MacOS.
If the software is written by skilled people, but nobody is paying for it in the traditional sense, such as by purchasing a shrink-wrapped box, then how do the developers support themselves?
There are at least two answers to this: first, they volunteer their time and support themselves some other way, just like volunteers at Free Geek.
Second, they work for companies that can somehow fit the Open Source model into their own (successful) business. They might develop free software but charge for support, as Red Hat does; or they might gain enough benefit from the greater community that it's worthwhile for them simply to pay engineers and give their results away, as IBM does with its contributions to the Linux kernel or as Linksys does with its wireless routers.
My own work with the Public Knowledge Project is currently funded in part with a federal grant. We are developing infrastructure for the Canadian scholarly community that is also useful to the rest of the world. By releasing the work under an Open Source license, we are able to make the benefits of this project available to the greater world; and in return, the greater community is able to contribute back to the project with code, ideas, translations, and more.
I was speaking with the Network Device Testing volunteer about software and he was wondering how to start volunteering on a project. That's a difficult question, because some level of skill is needed to start. I would suggest considering your skills, and your interests, and trying to find a balance between the two that will keep you both actively involved and interested.
There is a huge database of Open Source projects at SourceForge. This should give you some idea of the sheer volume of projects, from large ones like FireFox to tiny one-man projects e.g. to manage your music collection.
One especially interesting tool is OhLoh -- it's a social networking tool for open source developers. You can look at a particular project and find out where people are working on it -- see for example the map of Git contributors -- and once you look at a particular user's profile (e.g. mine) you can use the Google Map hack to see who is contributing to any project nearby.
Free Geek itself is a potential place to contribute if you want to try your hand at some scripting, for example. The "Free Geek Quality Control" (fgqc) script was written in-house and there's always room for improvement. Other stations, e.g. Network Device Testing, could use some work. There are certainly others.
It used to be that software development required a lot of investment up front. I remember saving up $300 or so in the mid-1990s to buy a copy of Borland C++ -- yeah, I was a pretty nerdy 16-year-old. Now there are freely available tools to do almost anything. And not just crappy knock-offs of expensive tools -- these are industry-standard, extremely high quality tools.
Volunteering with an Open Source project looks absolutely terrific on a resume, and there's even a chance that the project you're volunteering for will pick you up and start paying you. (Yes, it happens.) More so than many careers, software development can be a meritocracy: you can progress further based on your skill, not your economic standing or your level of university education. As telecommuting continues to become more normal, even your location becomes irrelevant, as long as you have a halfway reliable Internet connection. The next big thing could come from a small town in Nepal and the rest of the world might not even realize it.
I still haven't really answered one question: how do I start to learn if I haven't coded anything before? Anyone have any suggestions?