title: OpenSource
modifier: JeremyRuston
tags: definitions

OpenSource is [[defined by Wikipedia|http://en.wikipedia.org/wiki/Open_source]] as //a philosophy, or pragmatic methodology that promotes free redistribution and access to an end product's design and implementation details//.

For me, OpenSource speaks to a fundamental truth about software: software is unlike anything else we produce in our post-industrial revolution era. Initially, we thought that programming would evolve to be a branch of engineering: a process that was amenable to conventional techniques of mass production, and the traditional business models we have wrapped around the things we make and the things we dig out of the ground.

As it has turned out, programming isn't like engineering at all. With an endeavour such as bridge building, engineers can reliably build bridges to any required specification, with a full understanding of the practical limitations under which it has to operate. In software, we struggle to manage large scale development. We can't even reliably estimate the complexity of non-trivial programming tasks. Organisations increasingly think of custom software as being a liability, and not the asset that it first appears.

OpenSource doesn't change the  nature of software, but instead incorporates it into the philosophy of its production. The most fundamental insight is that programming is hard, and that the best way to mitigate the problem is to have lots and lots of smart brains working on it. But open source doesn't seek to do that by prescribing a reductionist, hierarchical breakdown of the required tasks that can be allocated to an army of programmers. Instead, OpenSource suggests that our code should be accessible to everyone, to create the widest possible surface area for potential collaborators.

This leads to an intense, organic, chaotic way of working, but the results are undeniably impressive.

TiddlyWiki is part of a small band of OpenSource projects like Firefox that don't just target software developers, but provide something that end users can use themselves, without any special programming ability.

Here's a video of a presentation I did in 2007 called [["How to Start an Open Source Project"|http://vimeo.com/856110]].
