Teaching Open Source

A few months ago, post-internship, I wanted to start a course for third-year college students in my second year of college, along the likes of Seneca, so the professors here at NUS kindly paved the way for me to teach Mozilla as a course (CS3108). (They however indicated that it will _not_ be a normal course, it is just a "student-run activity", because I am not a professor.) This wasn’t large enough to obtain more publicity, a recent local paper article on open source education by-passed local major universities.

(Note: This post is Singapore-centric, a partial response to Mark Surman’s, and is timed to coincide with the open source track at Seneca, due to school commitments, different round-the-world locations that sit exactly on opposite sides of the world and lack of resources, I am unable to attend. Apologies in advance, much as I would like to share my experience in-person.)

The first semester of teaching the course has proved to be an invaluable learning experience, and I will share some thoughts below:

Teaching open source effectively takes time to come to fruition

The college must be sure that teaching open source is the right way forward. Industry trends take time to go back into the classroom, and the act of convincing the college’s board of educational directors that open source is essential for the student’s future, takes time to come to fruition.

There must be an advocate within the college strongly pushing for this act of teaching open source, be it a Dean, a professor or a student. These people are vital to sustaining the vibrancy and enthusiasm of the course, because to educators, "everything starts from the classroom". That is, of course, an old notion, because in the case of open source, there is a community to start off in, but this thinking is still inherent in certain educational circles. So colleges want to ensure that whatever "new stuff" they are teaching are relevant in the outside world, and that huge level of inertia of accepting "new stuff" also takes time and much effort to overcome.

Everything starts from one

Every thing starts off from one. Be it one advocate, one teacher, or one student, as long as someone is interested in open source, this is a chance not to be missed. Maintaining his or her interest in open source is the main challenge — though it also depends on the individual personality of the person. Once this opportunity is gone, he or she will end up just like the other graduates out there.

Every bit of effort counts. Every single bit of effort, possibly even with recognition, will give tremendous boosts of confidence to the advocate that they are on the right track, that they are not doing something in vain, and that they are not the only ones who think open source thinking is useful for the future of the computer workplace. It’s painful and tough if the contributor / advocate feels that he or she is seemingly the only one around the country / region that is interested in this sort of stuff. It takes willpower to overcome that — once that willpower is gone, it’s difficult to re-obtain.

Mindset shifts

Without the support of someone in the college, it is not easy to negotiate the red tape that exists throughout the educational institution’s hierarchial structure. Countless emails and bounces from place to place, from people to people, it is very important that the college itself is probably recognizing the importance of open source. Merely recognizing alone is not enough; there are still possibilities that the college educators do not know how to teach open source in a way that is suitably generic, i.e. not just focused on Mozilla or Linux alone, but rather also encompassing the open source spirit, the act of sharing code, the different open source licenses out there.

High-level educators note the fact that code cannot be shared, that plagiarism is involved (which is extremely frowned upon and can be liable to severe penalties) very often to students. As such, students already have the thinking embedded inside their very minds that their code is their king, this also takes a lot of effort to overcome, especially when during the open source course, the advocate begins to talk about sharing code, which is contrary to what the student has been taught in all his life. Changing this mindset is virtually impossible in the high-level educators’ world, this affects the students too. Another issue that I won’t go into very much detail due to different implementations for different academic institutions and the fact that I am just a not-so-performing-well-undergraduate, is the question of how to grade the student, besides “Pass/Fail”.

This is not the only thing in teaching open source that goes against what is taught in other places. An example is compiled code tests. Students are taught that their C++ (or whatever language) code should have comprehensive compiled code tests. It makes sense for the student’s project, when you have merely thousands of lines of code and hundreds of source files. However, this goes against what is listed for Mozilla, simply because this doesn’t make sense. With something in the likes of millions of lines of code in the Mozilla codebase, this represents something on the many orders of magnitude greater than what the student will accomplish during the course of his college education. It is wasted effort if the student is taught to write compiled code tests only to find that it is not really relevant in a project as large as Mozilla.

Learning open source is a learning curve for students. Fresh graduates already have thinking enshrined into them about the closed source opportunities. Microsoft, Apple, Adobe, (especially the selling of) YouTube are just the many examples that are actively promoted. What is lacking here are open source ones. Note that these students already know about the existence of open source, and most are probably already using it, they just do not see a future of themselves surviving on an open source job. Open source is not seen as ensuring a bread-and-butter future, it is seen as something done in a hobby and will get relegated in priorities if there is a lack of time or money. Materialism plays a part in going against open source.

Certification (Sidenotes)

People ask about certification. Microsoft certification, now there is the Apple University, something on their CVs that certifies them for their job. Having contributed to lines of code to open source is hardly perceived as certification by students, though the open source developers themselves may attest otherwise.

APIs (Sidenotes)

Students ask about open source APIs. If there is something Mozilla lacks that may prove useful to educational folks in the future, it’s an API. They want fresh, readily available, well-documented APIs to code whatever they want. The closest anything that Mozilla has is probably MozMill API and Ubiquity documentation, on a level that is suitable for easy level entry into Mozilla coding.


Having more people and resources available around in a region, would always help to push the cause forward. Starting something regarding open source education is good, but maintaining the momentum and ensuring the sustainability is the tough bit.

The education sector is a tad slower to recognize and respond, and adapt to industrial trends. Open source is just one of them.

(What a long >1200 word post, thanks go out to the reader for lasting till this end, time to go back to lectures on basic datapaths / pipelining. This post will also become part of my final report on CS3108.)