For any budding Software Engineer, and even those with years of experience, contributing to open source projects can be a great way to learn new skills.
According to Wikipedia, open source is “a philosophy that promotes free redistribution and access to an end product’s design and implementation details”. Based on this definition, does that mean my FizzBuzz program counts as open source software?
Computer software is the largest application of open source. Creators of open source software publish the source code; enabling anyone to copy, modify and redistribute the code without paying royalties or fees. This way, open source code can evolve through community contribution. These communities are composed of varied contributors from large corporations to individual programmers.
At Craig Dean’s guest lecture at the University of Manchester last week, he encouraged the students to get involved with open source projects as they’re a great way of learning. The truth is, no matter how long you have been coding, open source projects can be educational for anyone.
This is the most important concept behind open source – to learn. Companies and individuals provide their software in an open way to allow others to learn from it and to learn themselves from the contributions of others. This could mean learning another programming language, a new skill or just viewing your code from another perspective.
It is essential to do your research before getting stuck in and to keep up to date with the community. Blogs such as those from Phil Haack and Scott Hanselman provide great information and advice. Most open source communities have their own wiki pages delivering a wealth of information about the specific project you’re looking into.
So if you’re ready and willing to get going, where do you begin?! CodePlex, GitHub, SourceForge and Google Code are all great places to start.
CodePlex is an open source project community website hosted by Microsoft for developers to share projects and ideas. Its features include source control based on Mercurial, issue tracking and RSS support.
GitHub is a web-based hosting service for software development projects that use the Git revision control system. This site provides social networking functionality such as feeds, followers and the network graph to display how developers work on their versions of a repository.
SourceForge is a web-based source code repository. It acts as a centralised location for software developers to control and manage free and open source software development. It is best known for providing revision control systems.
Google Code hosts Google’s developer tools, Application Programming Interfaces (APIs) and technical resources. The site includes discussion groups and blogs for users of Google’s developer products. APIs are offered for almost all popular Google products like Google Maps, YouTube and Google Apps.
Wherever you start, be sure to learn something from every line you read and you’ll be a better software developer because of it.
Who knows, as my coding skills improve with Codecademy, I might join the open source community myself! Though that might be a few years off yet…