I found myself asking ‘Why?’ as I invested yet another hour of my spare time getting a library ready for an open source release. I needed to produce the library for a commercial project, but I didn’t need to open source it. I didn’t need to write documentation, I didn’t need to code a full working example, and I certainly didn’t need to answer queries, as if I were running a commercial support desk.
I wasn’t being paid by a client. Although satisfying the work wasn’t challenging or particularly interesting. So why was I doing it? Is this altruism at its purest or am I doing this for selfish reasons? Am I an anarchist or is there an underlying capitalist motive?
The tortured cubicle drone
An idea exists within our industry that the frustrated cubicle drone clocks off and goes home to hack exciting cutting edge open source to vent his frustrations. A way to challenge, express and get appreciation for his skilled work from a community that cares and understands.
To me this is an alien concept. My open source flows out of my professional work, assisting and improving it. I hated the repetitive work of building forms for clients so I built FormIgniter to make my life easier. Seeing how it helped me I decided to release it so the CodeIgniter community could benefit.
Coding with a view to open source improves quality
My latest client project integrated with the Sage Pay payment system. I couldn’t find an open source library to do this so I made my own. Starting out with an intent to release the code made me think about the library in a fundamentally different way.
The simplest and quickest way to build something is to tailor it specifically to the task at hand. But when you release open source you instantly create multiple users with unknown requirements. Your thoughts shift from ‘How will my application use this?‘ to ‘What is the general scenario?’. You forget application specific code and think about the general case. This mindset shift leads to the creation of adaptable portable code.
As the only developer on a recent client project I knew the code base in and out and didn’t need to add detailed comments. However because I was open sourcing the payment integration, a core part of the code, I added clear comments and references to the payment gateways integration guide. By coding for someone else I actually produced a better product. Down the line when I return to this code it will make more sense it me. By helping others I was in turn helping myself.
Capitalism – Work benefits
Although I give away my code for free, it’s actually responsible for my income too. By releasing this code, I receive emails almost daily asking about my freelance services. Lots of these requests are to build applications based around my free code.
Elliot Haughin – The Cost of Free, the Beauty of Open Source
It is not possible to precisely quantify financial gains from open source work. Like marketing and branding we can’t run an input vs output formula to find out how much work or sales our efforts generate.
We don’t know the precise figures but we can be certain there are benefits. Open sourcing sends a signal to the world that you are an expert in your field. Right now I am probably the leading authority on integrating Sage Pay Form into CodeIgniter. I am highly knowledgeable about this narrow field; the Zulu Principle in action. As to whether this expertise is valuable depends on the field.
Some developers such as Elliot Haughin get gigs which directly expand on their open source libraries. Whether intentional or not, he released open source code in niches, such as social networking, that are currently very popular and therefore have real market value at the moment. Someone wants a facebook guy they go to Elliot. Boom!
My financial gains and opportunities are not quite as clear cut. Over the past year I have had 2 job offers (going to take one hell of a salary to get me back into a 9-5 London grind) and have picked up some long term freelance clients without advertising directly.
I highly doubt my clients are scrutinising lines of my open source code before getting in touch but I like to think that someone who stumbles across my small corner of the internet would get a sense that I am committed and know my stuff based on my free apps, code, and my blog. My passion is my biggest sales tool. Open source demonstrates it.
Myth – getting code developed for free
The idea that when you open source you get an army of talent for free seems to be largely untrue, at least for libraries and small projects. You tend to get feature requests, bug reports (with a surprising low level of accuracy) and emails of gratitude. But seldom do I receive ‘Here is patch that allows you to d x, y, and z ‘ emails. Maybe my code is too specific, too few people use it, and I am not well known. I would be interested to find out what other developers think…
Increasing my reach – personal brand and reputation
Tens of thousands of people have used my code. 12k + forms have been generated with FormIgniter and 1000′s of Barometers are installed across the internet. I get my work in front of more people, always putting my face and name on the product to increase my personal brand.
Portfolio and showcase
A photographer shows a portfolio. An architect shows buildings. A programmer shows code. But as a freelance largely white label developer I often can’t tell the world about my recent projects, and I certainly can’t send prospective clients code bases from other projects. So my portfolio and showcase is made out of my open source work. If someone asks me for code samples I can point to my GitHub profile.
Altruism – Thanking the community and industry
If i can see farther than others, its because i stand on the shoulder of giants – Sir Isaac Newton
Our industry is founded on the principle of sharing ideas and being open. I often think how easy we have it. We can quickly and easily create a web application that millions of people can access without having to think of any low level issues such as memory allocation, resources, internet stacks. Great programmers have paved the way for us. Giving back, however small, is my way of saying thanks.
Handing over the baton
With a limited amount of time I can only create and support a finite amount of code, products, and clients. As time goes on my priorities shift, and old projects can become neglected. As a final act to the community I opened the source.
I recently open sourced Barometer, a feedback tab I built a year ago, for this reason. The number of bug reports recently increased, with numerous IE and flash glitches. As a backend developer I am actually not best placed to fix these bugs, and with new projects on the go I really don’t have time.
Instead of neglecting my existing userbase, I opened the source and invited users who had got in touch to tweak the code and send over fixes. Users who had ambitious feature plans can implement them, and I can merge the most useful and key bugs fixes into the main online app. This is clearly a far better solution than running a neglected service, or worse shutting it down.
Everyone likes to feel appreciated. Often our professional work is not praised. You do the work, deliver what is expected and get paid. The only comments that ever get relayed after a project sign-off are bug reports. It can bring you down.
However the very opposite is true of open source. I like waking up to ‘Thank you’ emails. I like to be able to look at my buzz page and see a whole list of positive comments. I like that someone knew me at a conference and thanked me for saving them time. It made me smile.
Open source opens you up to respect and criticism from our peers which is just not possible professionally outside of a team of developers.
Multi-participant projects are a great way to learn. Seeing and interacting with code from others makes us see things from a different perspective, be it good or bad. I have often seen someone else’s code and thought ‘I never thought of doing it like that’ or ‘What on earth does this do’. Coding in isolation leads to a isolated learning.
Open source allows us guns for hire a chance to collaborate. Your professional clients won’t criticise your application layout. They only care that it works. Your open source peers won’t be so kind.
Pride in volume of work
I look at my GitHub profile and see 8 public repositories. For some odd reason this makes me feel good. Like I have produced something of significance. Something worthwhile.
Open source has become part of the way I work. I use, modify, and create. It improves the quality of my code, changes my attitudes to building a project (the phenoninum of the external eye) and shows future clients what I can do. Although it consumes hours, and at first glance seems a strange way to spend my free time, on reflection it is worth it.