• No results found

Open source software development as an innovation system

1. Introduction

1.5 Artifacts

2.1.2 Open source software development as an innovation system

Modeling open source software development as a complex system exhibiting preferential

“It is fairly clear that one cannot code from the ground up in bazaar style. One can test, debug and improve in bazaar style, but it would be very hard to originate a project in bazaar

mode. ... When you start community-building, what you need to be able to present is a

plausible promise” (p. 37).

Plausibility turns out to have its own research literature. Scacchi (2006) surveyed research

related to innovation which might have relevance to open source. Just as considerable thought

was devoted to the origins and organization of living things before open source software existed,

much thought had also been devoted to the origins and organization of ideas. This body of work

is beyond the scope of this research, but the following section dips into it to extract two useful

concepts: recombinant search (Fleming, 1998) and the conditions for beneficial diversity (Page,

2008). Open source provides a laboratory for the study of the development of ideas, as code

repositories record the history of both successful and unsuccessful projects, capturing details of

the changes made to the code in each project, including who worked on it and when. Some of

this data may be understood in light of research into the process of invention.

2.1.2.1 Recombinant search.

When writing a new open source program, a software developer may start by looking for

work done by others to use or modify, as discussed in (Haefliger, Von Krogh & Spaeth, 2008).

The public exposure of source code for search, study and use by others is considered one of the

benefits of the open source approach. The search and development process naturally involves a

creative synthesis where libraries and bits of code are brought together in a new project. Fleming

(1998) explains how such recombinant search produces new inventions. Combining “local”

of the search space, with higher likelihoods for both failure and breakthrough. Fleming uses the

example of ink jet printing to illustrate a combination of familiar factors; the factors (glass slides,

ink, thin-film resistor material and a power source) had all been used previously (Fleming, 1998,

pp. 56-57). Alternatively, a computer using an optical disk drive rather than a magnetic drive

illustrates a discontinuous combination (Fleming, 1998, p. 59). Figure 29 illustrates how factors

of both types may combine over time. “The nodes are inventions, and arcs indicate that a

succeeding invention has drawn from a preceding invention or from outside the extant

technosphere” (Fleming, 1998, p. 27).

Figure 29: Illustration from (Fleming, 1998, Figure 1, p. 27) showing “The holistic web of technological evolution.”

A new open source project may have a better chance of growing when it builds upon

familiar, frequently used ‘standards.’ On the other hand, a new project is likely to require some

untried techniques to generate a breakthrough. Rosenberg (2008) summarized this neatly in

Rosenberg’s Law:

“[Rosenberg's Law]

Software is easy to make, except when you want it to do something new.

[Corollary]

The number of possible factor combinations grows until the search space becomes so large

that the time required for exploration becomes a constraint. Consequently, Weitzman (1998, p.

357) argued that path dependence becomes greater over time as the number of paths not taken

expands combinatorially. Paths not taken include paths taken only so far and then abandoned;

these appear in open source code repositories as projects with no growth. David and Rullani

(2007) noted the resulting “dissipative” effort in open source software development, stating,

“[The Free/Libre Open Source Software] mode of innovation is able to generate a substantial amount of both exploration and exploitation” (p. 21).

The ability of search engines to automate the scanning and indexing of open source

software enhances the visibility of potential factors for recombination. An open source developer

may often be presented with a choice of ‘hits’ in response to a search query. Crowdsourcing the

curation of search results, or finding answers to technical questions as demonstrated at

StackOverflow (http://stackoverflow.com), potentially accelerates the pace of innovation by

shortening the factor search time, as discussed in (Helbing & Balietti, 2011).

2.1.2.2 Project uniqueness.

Open source software development produces unique software projects. Each one is

different. The structures are different. The development teams are different. Projects use

different languages and different development tools in different combinations. Movies made

from open source code repositories using Gource41, a software version control visualization tool,

show the development of projects over time; these animations highlight significant differences in

morphology. Projects do not look alike or grow in identical ways. In particular, multiple projects

41

do not develop the way a field of corn grows from seed or the way a housing development grows

from a single set of blueprints. Each project has its quirks. Thus, understanding the

characteristics of a population of open source software development projects may require taking

an approach suitable for drawing conclusions for individual projects (1 of ), than (non-existent) average or ‘typical’ projects ( ).

One fact can be inferred from this pervasive uniqueness or ‘newness’: most projects will

not grow into successful collaborations. ‘New’ does not mean necessary, worthwhile, suitable or

better. In fact, the most frequent type of project has one and only one developer—possibly

because it suits the needs of only that one developer. Simply as a function of combinatorial

complexity, where errors of omission and commission can multiply as code is written and

shared, projects are fragile to the vagaries of selection by other developers and execution on their

different systems. When projects fail to match the various criteria developers apply before

downloading code, or when the downloaded code fails to run or function as expected, those

projects are cut off from any process of collaborative improvement. Thus, conditions for

beneficial diversity become significant.

2.1.2.3 Conditions for beneficial diversity.

Page (2008) cited four conditions for beneficial diversity:

1. No genius can produce the best solution alone. 2. Contributors are smart relative to the problem.

3. Incremental improvements can be made to proposed solutions.

4. The contributor group is large enough for genuine diversity. (from pp. 159-162)

Some open source projects manifest all these characteristics, allowing the beneficial

collaboration of diverse contributors. Top open source projects involve more code than any solo

contributors (point 4). Developers express and enhance their programming skills (point 2) by

making incremental improvements to open source projects (point 3). Smaller projects can have

the best solution developed by some genius, but then it is the overall system of competition

between such solutions which defines the ‘best solution’ in the context of a large and diverse set

of proffered solutions. Amongst the large numbers of no-growth projects are many second-best

solutions and third-best solutions and so on, any of which could have been ‘best’ if the diversity

of available solutions were not so great. So point 1 applies again, but at a system level rather than

a project level. This is another example of an antifragile strategy at work in open source;

diversity is good.

These conditions are necessary but not sufficient for an open source project to exhibit

beneficial collaboration. There must also be some compelling and challenging problem which

the collaborators agree upon. Whether “scratching a developer’s personal itch” (Raymond, 1999,

p. 25) grows into a group of developers collaborating on a project thus depends significantly on

the nature of the “itch,” particularly the way in which the project compares with other solutions and the level of difficulty involved in working on the project. Thus, the ‘niche’ may be more

important than the itch.

Related documents