Monday 6 April 2009

Free Software Inspiration

What inspires people to write free software? It isn't psoryisis or insufficient hygiene as some have appeared to claim.

Self Education


Self education is a significant driver of contributions to free software. There is no better way to learn about something simply to do it. Free software has been built with education in mind; all the source, the documentation, the tools, even the operating system is available to all for no cost and with few restrictions. Good quality documentation and manuals are a core part of the free software eco-system.

In addition there are other ways in which computer software itself is an ideal self-education persuit:

  • Interactive languages which provide instant feedback.
  • Many languages and environments to choose from.
  • Integrated documentation.
  • Mistakes are cheap. No raw materials are consumed.
  • Mistakes are also safe, and private.
  • Knowledge is free. It only costs you the time to aquire it.
  • Can be done in complete isolation as well as socially.

As a student or professional, contributing to free software can be a great way to learn about a new area or keep up with technology. It costs nothing but your time and you gain not only knowledge but may end up with a useful tool or application from your efforts in addition to the knowledge gained. It also provides a public portfolio of your work that may aid your career (it should be worth more to an employer than a paid-for certificate).

Entertainment

Writing software can be incredibly fun. Learning new things in itself is quite a fun activity, but even simple things like getting a Makefile working nicely is a little spot of joy -- at least until you move onto the next problem.

I like to compare it to a polymorphic Rubik's Cube. No matter how many times you solve one part of the puzzle there will always be more puzzles to solve. It is a never-ending journey with little victories at every stage. Like the adventures of Monkey the journey is important, not the destination.

Of all the thousands of dollars i've spent on entertainment such as movies and games, I would only have experienced a tiny percentage of enjoyment in a far smaller period of elapsed time than compared to simply writing software.

Unfortunately releasing your software efforts to the world can destroy the entertaining aspect. Once you have users you also have complaints and bug reports, and although these can be ok for a time they can quickly get out of hand. More so recently as there are increasing numbers of less-skilled users likely to be using your software.

Personal Psychology

Perhaps it is for the approval of others, or simply to assert that you exist as an individual in a modern world, or that you belong to or lead a desirable group.

I think this must be quite a factor in many peoples decision to take part in free software projects rather than keep their efforts private. For example, projects don't have ``programming teams'' and ``users'' anymore, they have developer and user ``communities''. I don't really like the term, and find it devalues the original meaning -- much like a facebook ``friend'' does.

Need


Need is the major driver for most software full-stop. So it must necessarily be a major driver for free software. Some developers simply release their code as free software as a matter of course, regardless of whether others might find it useful. Others attempt to leverage the skills and time of others to improve and maintain a project. But in either case the software was written in the first place simply because it was needed, and it's development has already been paid for.

Unfortunately, most needs-based software stays locked up in individual organisations or machines until it ages beyond repair and is replaced by more of the same.

Politics

Obviously the free software movement is a political one. It strives to produce a completely free software computing environment for all users. It is about empowering users as much as it is about empowering developers, and it intentionally blurs the line between the two. Being able to programme a computer is not a secret that is only to be shared amongst the priviliged few -- it is an activity anybody can partake in. And one everyone must be allowed to partake in should they choose to.

Although I believe strongly in this ideology, I do find it quite difficult to use it as a sole source of inspiration. I've downloaded several ``high priority projects'' from the GNU project and looked at the source, but I usually just end up with a sinking realisation that I just can't get committed to any of them.

Ego

Lets face it, you're a better programmer than most -- I know I am!

So when you're using a piece of software that sucks, you always know you can do a better job. And there's no better way to put your money where your mouth is than show it off to the world in a free software project.

Although it probably took me a while to realise it, this is really what inspired me to join the GNOME project in the first place, and is driving me in my latest interests as well. There is some very poor software out there, and thus a great deal of potential inspiration.

No comments: