The Too Many Tabs Blog | RSS | Twitter | Company
The Too Many Tabs Blog | RSS | Twitter | Company

Anarchism, Capitalism, Altruism: Why do I open source?

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.

Personal satisfaction

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.

Learning

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.

Conclusion

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.

Looking for something? Browse the archives by title.

  • http://www.NobamaNobamaNobama.com Mstr Rick

    Great post Ollie. I’m a Linux student and happened upon your post while researching articles for an essay on open source altruism in a Utopian egalitarian society. LOL You blog was right on point. The virtue of selfishness. When one helps oneself by seeking maximum personal fulfillment and success all of society benefits by your independence, self reliance, and self-serving contributions. That others benefit from one’s efforts brings an ancillary sustenance necessary to the nature of men; gratitude, praise, and appreciation. Go get’em, grin.

  • Anonymous

    Thanks for your kind words Rick. If you haven’t already I’d recommend reading ‘The Cathedral and the Bazaar’. It contains some fantastically insightful and well written essays; it really is the bible as far as this subject is concerned. I find myself picking it up every once in a while and it’s just as engrossing (not a word I would typically use for this type of writing) on the second, third, or forth reading. Give me a shout if your essay goes online (that should be par for the course right?). Cheers.

  • Dave

    Enjoyed your insights. It has been unfortunate that the language of economics has been hijacked or muddied by those of a Marxist, and the character of free-market capitalism has been wrongfully maligned. Of course, some of it’s champions have been more doers than thinkers, so they have been less than adequate apologists, by nature as well as general proclivity.
    The basis of free-market capitalism isn’t greed – though self-interest is a part of the underlying motives – but service. If one is primarily focused upon self-interest, there will be a point of diminishing return for efforts, due to both inherent market entropy and competition. Add to this further competition and market innovation, or, more dramatically, a major evolution to a market segment (e.g. the invention of the microchip, automobile, light bulb, etc.), and returns collapse.
    However, market participants that are continuously innovating, adapting, communicating and building market rapport with customers, vendors, potential customers and competitors (direct and indirect) are more likely to survive, adapt and flourish. They tend to have the capacity to be more flexible in their approach and capacity to sustain the blows of the market, and grow and evolve so they stay in front of market changes.
    Altruism can also serve to build goodwill, which shouldn’t be overlooked, but it isn’t sustaining for an organization to survive. Then again, if you enjoy something, even if marginal, and you’re able to do it, as well as be responsible to your other obligations, then there is nothing wrong with it.
    I would go so far as to say that the free exchange of goods or services between two parties for money at a profit is as morally noble and good as feeding the poor. In your case, you are combining both the moral and societal goods of proffering goodwill through your professional talents and promoting the benefits of free economic exchange with the potential for profit.