With the current drive for open data, particularly for an open bank API standard, I recently asked a group of developers to recount what it was like for them and what prompted them to start contributing to open source in the first place. Each has worked professionally as a developer for a range of 3 to 17 years, and represent an interesting cross section of backgrounds.
HTML5 Developer for Morgan Stanley, Dimitar Christoff
Technical Director for Space 48, Tony Brown
The first open source platform I contributed to came from using the system for a commercial project. As I continued to work with the platform, I found bugs which halted progress. After first consulting documentation and using forums, if I found a solution it felt natural to push these fixes back to the project. The community tools out there enable good communication, which prompts discussion even if the solution is not correct first time. This leads to a better outcome and all parties involved tend to learn from the experience. There is a strong sense of satisfaction gained from contributing and knowing that your work is part of the project. You can also build strong relationships in these communities and this can lead to sharing further ideas and opportunities.
Software Developer for Winwar Media, Rhys Wynne
I saw open source as an opportunity to work in a team and learn from my peers. In my adopted home town of Manchester, we are fortunate to have a great community; as such there was a call out for a dedicated WordPress contributor, to which I attended. That got me learning the process of contributing. Open source in particular to me is important to my career as you build up a reputation. With lots of things being made open source, I can share what I know easily, without having to sign NDAs, or having things hidden away in closed systems. I can also learn how other developers make changes and work, and should individuals be hiring or looking to expand their team, then hopefully I’m in their minds when they hire.
Front End Developer for Building Blocks, Daniel Furze
What prompted me first was that I wanted a feature in an open source plugin I was using for my build and decided to add it in for the project I was using it in. I thought that other people may benefit from the feature so contacted the author of the plugin, who suggested I submit a pull request on GitHub for it. I then tidied up my code and submitted it, and it was subsequently released as a feature. I was quite satisfied with that, which led me to develop another feature on the same plugin, and then continue to make contributions to other projects that I thought were useful; or just that I found useful, hoping that others would too.
The learning curve for me wasn’t too hard, it was a little daunting at first suggesting features to projects on GitHub but I’ve found that most of the time your suggestions are welcome. I’ve also found though that on some larger projects suggestions or pull requests get closed down without explanation by the project owners, mainly on the bigger open source projects that are controlled by developers from Google or other such large companies. I think the best advice is to just jump in and not be afraid of your ideas being rejected; it held me back for a while thinking this. You’re going to have some rejected occasionally but if you have faith that your own contributions will be useful to others then just go for it. The feeling of creating tools that help others and contributing to other people’s work and being appreciated, far outweighs any negative thoughts and apprehension you may have.
Software Developer, Freelance, Damien Green
I began coding as a child for pleasure. For the past 5 years or so I’ve been freelancing, building, extending, enhancing, and rewriting software for various companies. It was in a recent contract for a social media listening startup that I had my foray into the world of open source development. Part of my remit on this short project was to develop an Instagram feed importer component. I discovered an open source project that had gone some way to implementing a C# API wrapper to Instagram although it required some additional functionality. Rewriting the API was not really an option so I tentatively contacted the owner of the open source project asking if he would consider my adding certain functionality. Over the course of several weeks, I added more functionality and communicated with another developer from Brazil, who I’ve never met and may likely never meet.
It’s worth mentioning the pleasure that can be derived from working on open source projects. In the fast paced deadline-driven world of the job market, at its purest, the open source movement offers a place where robust frameworks can be built, critiqued, extended incrementally and peer by a global community of great developers. So there is a certain allure to the purists of the software practitioner world to have developed a piece of work which is more robust to a high standard, and could potentially be useful across future projects. After having worked on the Instagram API project as part of my day job, I was driven to continue contributing outside of my working hours to fill in the gaps in feature functionality, add documentation to help developer adoption, and occasionally answer questions from potential users of the system.
It can be quite addictive. Many developers of open source software do so as an external activity to their usual working day, as development is their vocation, and there is something enormously satisfying about doing something that is not lot purely a mercenary activity. It can almost feel like a benevolent act, as there is no end client hot on your heels you can have the patience to consider correctly how to implement.
The open source movement is often at the cusp of technological development and the first to innovate, so as a software practitioner, where your stability in the job market relies on being up to date with technology. Jobs these days can advertise for roles for developers who’ve contributed to open source projects. For me personally, I look forward to being able to continue supporting and contributing to development projects in whatever small way I can, and being part of the social community that is open source.
I would suggest first having a look on GitHub and doing a search for any projects that you are interested in. If you’re interested in 3D visualization, for example, you could search for that and see if there are any outstanding bugs that need fixing on any of the highly starred / popular projects or documentation that needs adding to. Any contribution is usually welcome if the project owner is still actively involved in the project.