At teachingopensource.org, we think so, and we wrote a book to help. The following excerpt comes from the Foreword of our new textbook, Practical Open Source Software Exploration, which is licensed under Creative Commons BY-SA-3.0. It's a book that works like an open source software project. In other words: patches welcome.
In March 2006, David A. Patterson wrote an article entitled "Computer science education in the 21st century." David A. Patterson was, at the time, the president of the Association for Computer Machinery, the world's largest educational and scientific computing society. In his article -- which, sadly, you cannot read unless you are an ACM member -- he advocated for fundamental changes to how computer science is taught. One of the changes for which he advocated: the inclusion of open source software development courses in the standard undergraduate computer science curriculum.
One might think that such a clarion call, made by someone of such obvious influence, would generate a groundswell of enthusiasm. When the president of the ACM proclaims that it is "time to teach open source development," the world of academia must certainly follow, yes?
It's a little more complicated than that.
We've spent a lot of time over the past few years talking to computer science professors. Mostly we've asked lots of questions -- actually, the same ones over and over.
- Do you use open source software in your classes? (Increasingly.)
- Are your students interested in open source? (Increasingly.)
- Do you or your students participate in open source software? (Rarely.)
- Do you teach open source development practices? (Almost never.)
For these last two, the follow-up question is, invariably, "why not?"
And the answer is, invariably, "because it's hard."
There are good reasons why professors don't teach the practice of open source. It's easy for open source advocates to explain away these reasons. At a certain point, though, one must accept the idea that most professors are well-intentioned, but bound by circumstances that make it frustratingly difficult to introduce students to open source development.
So why bother?
The answer is simple: the skills required to succeed in an open source software project are the exact same skills required to succeed in any large software project. The biggest difference is that, with just a bit of guidance, anyone can build their software skills in the open source world.
We hope that this textbook helps provide that guidance to a whole generation of students who want to learn how to become better software engineers, the open source way.