I must apologize for the lack of content on the blog recently. Things have been busy in good ways... very good ways. I have been asked to teach the first ever introductory to computer science course here at Mzuzu University Department of Mathematics! Fortunately the course is only meeting twice a week, so there is plenty of time to piece together lessons and lectures. So far, the students seem to be enjoying themselves. They are very excited about having the chance to learn to program computers. Our only problem so far is that the number of computers on campus comes no where close to matching the students enthusiasm for the subject.
Agreeing to teach at the University has also opened some doors for my research. The other professors seem much more comfortable talking to another lecturer. When I was considered to be only a researcher, it seemed like the faculty here wasn't sure where how to classify me or how they could really work with me.
For our class text book we are using a very neat book called “How to Think Like a Computer Scientist” (http://www.thinkpython.com). I read it this past summer and quickly found it to be one of the best introductions to computer science that I have ever seen. The examples are clear, and topics are presented in a way that gets students writing fairly complex programs in a short amount of time. In addition to being a very high quality text book, the book is also published under an open source license which means the authors have given rights to everyone to download, print, edit, rewrite, or reproduce the text book legally in any way they choose.
The book is has three main authors – a professor from University of Chicago, a high school teacher, and a professional programmer – and claims to have received contributions from over one hundred readers who have proof-read and improved confusing sections of the book. I know that some might ask why on earth the three authors have agreed to let their work be redistributed for free without requiring any sort of monetary compensation from the users of the textbook. You are welcome to ask the authors themselves, but I think the answer might be that by opening their book – making it available for free - the authors have, in fact, benefited greatly economically. Hundreds of people have proof read and contributed to their textbook and the authors have not had to pay any of them a cent! Could you imagine paying an army of one hundred people to edit and improve a book you had written? Also, by opening their book, the authors have built names for themselves. Without waiting for a publisher's approval, these authors have published their book and watched it quickly gain in popularity in a genre where there are hundreds of competing textbooks and authors.
I took me a while to explain the concept of an open source textbook to the faculty here at the University. In Malawi, they are used to receiving “free” textbooks. Loads of old, hand-me-down text books arrive from universities in the USA and Europe each year for “free”. These textbooks are “free” because they are old and no longer wanted. My challenge here was to explain that this open source text book is “free” for a different reason. “How to Think Like a Computer Scientist” is free because the authors have decided that the most productive way they could produce a high quality, cutting edge textbook is to give it away for free and encourage students and teachers around the world to improve the text. The textbook is “free”, not because its not longer good enough for the universities of the USA and Europe... but “free”, because the authors have successfully adopted the proven open source development model (which has brought numerous high quality software products to the market) for literature.
My students, like all university students around the world, are pretty short on cash. The high quality and low cost of this text book made it the ideal textbook for our introductory computer science course here in Malawi. We have printed 5 copies ($4.00 each in our library) for a class set for the library, and the students are currently saving electronic copies of the book to their floppy disks that they carry with them. The administration here seems to also really like the idea of the open textbook. Next year, when Mzuzu University wants to get its hands on one of the latest and greatest computer science text books the University won't be dependent upon the charity of foreign universities or publishers. The updated version of “How to Think like a Computer Scientist” will be there “free” and ready for our students to download and begin reading.
As I think more about the textbook, the way in which it was produced, the impact that it is having here already... I realized more and more... open source, as model for production, clearly stands to have a enormous impact developing world.
Yet I still believe that most of us, having grown up in a copyright society, have a completely wrong impression of what open source (copyleft) development really is all about. Open source production is not some trendy new fashioned form of communism... there are real economic advantages and efficiencies at play here. The way “How to Think Like a Computer Scientist” was able to “hire” hundreds of editors for almost no money is just one example.
My current (though humble) career is another. Most of you know that I spend quite a bit of my free time and earn the majority of my income by working on open source software projects. Yes, its true, I earn money by giving my software away for “free”. But, I want people to know that I give it away, not because I am a good samaritan... I give it away because it is the best way for me to make money. I am an efficient programmer. I am a not such an efficient marketer or a lawyer. If I tried to market my software or enforce copyrights upon the code I have written, I believe that I would be wasting my time, money, and energy. I would rather spend my resources writing more creative software. By distributing my quality code for free I encourage people to use it. The more people that use it, the more likely one of two things will happen: one of the users later be willing to pay me to improve the code I have written, or some other programmer will add functionality to the code then share the changes back with me. Whether the a new client pays me to write new code, or a programmer (that I don't pay) writes a new feature that I can then sell to my clients... either way, I gain economically.
We should be clear that producers (like me) aren't the only ones that benefit in the open source production model. Buyers (my clients) can benefit as well. Usually when I am considered for hire on a software project, I tell the prospective clients that I will only take the job if I am allowed to give away the code that I write during the project for free to the open source community. Clients are always nervous about the idea at first. But there are strong economic arguments they must consider as to why it is to their benefit to pay me to give away my code for free. Sounds crazy I know... but take a client that recently hired me for a small $1000 USD dollar development project in Washington DC as an example. For that price I was able to develop some new functionality for their website. The problem was that I would soon be moving away to Malawi and no longer be able to help them maintain the new functionality. After I completed my work, we “open sourced” the code I wrote. We contributed the code to one of the major open source software projects called Drupal (software to help people manage websites). Shortly afterward, I began receiving request from around the world from other people who were interested in using it in their client's websites. Whether these people sold the code I wrote to their clients or not, it didn't matter. We let everyone who asked have the code. To every one I sent the code, I included a note said I could not promise to maintain the code after I moved away. They would have to use/sell/study the code at their own risk (this is common in open source production). Just two months before I left for Malawi, one of the “free lunch” users contacted me with the news that they were interested in taking over development of the project. They would to continue to update the code and add even more new features to it (not so “free lunch” after all).
Just last month I noticed that a new version of the code I wrote was released for everyone to use for free. There is now a team of three programmers working to maintain the code. The code is higher quality and includes even more new features than the original code i wrote. My clients in Washington DC are now free to use this new and improved code. So for the small price of their $1000 original investment my clients also now have a team of three programmers working to help maintain this new functionality for them that they do not have to pay. They get all of this because they were willing to take the risk open sourcing production of product that, in the end, proved to be valuable to other people.
And so, now I have to admit, that I really do not like the first chapter of the book “How to Think Like a computer Scientist”. I am thinking of rewriting the first chapter of the book using material from the first lecture I gave for class here entitled “How to think like a Computer”. If I do write the text, I will give it away for free to the authors to use in the next edition of the textbook. Why do I want to write a chapter for the book for “free”? Yes, there is part of me that just wants to see a better version of the book next year... but also I know that it would benefit me and my resume greatly to be able to say that I was a contributing author to one of the best computer science text books out there. If I do write a better first chapter both the book's readers, and myself stand to benefit. This is how open source production works.