• Ei tuloksia

Haeglifer et al. (2008, 191) say that open source software projects offer a vast repository of readily usable software for almost all purposes, and this software can be used, reused and built upon freely. Haefliger et al. (2008) recognize that software code reuse is a form of knowledge reuse in software development.

They say that knowledge reuse and code reuse are fundamental to the econom-ics of innovation and central to software development. Sojer and Henkel (2010) also say that that code reuse is of major importance for open source software development. They say that software reuse is a software-specific form of knowledge reuse and define that it is the process of creating software systems from existing software rather than building software systems from scratch. Fig-ure 2 below (Välimäki 2005) illustrates this knowledge reuse phenomenon and the leveraging of knowledge resources external to the firm.

Figure 2. Open innovation model and the phenomenon of knowledge reuse (Välimäki 2005)

Haeglifer et al. (2008) say that software developers make use of the modular design options of software development by adding reused components to soft-ware they develop. According to their research many developers perceive the reuse as an opportunity get rid of mundane, time-consuming, or difficult cod-ing tasks and therefore the reuse helps them to work on the tasks which they prefer to be more interesting or important.

The research of Sojer and Henkel (2010) shows that 30 percent of the func-tionality of open source software developers programming has been based on reused code. They also find that developers with larger personal networks within the OSS developer’s community who are involved in many OSS projects reuse code more often, presumably because their networks and experience pro-vide access to larger number of reusable artifacts, and that a developer’s com-mitment to the OSS community leads to increased reuse behavior. Sojer and Henkel (2010) say that the artifacts most commonly reused in software devel-opment are components, pieces of software that encapsulate software functional-ity and have been developed specifically for the purpose of being reused. Ac-cording to Haeglifer et al. (2008, 191) the reuse can be regarded as outsourcing part of the development work, and as an enlargement to the project and firm resources.

According Sojer and Henkel (2010) the mentioned kind of knowledge re-use is also an important factor in lowering the cost of innovation. They see that the code reuse phenomenon within the OSS community provides motivation to firms to also leverage existing OSS code in their software development. They say that by reusing the code available from OSS communities the firm receiving the code might lower its development costs. Sojer and Henkel (2010) report that according to Frakes and Kang (2005) the software reuse provides development efficiency and reduced development times, and also improved software quality and provides better maintainability of the software because the developers do not have to develop everything from scratch, and they rather can rely on exist-ing, proven, and thoroughly tested artifacts instead (Frakes and Kang 2005, in Sojer & Henkel 2010).

The typically high upfront investment costs of building an internal reuse library can be avoided at least partly by exploiting free OSS repositories such as Sourceforge (www.sourceforge.net) which offers vast amount of reusable soft-ware. Sojer and Henkel (2010) say that OSS developers have broad options to reuse existing code if they wish because there is lots of reusable OSS code avail-able under licenses that generally permit the reuse of code in other OSS projects.

Sojer and Henkel (2010) suggest that commercial firms should encourage and support their employees to enhance their access to local search for suitable OSS code for reuse by building personal networks, connections to other OSS devel-opers, and by becoming involved in various OSS projects.

Sojer and Henkel (2010) report the findings of Haeglifer et al. (2008) re-garding the OSS communities, stating that software code is reused in cases when the developers want to make their development work more efficient, they lack the skills to implement certain functionality by themselves, they prefer some specific development work over other tasks, or they want to deliver a credible promise for their project (Haeglifer et al. 2008 in Sojer & Henkel 2010).

A credible promise is needed to attract the other developers to contribute to a certain OSS project. According to Sojer and Henkel (2010) developers see code reuse as a means to kick-start new projects, as it helps them deliver a credible promise of their project and close the gap to existing and competing projects

more quickly. Haefliger et al. (2008) say that the credible promise enables suffi-cient functionality of the software to catch the attention of potential developers and users, and say that the reuse of software components seems rational at any time, not only in the beginning of the project. Lerner and Tirole (2002, 220) de-fine the credible promise as a critical mass of code to which the programming community can react. They say that enough work must be done to show that the project is doable and has merit, that is, to deliver a credible promise of the project.

Haeglifer et al. (2008, 189) have found out that one additional incentive to reusing software components is that the reusing projects can benefit of free maintenance by other projects. This means that the reused component is main-tained in its original context, within the software project where it appears origi-nally. In their study of Haeglifer et al. (2008) found out that in the case of 53 re-used component out of total amount of 55 components, at least one new release became available after the first date of reuse. A release here means a new updat-ed version of that piece of software, a component of software product. Haeglifer et al. (2008, 189) report that developers in their study considered external maintenance as an incentive to reuse components because it lowered the long-term cost of producing a component. The developers in their study therefore systematically reused software components because, first, they saved effort by not having to write the component themselves, and second, by not having to maintain it in the future. This, according to Haeglifer et al. (2008) reveals that a pattern of an economical logic influences reuse behavior. The developers bene-fit from free maintenance and improvements made to components external to the project. This economical reuse behavior is in the very core of this study.

The previous finding regarding “outsourced maintenance” of a software component by Haeglifer et al. (2008, 189) adduces the logic and mechanism of the self-renewal of a software component which is being reused. Let us then create an analogy for the behavior of the re-user, and let us assume that this actor reusing the component is not an individual, but a firm. This adduces the central finding of this study. From the re-user’s point of view the software component, the resource which is being reused, renews itself timely, and this happens autonomously and regardless of the firm. According to findings of Haeglifer et al. (2008) this resource renewal happens 53 times out of 55, which means that the renewal of reused component may happen in over 96 percent of the cases, if a generalization can be made from the findings of Haeglifer et al.

(2008). The self-renewal which happens in the form of a software release update represents a development step which makes the product better, because hancement to a component of a product represents an enhancement to the en-tire product. This phenomenon of software component’s self-renewal repre-sents a condition where the resource of the firm, the reused software compo-nent, generates competitive advantage for the firm through the process of au-tonomous self-renewal.

FIGURE 3. The phenomenon of reuse of external resources and the phenomenon of dyna-mic renewal of resources

Figure 3 illustrates how software firms can reuse (2) the existing free re-source components made available by OSS developers (1) and how the firm can, by adding their own development efforts, create (3) new products which are based on reused software components or lines of code, more generally, on re-used resources. Figure 3 also shows the mechanism how the network of OSS developers provides (4) new releases and updates for the reusable item which is now also is a component in the commercial firm’s product. This (4) is the phe-nomenon of dynamic renewal. The updates and releases to the reusable item also update the software firm’s product. Therefore the updating provided by the network of OSS developers provides an autonomous dynamic renewal of the software firm’s resources. This phenomenon creates competitive advantage for the firm, as explained in chapter 6.