Page:The digital public domain.pdf/157

130 of others. The more people who access and analyse data, the more value it has to everybody.

Open source software has shown that openness is complementary to commercial concerns, not counter to them. As the GPL encourages commercial reuse of code, open knowledge is of benefit to commercial activity. Providing a reference system and a common interface, more “added value” applications are built on a base layer. The ability to monitor and report in near-to-realtime on the basis of package development can be useful to more than the “funded community”; it provides real validation of a working (or non-working) business model.


 * 5. What do we mean by componentization?

Componentization is the process of atomizing (breaking down) resources into separate reusable packages that can be easily recombined. It is the most important feature of (open) knowledge development as well as the one which is, at present, least advanced. If you look at the way software has evolved, it is now highly componentized into packages/libraries. Doing this allows one to “divide and conquer” the organisational and conceptual problems of highly complex systems. Even more importantly it allows for greatly increased levels of reuse.

The power and significance of componentisation becomes very apparent when using a package manager (for example, apt-get for Debian) on a modern operating system. A request to install a single given package can result in the automatic discovery and installation of all packages on which that one depends. The result may be a list of tens—or even hundreds—of packages in a graphic demonstration of the way in which computer programs have been broken down into interdependent components.


 * 6. Atomization

Atomization denotes the breaking down of a resource such as a piece of software or collection of data into smaller parts (though the word atomic connotes irreducibility it is never clear what the exact irreducible, or optimal, size for a given part is). For example, a given software application may be divided up into several components or libraries. Atomization can happen on many levels.

At a very low level when writing software we break things down into functions and classes, into different files (modules) and even group