There’s an abundance of open-source code out there. Thanks to the internet and the flourishing of open-source, it’s possible to explore the programs that power some of the world’s most popular applications.
A big problem with software education is that people spend most of their time looking at toy solutions to toy problems. Idealised teller machines and leap year calculations can only take you so far. Real-world software is rarely, if ever, covered.
Compare this with a related field: building architecture. Aspiring building architects (who sometimes like to refer to themselves as “real” architects) are force-fed a substantial diet of buildings and structures. They get to know the great architectures of the world and the architects that made them. By the time they are finished studying, they can compare building X with building Y, and take inspiration from both.
Now, this has not always been possible with software. To a certain extent, open-source software has always been around. But for a long time, it was impossible to get hold of any serious code. As Richard Gabriel and Ron Goldman – advocates of “software as literature” explained:
The effect of ownership imperatives has caused there to be no body of software as literature. It is as if all writers had their own private companies and only people in the Melville company could read “Moby-Dick” and only those in Hemingway’s could read “The Sun Also Rises.” Can you imagine developing a rich literature under these circumstances? Under such conditions, there could be neither a curriculum in literature nor a way of teaching writing. And we expect people to learn to program in this exact context?
To bring about the change, it took fresh views on the economic benefits of open-source in certain contexts, combined with the internet to make it all accessible to the masses. SourceForge currently has 94,671 registered projects. So make the ridiculously conservative assumptions that no other projects exist and that only 1 percent of those projects are serious. That leave 946 serious projects to be mined and explored for educational purposes.
It’s not just the code that’s exposed, but also the process. Since most open-source hosts contain version control repositories, it is possible to track project evolution. Furthermore, it can be tracked against discussions in mailing lists, project weblogs, and other work artifacts.
What we need is an Open Source Hall of Fame, like the (sadly unmaintained) Interface Hall of Fame which was a source of entertainment and education to many HCI people in the late 1990s. It would contain galleries of quality code and cover critical moments in the evolution of projects. Information like this would complement design patterns and further their development.