Why you should develop your web app in public

For mortals – those of us not gifted with insane levels of insight about how other people work – the process of design goes something like this:

Find out about a problem

Figure out a way to solve that problem

Come up with a suggested way of solving the problem

Show the suggested solution to someone who has the problem

Listen to what they have to say about it

Change your understanding of the problem

Iterate.

 

This is true when it comes to designing the next ubercool widget, and its true when designing the stodgiest piece of business management software.  It is true when designing web apps.  Unless you have a huge usability lab and can fund focus groups, your best way of testing web app ideas is to get them out there, in front of people, and see what they think, so that you can iterate and improve the design.

I’ve been thinking about this for a while, and came to the conclusion that it might be a good idea to do all of your web app development in public – not just making the app available online, but also the source code.  It was an idea which gnawed away at the back of my skull, not fully formed, until I read the following article http://techblog.netflix.com/2012/07/open-source-at-netflix-by-ruslan.html and specifically the following quote:

We’ve observed that the peer pressure from “Social Coding” has driven engineers to make sure code is clean and well structured, documentation is useful and up to date.  What we’ve learned is that a component may be “Good enough for running in production, but not good enough for Github”.

I want to explore wether the benefits of opening your web app code to the world outweigh the disadvantages.

Lets start by remembering that we have had this argument before.  Back in the late nineties we were discussing wether Open Source code was the way forward.  Gradually that argument has matured, and a world without open source software would be unrecognisable – a probably significantly behind our current world.  So there is social benefit to some forms of open code – by releasing your code, and playing your part in the open source community, you are doing a good thing, and moving technology forwards.

Lets also consider that, in the case of web apps, sharing your code is not a common or usual behaviour.  There must be a reason for this (even if the reason is wrong, or out of date)  Perhaps, in looking for these reasons, we can understand why, in the net app space, people are less inclined to share.

The arguments I can think of stand as follows:

I want to get the full benefit of the code I have written.  If I were to share my code, others would be able to compete with me based on what I have written.  I might lose out to someone who hasn’t written the code.

Sharing the code, packaging and documenting the code, is too difficult or labour intensive.  It isn’t what I want to spend my time doing.

I don’t want to expose my code to the world, only the functionality, because I am scared of being judged on the basis of my code.

Opening the code might allow people to spot security holes

When writing an article such as this, it is always a worry that I am creating straw men to knock down – so I would be pleased to learn about other arguments against opening up code to the world – please mail me

The NetFlix quote adresses the argument about judgement.  By exposing your code to the world, you are forced to make the sorts of decisions about your code you would generally only make in the face of peer review.  It will lead to better, more readable, more maintainable code.  This is a good thing.  If the problem is not the quality of your code, but rather the fear of public ridicule, then I suggest that posting and being damned is absolutely the best way of getting over this.

The question of security holes is similar. We know that security by obscurity is ineffective against a dedicated attacker – all you are doing by not publishing your code is giving yourself a false sense of confidence.  By opening the code, you not only open it to potential attackers, you also open it to other people who may wish to use your code, and who may spot the flaws and help you correct them.  Open Source software has a deserved reputation for addressing security issues well – there is no reason why open web apps should not do the same.

Sharing and packaging the code is too difficult.  A while ago, I would have agreed.  But now we have github.  While github is far from perfect, all you have to do is keep a copy of your code there.  I don’t make any suggestion that you need to make your code easy for other people to use – just that you make it available.  If other people care about packaging your code, documenting it, making it nice – let them.  Thats their work, not yours.  You don’t have to become a community leader, you just have to keep on doing what you enjoy doing.

The final one of my arguments against opening your code is that you don’t want anyone else to benefit from your work.  To this I might make a few comments:

1.  You must be kidding.  Odds are your site is running on an open source language on an open source operating system.  You’re using web browsers (the majority of which are open source these days) to let people get to your site – over the internet (a technology which has had a huge amount of development form other people).  Your’re probably using open source libraries and open source databases and web servers. You are absolutely standing on the shoulders of giants.  Is you’re shitty first draft web app really that difficult to come up with, in the big scheme of things.

2. You’re not kidding?  Right, well in that case, consider that the value of a web site is more than just the value of the code.  It is also the value of the design, the graphics, the quality of the  site’s dev ops and the community which use it.  You have the opportunity to succeed in all these areas.  If you don’t win in these areas, you probably don’t deserve to win

3. Still not convinced?  Copying the first draft of a web app is cheap.  Especially since web apps don’t generally do things which are particularly complicated – the thing that gives them value is the idea, and the way it is made available to the user (the design).  Copying design and idea – then writing code to fit is a lot easier than writing the code from scratch.  Just by putting your web app out there you are making it easy to copy – especially from the big boys you are, presumably trying to disrupt.  When you introduce a new idea, the hope is you get big before Google or Facebook notice you have disrupted anything.

4. First mover advantage works.  In the open source world we don’t often see major forks of code – and when we do, it is normally because people want to do something significantly different with the code.  This is less clear in the web app space, but let me point out an example:  Wikipedia.  Right now, I can download all the data.  I can download mediawiki. I can set up my own wikipedia.  But I won’t beat wikipedia.  Because they have the community.  Because they were there first.

5. You might benefit from other people’s code.  If they are using your code, and making changes to it, then you get the benefit of those changes.  If you want to be sure of this, release your code under an affero license.  You might also benefit from someone using your code.  Lets consider Google – lets say they decide to compete with you.  Unless you’ve got the community sewn up, you’re screwed, wether they copy your code or write their own version.  However, if your code is available, why the hell wouldn’t they try to use your code, and bring you onboard – sure it might not be the megabucks you make from creating the next big web app, but its an income based on your work, your love and your passion.

I really don’t see anything except for upsides when it comes to releasing the code which runs your web app.  All you are doing is adding to the ecosystem you draw from.  And in that sense, not only is sharing your code a logical imperative, it is a moral imperative too.

(Random question:  Why can I not fork GitHub?  It really seems like the sort of thing I ought to be able to do)

You must be logged in to post a comment.

© Ben.Cha.lmers.co.uk
CyberChimps