Hacker news recently turned my eyes to opensource.com, which I review occasionally, but admittedly do not track as closely as I should. The article is Introducing students to the world of open source: Day 1, and at first glance I thought, What a great idea?! I let that steep, and increasingly found myself more frustrated with higher education than impressed by the ingenuity and motivation of the author and team.
First, I must admit that the last thing I want to do is cast a dim light upon the efforts of the author and others who are working on this event. It is a great idea, and we absolutely need more efforts like this. With that caveat, I have to move quickly to the question of why are these efforts so necessary?
As noted, "Even though programming students can write code, most never see a bug tracker, and very few learn about version control." Project roles, Linux, and IRC are listed as topics that were appreciated by a body of motivated CS students. Allow that to resonate. Is a Computer Science degree really just a piece of paper that says, "This person can write code"? How is it that a CS major pays tens of thousands of dollars for a degree, and has little to no concept of version control, project roles, design documentation, functional specs, or a bug tracker? Oh, and code review - is that how you get graded?
I constantly see posts and flame wars about open source in business/schools, with notes about TCO and ROI. Perhaps I'm reading the wrong blogs, but I seldom encounter any pitches that include the fact that open source offers excellent learning opportunities. Granted there is a full spectrum of open source projects, and some are more accepting of 'n00bs' than others. By and large, my experience is that open source project core teams are willing to take some time to bring a fresh contributor up to speed, and coach them to a level of productivity among the greater team. This activity alone - which is free, self-paced, and in most cases self-motivated, is worth more in my mind than four years of learning code logic and syntax. And it can probably be accomplished in a matter of months or even weeks.
One thing I do see occasionally in my internet travels, that corresponds well, is advice from programmers to CS students who say, participate in an open source project - it offers great experience. I would venture a guess that the better CS students do just that. And they probably go on to be successful developers and quickly advance to higher tier development positions. This is a great scenario, and only hiring the best, most self-motivated and experienced developers out of college would be ideal. But there are a lot more developers graduating with CS degrees who never participated in a project outside of class. If they happened to have an outside pet project, it is often a personal project, that lived exclusively on their development machine. When asked about experience working in teams, these individuals confidently detail the group projects that they had to complete for some final. Did you implement a wiki, bug tracker, or project management system for your group? Probably not, there probably wasn't enough time.
Getting back to my inspiration for this post, the team reporting on opensource.com is doing wonderful things to combat this issue. This is a great action, and I think it will help tremendously for a number of students.
To combat these issues, my dream goes something like this:
A technique for enhancing opensource participation at a young age and increasing the value of CS degrees is to organize CS program sponsorship by existing open source projects. As an optimal example, projects like GNOME and KDE (well-established, well-funded, and mature open source projects) could use existing funds to hire educational project managers, who act as liaisons between student groups and appropriate academic instructors. They help get students rolling, make sure that mentor(s) are available to assist with questions and issues (this could even be over IRC or through forums).
This relatively small investment results in productive CS students who can address whatever bugs and upgrades are requested by the open source team (helping to solve the common problem in open source projects where mundane bugs end up trickling through multiple releases, because no one 'wants' to fix them). Not only does it give open source projects the ability to 'assign' bugs with authority, it also breeds potential developers for future work. If a group of CS students participate in open source updates as part of their required course work, and know that continued open source efforts are spectacular resume highlights, why wouldn't more of them participate for a longer duration than a single course? Forcing the introductory period through an optional CS course forces students through the initial learning curve, a primary concern students reportedly voiced in the opensource.com article. I noted optional, as I think that participation by students interested in doing this of their own volition will result in a better scenario for all parties involved.
There are a few holes in this idea, and it certainly would not be easy to orchestrate. Nonetheless, if University X teamed with RedHat or IBM to finance a few project liaisons to act as go betweens for a single CS elective course that was basically Open Source participation 301, imagine what the press could be like for the involved parties. What percentage of CS students who participate in that course would land desirable positions? How many bugs could the University's elective course-taking CS body claim to have resolved? How much time/money would those students effectively end up putting toward the projects in which they participate? Letters for your CS major home page detailing, "Open Source participation 301 really put me above my competition, I had a choice of jobs after only a handful of interviews...". Higher profile businesses start recruiting more from University X, because they know the students who took OSP 301 are intimately familiar with an open source technology on which they rely. Tech businesses recruit because they know that students who worked on open source project Q during their OSP 301 course are experienced with a particular bug tracker, wiki, vcs, etc. that the business uses in their workflow. RedHat/IBM offer press releases, "Just donated $80,000 to open source project Q and University X to support collaborative education/open source learning and programming efforts."
Who loses here? I realize that the projects/companies I relayed might be out of reach, but the I would think the right pitch could spark interest from a Mozilla project, PostgreSQL, LibreOffice, and countless others.
Opensource, Colleges/Universities, CS majors - Can we make something like this happen? Why not?