Runar Os Mathisen runaros@stud.ntnu.no Supervisor: Reidar Conradi Co-advisor: yvind Hauge Depth Study - Fall 2008 TDT4520 - Program- og informasjonssystemer Department of Computer and Information Science Abstract Open Source Software (OSS) has become important to the software industry. A survey discovered that close to 50% of the Norwegian software industry uses Open Source [Hauge, 2007] and a study by the European Commission shows that companies and individuals has contributed to a lot of value creation in the form of OSS development [Ghosh, 2006]. This thesis intends to explore if there is a relation between OSS development tools and OSS components and nd the adoption of OSS development tools and OSS components in the software industry. This is done by performing a literature study and by executing telephone interviews. The telephone interviews are conducted with a random sample of companies in the Norwegian software industry. The research presented here suggests that there is no direct relation between usage of OSS develop- ment tools and OSS components, but rather that the availability of OSS alternatives with the desired functionality and the awareness of Open Source are determining factor in the adoption of both OSS development tools and OSS components. 87.5% of the interviewed companies integrated OSS components into their software, but the degree of usage is very small. 87.5% of the interviewed companies used one or more OSS development tools, and in total 44% of the development tools (28 out of 64) were Open Source. The main contributions of this thesis is six hypotheses concerning adoption of Open Source in the software industry, possible explanations of these hypotheses, a basis for conducting future studies to conrm these hypotheses and a list of OSS development tools used by the software industry. The stated hypotheses are listed in the table below. Number Hypothesis H1 There is no direct relation between usage of Open Source Software de- velopment tools and Open Source Software components. H2 Functionality is the most important factor in choice of development tools and software components. H3 High availability of Open Source solutions leads to higher adoption of Open Source. H4 High awareness of Open Source solutions leads to higher adoption of Open Source. H5 The adoption of OSS components in the software industry is increasing. H6 The extent of adoption of OSS components by the individual companies in the software industry is very small. Preface This thesis investigates if there is a relation between usage of OSS development tools and OSS compo- nents, and the adoption of OSS development tools and OSS components in the software industry. The assignment for this thesis is given by the Department of Computer and Information Science (IDI) at the Norwegian University of Technology and Science (NTNU). I would like to thank my supervisors Professor Reidar Conradi and PhD Candidate yvind Hauge for their support and advice, Professor Tor Stlhane for his advice on empirical methods and Associate Professor Jingyue Li for his advice on Open Source. Last but not least, I would like to thank all of the interviewees who took time to speak with me about Open Source. Trondheim December 17, 2008 Runar Os Mathisen i ii Contents I Introduction 1 1 Introduction 3 1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Research method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 II Prestudy 7 2 What is Open Source 9 2.1 Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Free Software Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Open Source Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.3 Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1 Protective licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Permissive licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.3 Hybrid licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3 Open Source integration 13 3.1 Development tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1.1 Modelling Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1.2 Code Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1.3 Compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.4 Debuggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.5 Version Control Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.6 User Documentation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.7 Test Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.8 Build Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.9 Bugtrackers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.10 Support Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.11 Integrated Development Environments . . . . . . . . . . . . . . . . . . . . . . 15 3.1.12 Other Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Component-based software development . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.1 Benets of OSS components . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.2 Drawbacks of OSS components . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.3 Adoption of OSS components . . . . . . . . . . . . . . . . . . . . . . . . . . 17 iii III Research 19 4 Research design 21 4.1 Research motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 Research methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Population and Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.1 The Norwegian Software Industry . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.2 Stratication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.3 Response rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4 Interview design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 IV Results 27 5 Results 29 5.1 Data foundation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.1 Company A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.2 Company B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.3 Company C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.4 Company D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.5 Company E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.6 Company F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.7 Company G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.8 Company H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2 Relation between OSS tool usage and OSS component usage . . . . . . . . . . . . . . 31 5.2.1 Factors inuencing adoption of Open Source . . . . . . . . . . . . . . . . . . 32 5.2.2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.3 Adoption of OSS Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3.1 Tool usage by tool category and company . . . . . . . . . . . . . . . . . . . . 33 5.3.2 Important factors in development tool choice . . . . . . . . . . . . . . . . . . 33 5.3.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.4 Adoption of OSS Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.4.1 Important factors in component choice . . . . . . . . . . . . . . . . . . . . . . 36 5.4.2 OSS components vs. proprietary components . . . . . . . . . . . . . . . . . . 36 5.4.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5 Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5.1 Tool categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5.2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6 Conclusions 41 6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2 Limitations and validity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Bibliography 42 V Appendices 45 A Mapping from research to interview 47 B Interview data 49 iv C Tool usage by company 51 D Development Tool Titles 55 E Interview Form 57 v vi List of Tables 1.1 Research Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Hypotheses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 The Four Freedoms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.1 Distribution of companies in the data set . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 Distribution of active companies over size, Fourth quarter 2008 . . . . . . . . . . . . . 24 4.3 Strata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4 Interview parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.1 Categories the different companies were selected from . . . . . . . . . . . . . . . . . 30 5.2 Degree of OSS development tool usage by number of companies in the different tool categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3 Number of tool categories with the given degree of OSS development tool usage by the different companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4 Open Source development tools used in the Norwegian software industry . . . . . . . 40 6.1 Hypotheses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 A.1 Mapping from research questions to interview questions . . . . . . . . . . . . . . . . 47 B.1 Interview data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 C.1 Integrated Development Environments used by companies . . . . . . . . . . . . . . . 51 C.2 Modelling Tools used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 C.3 Code Editors used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 C.4 Compilers used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 C.5 Debuggers used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 C.6 Version Control Systems used by companies . . . . . . . . . . . . . . . . . . . . . . . 52 C.7 User Documentation Tools used by companies . . . . . . . . . . . . . . . . . . . . . . 53 C.8 Test Tools used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 C.9 Build Tools used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 C.10 Bugtrackers used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 C.11 Support Tools used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 C.12 Other Tools used by companies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 D.1 Development Tool Titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 vii viii List of Figures 4.1 Research methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ix x Part I Introduction 1 Chapter 1 Introduction 1.1 Background Open Source Software (OSS) has become important to the software industry. There is a multitude of OSS tools and OSS components on the Internet, and several studies conclude that the adoption of Open Source Software in the software industry is signicant [Hauge, 2008][Mindel et al., 2007]. This is interesting because there is a great potential in Open Source [Ghosh, 2006], but there is little empirical research around usage of Open Source ([Hauge, 2007], [Morgan and Finnegan, 2007] and [West and OMahony, 2005]). There are two main ways that Open Source Software can be used in the software industry. Software companies can use OSS development tools for creating software and integrate OSS components into their software. But what inuences the adoption rate of Open Source in the software industry, and at what extent has the software industry adopted Open Source? This thesis investigates if there is a relation between usage of OSS development tools and OSS components, and the adoption of OSS development tools and OSS components in the software industry, which leads to the research questions of this thesis that are presented in table 1.1. Number Research Question RQ1 Does the use of OSS development tools increase the use of OSS com- ponents in software development or vice versa? RQ2 How extensive is the adoption of Open Source Software development tools in the software industry? RQ3 How extensive is the adoption of Open Source Software components in the software industry? RQ4 Which Open Source Software development tools are used by the soft- ware industry? Table 1.1: Research Questions 3 4 1. Introduction 1.2 Research method The way this thesis investigates the research questions is by rst performing in-person preinterviews with developers from software companies selected by convenience, and then choosing a random sample of eight Norwegian software companies in which telephone interviews were conducted. All intervie- wees were also followed up on email to get verication of the interview notes taken and answer to follow up questions. The results were then found based on the research questions and the interview data. 1.3 Contributions The main contributions of this study is six hypotheses concerning adoption of Open Source in the soft- ware industry listed in table 1.2, which form a basis to conduct a further and more extensive study. Other contributions are a literature study (part II), a discussion around factors inuencing the adoption of Open Source (see section 5.2.1, section 5.3.2 and section 5.4.1) and a list of Open Source develop- ment tools used by the software industry (see table 5.4). Number Hypothesis H1 There is no direct relation between usage of Open Source Software de- velopment tools and Open Source Software components. H2 Functionality is the most important factor in choice of development tools and software components. H3 High availability of Open Source solutions leads to higher adoption of Open Source. H4 High awareness of Open Source solutions leads to higher adoption of Open Source. H5 The adoption of OSS components in the software industry is increasing. H6 The extent of adoption of OSS components by the individual companies in the software industry is very small. Table 1.2: Hypotheses 1.4 Content This thesis consists of ve parts. Part I consists of this introduction. Part II consists of a prestudy. Chapter 2 presents the denitions of Free Software and Open Source with a discussion of the many terms used to describe Open Source Software, and describe some of the common classes of Open Source licenses. Chapter 3 presents how the software industry uses OSS by using development tools and integrating OSS components into their products and services. Part III presents the research design. Section 4.1 presents the motivation of the thesis and the stated research questions. Section 4.2 discusses possible research methodologies and presents the chosen re- search method. Section 4.3 presents the Norwegian software industry as the population for the study together with the stratication of it, while section 4.4 gives insight into the design process of the inter- view form. Adoption of Open Source Software in the Software Industry 1.4. Content 5 Part IV presents the results of the study. Chapter 5 describe the data foundation of the study together with proles of the interviewed companies. This is followed by the ndings for each of the four research questions in separate sections, each section with a presentation of the results together with a discussion of the results and stated hypotheses. Chapter 6 gives the conclusions of the thesis, together with a discussion of the limitations and validity of the results, and proposed future research. Part Vcontains all the appendices for the thesis; a mapping from the interview questions to the research questions, a table with the data extracted fromthe interviews, tables describing the specic development tools used by the interviewed companies according to tool category, a list of all development tools used by any of the companies and the interview form used during the interviews. Runar Os Mathisen 6 1. Introduction Adoption of Open Source Software in the Software Industry Part II Prestudy 7 Chapter 2 What is Open Source 2.1 Denition A simplied denition of Open Source is that it is software that you have the freedom to use, study, modify and redistribute. That is however very simplied, and there are in fact two formal denitions that is used by two separate organizations. It is the Free Software Denition by the Free Software Foundation (FSF) and the Open Source Denition by the Open Source Initiative (OSI). 2.1.1 Free Software Denition The history of free software starts when Richard Stallman at MIT Articial Intelligence Lab wanted the source code for the control program of the printer they were using because the lack of certain features made the usage of the printer extremely frustrating [Stallman, 2008]. Stallman went on to write the GNU Manifest and launched the GNU Project, and he coined the four freedoms that denes what free software is [Free Software Foundation, 2008a] (see table 2.1). Freedom Description Freedom 0 The freedom to run the program for any purpose. Freedom 1 The freedom to study and modify the program. Access to the source code is a precondition for this. Freedom 2 The freedom to copy the program so you can help your neighbor. Freedom 3 The freedom to improve the program, and release your improvements to the public, so that the whole community benets. Access to the source code is a precondition for this. Table 2.1: The Four Freedoms 2.1.2 Open Source Denition Following the announcement that Netscape planned to release the source code of Netscape Navigator as free software, many people wanted a more pragmatic viewon free software [Open Source Initiative, 2008a]. The term Open Source was invented to appear more pleasing to the corporate world. Shortly after OSI 9 10 2. What is Open Source was founded, and the organization created the Open Source Denition. The denition lists ten re- quirements software must adhere to in order to call itself Open Source [Open Source Initiative, 2008b]. It consists of requirements about not discriminating against persons, groups, elds of endeavor and technology in addition to requirements that is covered by the four freedoms dened by FSF. 2.1.3 Terms The rst denition speaks of Free Software, and the latter denition speaks of Open Source Software. The distinction between these two is rather small though, and most software that is Free Software is also Open Source Software and vice versa. Both denitions describe software with similar development models, the main difference lies in the differing cultures and philosophies. There has therefore been some attempts at creating a common term that both organizations can ac- knowledge. One is Free and Open Source Software (FOSS or F/OSS) or the variant Open Source Software/Free Software (OSS/FS). A third alternative is Free/Libre/Open Source Software (FLOSS). The latter is preferred by many as it emphasizes freedom (libre is Spanish for freedom or liberty [Wikipedia, 2008a]) rather than free as in free of charge. In mainstream media and amongst regular people the terms Open Source Software (OSS) or simply just Open Source (OS) seems most common. Free Software (FS) is also used, but mostly within the community around FSF. This thesis does not distinguish between Free Software and Open Source Software as the practical differences is few and small. However, since existing literature uses all of the above mentioned terms quite interchangeably, this thesis is also colored by this. Whenever the terms Open Source, Open Source Software, Free Software, Free and Open Source Software and Free/Libre/Open Source Software is used in this thesis it should be interpreted as FLOSS unless otherwise specied. 2.2 Licenses A software license grants the user rights to use and redistribute the software. In the Open Source world there are fundamentally two types of licenses, the protective licenses and the permissive licenses. 2.2.1 Protective licenses The protective licenses are those with a copyleft clause, meaning that any derivative works must be released under the same license, thus ensuring that any derivatives are kept under a protective license [Free Software Foundation, 2008d]. This means that one cannot take a software component licensed with a protective license and use it in software licensed under a proprietary license. The most popular of the protective licenses is the GNUGeneral Public License (GPL), which is the orig- inal license written by Richard Stallman to enforce the four freedoms [Free Software Foundation, 2008b]. The GPL is the most popular of all open source licenses, used by nearly 60%of all Open Source projects [Black Duck Software, 2008]. 2.2.2 Permissive licenses The permissive licenses dont have a copyleft clause, meaning that any derivative works easily can be released under a different license. This means that software components released under a permissive Adoption of Open Source Software in the Software Industry 2.2. Licenses 11 license can be used in software licensed under a proprietary license. This license is therefore ideal for companies that want to use an Open Source component in their proprietary product. The most popular permissive licenses are the BSD license [OSI, 2008a], the MIT license [OSI, 2008b] and the Apache license [Apache Foundation, 2008], used by approximately 6%, 3% and 3% of all Open Source projects. 2.2.3 Hybrid licenses There also exist licenses which are hybrids of the protective and the permissive licenses. The most pop- ular of these are the GNU Lesser General Public License (LPGL) [Free Software Foundation, 2008c], used by approximately 10% of all Open Source projects. This license is quite similar to the GPL, the difference is that while the license imposes a copyleft restriction on the software component with the license itself, it doesnt do this for software which uses the component. This means that it is possible for a company to use a component with the LGPL license in a proprietary product, given that the source code of the component isnt modied and that the source code of the component is distributed with the software. Runar Os Mathisen 12 2. What is Open Source Adoption of Open Source Software in the Software Industry Chapter 3 Open Source integration There is primarily two ways the software industry uses OSS. The rst is using development tools such as integrated development environments, and the second is integrating Open Source components with software products. 3.1 Development tools It is said that a lot of the Open Source projects starts by scratching a programmers itch [Raymond, 1998]. Naturally, since most open source participants are developers, a lot have had itches concerning program- ming and created their own development tools, many which has been open sourced. This doesnt only concern individual developers, but also software companies. Several software companies create their own development tools and then open source them. This includes popular tools such as the integrated development environment Eclipse (open sourced by IBM Canada to increase exposure of the devel- opment platform [Cernocek, 2005]) and the version control system Subversion (planned Open Source project by CollabNet to replace the then current market leader CVS [Wikipedia, 2008b]). The combined collaboration between individual developers and software companies have led there to be Open Source tools for all phases of software development. Below are listed the most common categories of software development tools, and some popular open source alternatives in each category. 3.1.1 Modelling Tools Modelling tools and design tools can be used to create diagrams and data models of software systems intended for the developers, for example use cases to describe the requirements of a system or UML diagrams to describe the architecture of the system. Other uses include design of graphical user inter- faces and creation of charts used for project management. Some modelling tools used today are Dia and Use Case Maker, while some IDEs (see 3.1.11) have automatic creation of diagrams taken from source code. 3.1.2 Code Editors Code editors are perhaps the core tool used by developers to write source code. Although some stan- dalone code editors exist, they are often used as an integrated part of an IDE (see 3.1.11). Standalone 13 14 3. Open Source integration text editors span from simple editors like Notepad2 to more complex ones such as Emacs, vi and Notepad++ which has richer features such as syntax highlighting, auto completion and automatic for- matting. 3.1.3 Compilers Compilers transform the source code on the form of textual data readable by human beings into binary data readable (executable) by computers. Historically the GNU C Compiler (GCC) has been important, it is now renamed to GNU Compiler Collection and supports many languages. 3.1.4 Debuggers Debuggers are tools that makes it easier to nd bugs in software. The typical behaviour for a debugger is that it allows a developer to dene breakpoints in the code where the execution of the software is stopped and the developer can peek into the state of the program (which instructions has been executed and the state of all variables). The GNU Debugger has been very popular, and in addition several open source IDEs (see 3.1.11) integrate debuggers. 3.1.5 Version Control Systems Version control systems (VCS) function as repositories for source code. Developers check out code from a source code repository, and check in the changes afterwards. Code can be checked out and worked on by several developers simultaneously, and if somebody tries to check in conicting changes the VCS will automatically notify about this. The VCS will also maintain a revision history of all changes and updates, and it is possible to rollback to an earlier edition if desired. At the moment centralized version control systems like Subversion and CVS are the most used, but distributed version control systems like Git and Mercurial seem to catch on as well. 3.1.6 User Documentation Tools Documentation tools are tools that aids the creation of documentation of software. These tools range from standard document editors such as OpenOfce.org, to tools for collaborative documentation on the Internet such as wikis by using MediaWiki. 3.1.7 Test Tools Test tools are tools that aids and automates testing of software. This could be by providing a framework for writing unit tests, a framework for mocking objects (such as Internet and database connections) or tools to automate the running of tests. Popular unit test frameworks include JUnit and NUnit, with JMock and NMock being popular mocking frameworks. 3.1.8 Build Tools Build tools are tools that automate many tasks in the building of the software. This includes tasks like compiling the source code into binary data, packaging the binary data into executable applications, run- Adoption of Open Source Software in the Software Industry 3.2. Component-based software development 15 ning tests, creating documentation and deploying of application to production environments. Typically these tasks are written in a script le which enables the build process to be run as a one-click procedure. Popular build tools include Apache Ant, Make and CruiceControl. 3.1.9 Bugtrackers Bugtrackers are tools that makes it easy to register bugs and save them in a database. Having a central database makes it easier to coordinate the process of xing errors by keeping tracks of known bugs and resolved bugs, and the assignment of bugs to developers for xing. Some bug trackers also maintains a list of requested features. Amongst the most common ones are Bugzilla and Trac. 3.1.10 Support Tools Support tools help software companies giving support to customers. Primarily this is achieved by registering support requests as tickets in the support tool, assigning the ticket to different persons that might resolve the customers issues. These tools can also be integrated with bugtrackers. An open source support tool osTicket and OTRS. 3.1.11 Integrated Development Environments An Integrated Development Environment (IDE) tries to integrate several of the above mentioned tools into one standalone tool. An IDEs primary function is being an advanced text editor for source code, which includes syntax highlighting, automatic formatting and auto completion, while provid- ing a overview of all entities in a software project. Other features of an IDE are the integration of build tools, debugging tools and version control systems. In fact, pretty much every aspect of software developing can be integrated into an IDE. The most popular Open Source IDE is probably Eclipse. 3.1.12 Other Tools Several other tools might be used for software development as well. Some examples include FileZilla for transferring les, Paint.NET for graphical design and 7-Zip for compressing. 3.2 Component-based software development Component-based software development (CBSD) as a software development process is when software developers incorporate software components, either commercial-off-the-shelf (COTS) components or OSS components, in their own software. There are several benets to this approach. The main is that it usually provides lower costs and a shorter development time, even when considering the time usage of new tasks, such as searching for, reviewing and integrating the components. 3.2.1 Benets of OSS components COTS components and OSS components share many of the same properties, but there are some dif- ferences. The obvious point, and the one integrators put most emphasis on [Li et al., 2006], is the cost Runar Os Mathisen 16 3. Open Source integration perspective. The initial cost of obtaining a license to integrate an OSS component is non-existent, making OSS components a cheaper option compared to COTS components. There are however several other important benets to using OSS components. Many of the benets of OSS components compared to COTS have to do with licensing. Licensing of COTS components require a lot of negotiations. Nokia claims that their average in-licensing process for a COTS component takes between 6-12 months [Jaaksi, 2007], and that licensing problems are one of the most common reasons for missing features and delayed products. With OSS components the license is immediately available. Another aspect of licensing concerns scaling. With many COTS components the cost increases with the usage of the component (for example number of products sold with the component integrated). With OSS components the cost is the same no matter the scale of the use of the component [Madanmohan and De, 2004]. OSS components are usually easier to evaluate in advance than COTS components. This stem from two facts. The rst is that the availability of source code enable potential integrators to inspect the functionality, architecture and quality of the component before any decisions are made. The second fact is that since the majority of OSS components have a non-existent initial cost it is easy to try out the component and make prototypes in advance. Another benet is that an integrator can evaluate the quality of code contributions to an open source project, which means that they can asses the quality of developers before eventual hirings [Jaaksi, 2007]. OSS components also offer a great deal of exibility when problems need to be xed or functionality need to be changed. For COTS components one is often at the grace of the component vendor, who might have release plans that differ fromthe integrator. For OSS components the integrator might x the bug themselves, or x the bug with the community behind the component in cooperation [Jaaksi, 2007]. The security perspective is also important. The transparency achieved by the extended peer review obtained by the availability of source code increases condence that a component doesnt contain any unexpected security vulnerabilities ([Cruz et al., 2006], [Perrin, 2006] and [Rufn and Ebert, 2004]), or even intended malicious code. A nal benet is that usage of OSS components decreases dependencies on proprietary vendors. If a proprietary vendor should discontinue the development of a component (or simply just go out of business) the integrator is left with a component with no possibilities to further development. With an OSS component the availability of the source code ensures that the integrator can continue to use the component. Additionally, if the integrator is a government there is the political benet of reducing dependencies on foreign proprietary software [Mindel et al., 2007]. 3.2.2 Drawbacks of OSS components There are also some drawbacks of OSS components compared to COTS components. One is that OSS components constantly evolve, and not always in the direction wanted by the integrator. This leads to increased work in order to integrate upgraded versions of OSS components [Jaaksi, 2007]. With COTS components one might have specic contracts which guide the further development of the components. While it is possible to get support from OSS components, this support is often informal and without guarantees. With an agreement with a COTS vendor it is usually easier to get support on short notice by simply sending an email or calling the vendor [Di Giacomo, 2005]. There are also some legal aspects that favor COTS components. One is that the plethora of Open Source licenses can be difcult to understand [Di Giacomo, 2005], and the licensor might le claims that the production of a product is ended or a fee for the damages [Rufn and Ebert, 2004]. Additionally, some integrators work with software where consequences of bugs in software are very high, such as in the Adoption of Open Source Software in the Software Industry 3.2. Component-based software development 17 health sector. These integrators might want to use COTS components in which liability agreements with the vendor can be established. 3.2.3 Adoption of OSS components AFinnish survey state that amongst software companies in the South Karelia and Kymenlaakso provinces around 50 percent either studied the possibility to utilize OSS in their business or had already done it to some extent [Nikula and Jantunen, 2005]. A Norwegian study shows that near 47 percent of the Norwe- gian software companies uses OSS components in the software development, and that these companies employ 62 percent of the people in the software industry [Hauge, 2008]. The Malaysian government has established that 60 percent of the web servers in the country should use OSS, and that the current adoption of OSS is around 50 percent [Mindel et al., 2007]. All of these studies does however not focus on the degree of usage in the organizations using OSS components, merely if or if not they use OSS components. Runar Os Mathisen 18 3. Open Source integration Adoption of Open Source Software in the Software Industry Part III Research 19 Chapter 4 Research design 4.1 Research motivation A study by the European Commission shows that companies and individuals has contributed to a lot of value creation in the form of OSS development [Ghosh, 2006]. OSS is in other words a great resource that can and should be utilized. Having increased research and empirical data might increase condence in and promote usage of OSS. This thesis wants to study the usage of Open Source Software development tools and usage of Open Source Software components in the software industry. The main research goal is to investigate if there is a relation between the usage of OSS development tools and the usage of OSS components, and what inuences what. This leads to the rst research question of this thesis: RQ1: Does the use of OSS development tools increase the use of OSS components in soft- ware development or vice versa? In order to investigate this question one must nd out how extensive the adoption of OSS development tools and the adoption of OSS components is in the software industry. Doing this has also has a merit on its own. If the usage of OSS development tools shows to be dominant in the software industry this should be reected in the education for computer science students. This doesnt only concern learning specic tools, but given that the general usage shows to be high it might also be important learning an open source mindset. That is, how to search for and evaluate suiting tools, and possible benets of using open standards. If the usage of OSS components is increasing the educational system should put a bigger emphasis on component-based development and selection processes for OSS components. This leads to the following research questions: RQ2: How extensive is the adoption of Open Source Software development tools in the software industry? RQ3: How extensive is the adoption of Open Source Software components in the software industry? Another side effect of such an investigation is that it leads to a list of commonly used OSS development tools. For users of development tools it is hard to nd and evaluate which development tools that might be used in the organization. Having a list of which development tools are used by the software industry might increase condence in these tools and improve the decision making process for potential users. This gives research question four: 21 22 4. Research design RQ4: Which Open Source Software development tools are used by the software industry? 4.2 Research methodology There are several possibilities concerning howto answer the stated research questions. The rst possible approach is to perform a survey of software companies using a simple questionnaire. The advantage of using this method is that it provides vast numerical data to analyze. With closed questions and using computer tools the collection and analysis of the data might also be less time consuming than other methods. However, nding respondents and getting answers is a very time consuming process. Another option is to choose some companies and perform personal interviews, either with one person from each company, or with several persons from a single company. The advantages of this method is that one is able to perform an in-depth analysis of the data, and there is a possibility to ask follow-up questions to the interviewee. The biggest disadvantage is that data analysis can be very time consuming and challenging, and that the sources for the data is fewer. There are also several methods in between these two extremes, for instance one might choose to perform short telephone interviews with a set of people a bit larger than what one would choose for in-depth interviews. This option gives the possibility to collect data from more sources than personal interviews, while at the same time nding respondents might not be as time consuming as with a questionnaire. The research question stated as the main research question (see 4.1) wants to examine if there is a relation between usage of Open Source development tools and Open Source components. While the other three questions might have been best answered by a regular survey, this question is a rather complex one, and a regular survey will probably not give a deep enough answer to it. Figure 4.1: Research methodology This thesis will therefore try to go more in-depth by performing interviews with developers in the soft- ware industry. The rst step is to perform a prestudy which give a basis to perform some preinterviews with developers selected by convenience. These preinterviews are conducted as in-person interviews Adoption of Open Source Software in the Software Industry 4.3. Population and Sample 23 with a duration of around an hour with representatives from one company with some usage and one company with less usage of OSS development tools and components. The ndings from the preinterviews give a basis to shape an interview form to be used in thirty minutes telephone interviews with a random stratied sample from the Norwegian Software Industry. Notes from the interviews should be written down and sent together with follow up questions by email to the respondents for verication of notes and gathering of additional information. The analysis of the data from these interviews form the results of the thesis. The entire process is shown in gure 4.1. 4.3 Population and Sample The thesis has chosen the Norwegian Software Industry as the basis for data collection. The preinter- views are conducted with developers from two Norwegian software companies known in advance by the author of the thesis. The telephone interviews are conducted with developers from eight randomly drawn software companies from a list of Norwegian software companies. This selection of companies is based on the same set of companies used in [Hauge, 2007], a list consisting of 569 companies. The theoretical population comprises software developing companies in Norway, and the list of compa- nies is based upon data primarily from The Central Coordinating Register for Legal Entities (CCRLE) from the national census bureau in Norway (Statistics Norway). The list is then further rened by yvind Hauge, Carl Fredrik Srensen and Marinela Gerea, including information about whether or not open source is used by the company. The distribution of companies in the data set is shown in table 4.1. Employees Companies not using OSS Companies using OSS Total 0 to 4 52 42 94 5 to 24 153 119 272 25+ 98 105 203 Total 303 (53%) 266 (47%) 569 (100%) Table 4.1: Distribution of companies in the data set 4.3.1 The Norwegian Software Industry CCRLE collects information on all enterprises in Norway, and classies them according to their kind of economic activity [Hauge, 2007]. The interesting sector for this thesis is the ICT sector, a sector that in 2005 employed around 70 000 people. This sector includes ICT Manufacture industry, ICT trade industry, and telecommunications industry. These sub sectors dont have software development as their main focus. The sector however also includes a sub sector about database activities and a sub sector about computer and related activities, and these sub sectors form the set of companies used by this thesis. Table 4.2 shows the distribution of active companies within this set, according to size [SSB, 2008]. 4.3.2 Stratication The companies are grouped into size based on number of employees, a grouping used in the data set comprising the population. Very small companies (0 to 4 employees) are excluded from the population Runar Os Mathisen 24 4. Research design Category Number of active enterprises No employees 8304 1-4 employees 2389 5-9 employees 603 10-19 employees 395 20-49 employees 253 50-99 employees 76 100-249 employees 56 250+ employees 9 Table 4.2: Distribution of active companies over size, Fourth quarter 2008 because they are too small and dont have the resources to develop large software products. The moti- vation separating companies into small (5 to 24 employees) and medium companies (25+ employees) is because once a software project reaches a certain size and requires a certain amount of people, the processes and interaction between the developers might change and new tools might be taken into use, thus giving different answers. Additionally the set of companies is grouped according to whether or not the company used open source in the last update of the data source. Combined this comprises the separation of the population into four groups. The strata is listed in table 4.3. Group Medium sized company using open source Small company using open source Medium sized company not using open source Small company not using open source Table 4.3: Strata 4.3.3 Response rates From each group a random sample was drawn, and contacted in order to perform a telephone interview. If a interview couldnt be conducted, a new random sample was drawn, and so on, until two developers from a company from all four groups had responded and been interviewed. In total 13 companies were contacted. Out of these, eight resulted in a successful interview, giving a response rate of 62 percent. Two companies didnt respond, and three companies didnt have the time. 4.4 Interview design The design of the interview aims at answering the four stated research questions, and it is split into ve parts (see table 4.4). One part about the company and their products, one part about which tools are used, one part about the reasons behind the tool usage, one part the extent of and reasons behind component usage, and a nal part about any relation between tool usage and component usage. The rst version of the interviewwas used in the preinterviews, and based on the ndings in the preinterviews the design was improved before usage in telephone interviews. The relation between interview questions and research questions in the nal design is listed in appendix A. Adoption of Open Source Software in the Software Industry 4.4. Interview design 25 Interview Part Description Part one Population description Part two Development tools Part three Tool usage Part four Component usage Part ve Relation between tool and component usage Table 4.4: Interview parts The rst version of the interview contained a few large open ended questions. The questions were all created having in mind that they should answer the research questions. This version was used in the rst preinterview, an interview which gave some interesting insights into differences in usage between developers when it comes to age, technical platform and type of development (desktop applications versus web applications). The next version of the interview therefore had extra questions for better describing the population, in addition to some of the other questions that were slightly altered. The next version of the interview was used in the second preinterview. Based on this the layout of the interview form was altered to better arrange the answers, several of the questions was rephrased to better conform to natural conversation ow, and several of the questions got additions of natural follow up questions. All this gave basis to the third version of the interview, which is what was used roughly for the telephone interviews. The interview was however still revised further throughout the telephone interview phase, as new information gave basis for new hypotheses that could be investigated closer in the remaining telephone interviews. The nal design of the interview form can be found in appendix E. Notes were taken on the interview form during the interview, and transferred to digital form right after. The notes were then sent to the interviewee for validation on email, together with any follow up questions. All interviewees responded to this email and either validated the contents or came with corrections, together with answering the follow up questions. Runar Os Mathisen 26 4. Research design Adoption of Open Source Software in the Software Industry Part IV Results 27 Chapter 5 Results This chapter presents the ndings of the thesis. First the data foundation of the results is described, followed by the results of the four different research questions. The results give basis to six hypotheses, which are summarized in the table 6.1. 5.1 Data foundation The data foundation for the results of the thesis consists of the eight telephone interviews together with the two preinterviews. From the eight telephone interviews three data tables were created. The rst table (see table B.1) consists of general information, such as number of employees, development elds (desktopapps/webapps/consultancy services), important factors in tool/component choices and some general opinions. The second table (see appendix C) consist of the concrete development tools used by the companies, in addition to the authors estimation of how extensive the usage of Open Source tools was within each tool category based on the degree of usage of each title based on the interviews and the number of OSS solutions compared to proprietary and internal solutions within the specic categories. The third table (see table D.1) is a simple list of all the unique titles used by the interviewed companies. In addition to this the textual notes from both the preinterviews and the telephone interviews was used to nd explanations to the conclusions derived from the data. The textual notes are excluded from this thesis of condentiality reasons, however an anonymized short summary of each company prole is given below. Note that the given numbers of employees didnt always correspond with the initial categorization of the companies in the data source used for selection. This could be due to the data source not being updated, the denitions of which entities that are used for size could differ from the data source and the interviewee, and there is also a potential of incorrect data from wither the interviewees or the data source. The companies and the category they were randomly selected from are shown in table 5.1. 5.1.1 Company A Company A is a company with approximately 75 employees, of them 17 developers. They develop the solutions for a media website, using PHP with MySQL/Oracle as the main technological platform. The company used some OSS development tools, few OSS components, but the platform behind the website was mainly Open Source (Apache web servers running on Linux with PHP and partly MySQL). 29 30 5. Results Company Category Company A Medium sized company that used OSS Company B Small company that didnt use OSS Company C Small company that used OSS Company D Medium sized company that didnt use OSS Company E Medium sized company that used OSS Company F Medium sized company that didnt use OSS Company G Small company that didnt use OSS Company H Small company that used OSS Table 5.1: Categories the different companies were selected from 5.1.2 Company B Company B is a company with approximately 11 employees, of them 4 developers. They develop solutions for the health care industry, using Delphi and .NET to develop both desktop applications and web applications. They have a strong partnership with Microsoft, and use mainly proprietary development tools. There is much component usage, but little OSS component usage, mainly for internal use. Because of strong security and reliability requirements proprietary components were preferred because of strong agreements with the vendors. 5.1.3 Company C Company C is a company with approximately 22 employees, of them 6 developers. They develop a web application for software companies using C++. They use some OSS development tools, OSS components at a very small degree, but are in general positive to usage of Open Source Software. 5.1.4 Company D Company D is a company working in the petroleum sector with approximately 500 employees, of them 7 developers on the interviewees department. The department serve mostly as an internal consultancy service for other departments when they need help, and dont work much with conventional software but rather by doing 3D modelling and programming in the proprietary programming language G for petroleum hardware equipment. The department use exclusively proprietary development tools and components, but his is however because of no availability of OSS alternatives. Other departments in the company use OSS, and the interviewees department was open to usage of OSS if alternatives became available. 5.1.5 Company E Company E is a company with 140 approximately employees, of them 35 developers. They develop solutions for hardware in the road industry, and thus program both directly for integrated circuits in C and Assembly, as well as some internal and external conventional desktop applications in C++ and Python. This company was the most positive to Open Source, and most developers worked on Linux using mainly OSS development tools where possible. Additionally the company was positive to OSS Adoption of Open Source Software in the Software Industry 5.2. Relation between OSS tool usage and OSS component usage 31 component usage, but because of the work domain being narrow they only used components at a very small degree. 5.1.6 Company F Company F is a company with approximately 75 employees, of them 22 developers. They develop a software product for customer service as a desktop application in C++ and as a web application in .NET. They used mostly proprietary development tools, and very few OSS components. The low usage stems partly from a strong partnership with Microsoft, but in principle the company wasnt negative to using Open Source. 5.1.7 Company G Company G is a company with approximately 14 employees, of them 8 developers. They develop the database frameworks for various national and international registries using Java as the technical platform. They mixed both OSS and proprietary development tools, as well as using a few OSS com- ponents, and are in general positive to Open Source usage. 5.1.8 Company H Company H is a company with approximately 40 employees, of them 14 developers. The interviewees department adapts a software product used by the energy sector, doing some developing in Java and some conguring of Oracle databases. The company use both proprietary and OSS development tools, but very few OSS components. 5.2 Relation between OSS tool usage and OSS component usage This section answers Research Question 1: Does the use of OSS development tools increase the use of OSS components in software development or vice versa? The motivation behind the question was that OSS is a great resource that can and should be utilized, and having increased research and empirical data might increase condence in and promote usage of OSS. The results from the study suggest that there is no direct relation between the use of OSS development tools and OSS components, however there seems to be a relation between usage of Open Source (either development tools, operating system, software components and other tools) and further usage of Open Source. That is, experience with and condence in Open Source leads to increased awareness of and effort to nd OSS alternatives, which in turn increases the usage of Open Source. All eight respondents answered that they didnt believe there was any relation between tool and com- ponent usage (see table B.1). Moreover, all respondents were asked if they had noticed any change in usage of both development tools and components over time, but very few had. Those that had no- ticed a shift attributed it to either increased awareness of OSS alternatives, or a change of technological platforms to a platform with more OSS alternatives. Runar Os Mathisen 32 5. Results 5.2.1 Factors inuencing adoption of Open Source All eight respondents stated that the most important factor when deciding which tools and components to use is functionality (see table B.1). This suggests that software developers are pragmatists. Price, ideology and politics comes second hand, what matters is getting the right tool and component to get the work done, whether it is an Open Source solution, a proprietary solution or an internal solution. Several respondents reported that availability of OSS alternatives with the desired functionality was an important factor inuencing the adoption of OSS. As the respondent from company G said: "When we googled for Java le upload library the rst hit is for the Open Source Apache Commons. The availability of a high quality OSS component with the wanted functionality increased our Open Source usage." All eight respondents expressed that they thought experience with OSS leads to more usage of OSS (see table B.1). OSS here meaning all forms for Open Source, both development tools and components, but also common Open Source such as regular software (web browsers, ofce suits) and operating systems. As the respondent from company C said when asked about any change in usage of OSS tools and components over time: "Weve used a little more Open Source lately. One of the reasons is that we are more aware of which alternatives exists, and were more on the search for OSS alternatives." The respondent from Company A said: "There is probably no relation between tool and component usage. It is rather so that usage of Open Source leads to experience with, awareness of and condence in Open Source, which leads to more usage of Open Source. Once you discover the world of Open Source it is easier to take advantage of Open Source." 5.2.2 Discussion None of the interviewees believed there was a relation between usage of OSS development tools and OSS components. The lack of data indicating a relation and the other theories about factors inuencing the adoption of Open Source leads to the following hypothesis: H1: There is no direct relation between usage of Open Source Software development tools and Open Source Software components. All respondents found functionality to be the most important factor when choosing tools and compo- nents. Based on this the following hypothesis is formulated: H2: Functionality is the most important factor in choice of development tools and software components. If the last hypothesis is correct there probably is a relation between the availability of an Open Source solution to a given problem and the degree of adoption of Open Source. As one of the respondents from the preinterviews said: "We use very few OSS components here. This is because the availability of OSS components for our specialized eld and for the programming language C++ is very low." Two other viewpoints were stated that strengthens this theory. The rst is the belief that the usage of OSS is higher for certain technological platforms such as Java and Python compared to C++ and .NET. As the respondent from company H said: "I think there is a clear difference in usage of Open Source in for example Java compared to .NET, a difference that stems from the availability of Open Source on the different technological platforms." The second viewpoint is the belief that the usage of OSS is higher for web application development than for desktop application development. The web has always been an area with much openness and collaboration, which has fostered many open source alternatives for webapps. As the respondent from company H said: "There is probably a much higher availability of Open Source for webapps Adoption of Open Source Software in the Software Industry 5.3. Adoption of OSS Development Tools 33 compared to desktopapps." Also, two of the respondents developed both web applications and desktop applications (Company B and Company F), and the usage of OSS components was higher for web applications for both companies. This leads to the following hypothesis: H3: High availability of Open Source solutions leads to higher adoption of Open Source. Another factor mentioned by all respondents was that the awareness of Open Source could lead to more usage of Open Source. One aspect that speaks for this hypothesis is that many seem to think that young developers used more OSS than older developers. This is explained by younger developers growing up in a world with much more Open Source, and as such is exposed to Open Source at a much higher extent than older developers. This leads to higher awareness of OSS and higher usage. Based on this the following hypothesis is formulated: H4: High awareness of Open Source solutions leads to higher adoption of Open Source. 5.3 Adoption of OSS Development Tools This section answers Research Question 2: How extensive is the adoption of Open Source Software development tools in the software industry? The motivation behind the question was that if the adoption of OSS development tools in the software industry is high it should be reected in the education for computer science students. Additionally it might increase condence in and promote further usage of OSS development tools in the software industry. This thesis suggests that most software companies use OSS development tools, but that proprietary or internal solutions still is more used. The most important factor when deciding which tool to use was functionality, but most companies (seven out of eight) were open to using OSS development tools (see table B.1). Out of a list of in total 64 different development tools used by the interviewed companies, 28 of them (44%) are Open Source, though with a varying degree of usage (see appendix D). 5.3.1 Tool usage by tool category and company Table 5.2 shows the usage of OSS development tools in the different development tool categories. It indicates that the adoption of development tools is higher in some tool categories than other. Speci- cally there seem to be more usage of Open Source compilers, version control systems and build tools, whereas there is little usage of Open Source modelling tools, user documentation tools and support tools. The data foundation is too small to give any clear answers to why there are some differences be- tween tool categories, but it appears that there is a higher availability of good Open Source alternatives amongst compilers, version control systems and build tools than the other categories. Table 5.3 shows the usage of development tools by the different companies. It indicates that there are some differences, with some companies using some Open Source alternatives, while other used nearly none. 5.3.2 Important factors in development tool choice All eight respondents stated that functionality was the denitive most important factor when deciding if to use and which tool to use (see table B.1). As the respondent from Company A said: Its all about getting the work done, so the most important criteria is functionality. Runar Os Mathisen 34 5. Results Usage High Medium Low No Integrated Development Environments 1 2 0 5 Modelling Tools 0 0 0 8 Code Editors 0 3 1 4 Compilers 3 0 1 4 Debuggers 2 1 0 5 Version Control Systems 3 1 0 4 User Documentation Tools 1 0 0 7 Test Tools 1 2 0 5 Build Tools 3 0 0 5 Bugtrackers 1 0 0 7 Support Tools 0 0 0 8 Other Tools 1 0 2 5 Table 5.2: Degree of OSS development tool usage by number of companies in the different tool cate- gories Usage High Medium Low No Company A 1 0 2 9 Company B 0 1 0 11 Company C 4 0 1 7 Company D 0 0 0 12 Company E 2 4 1 5 Company F 1 1 0 10 Company G 4 1 0 7 Company H 4 2 0 6 Table 5.3: Number of tool categories with the given degree of OSS development tool usage by the different companies Adoption of Open Source Software in the Software Industry 5.4. Adoption of OSS Components 35 A funny fact that strengthens the theory of functionality being the most important factor in development tool choice is that some of the companies when asked if they used Open Source development tools answered no, but when the different tools in the different categories was listed, they realized that some of the tools they used were in fact Open Source, they just hadnt really thought of it as an Open Source tool, but rather as the market leading tool with the best functionality within the specic category. Price was rarely a matter. The reason for this is that the relative cost of people is much higher than the cost of development tools, and if a specic tool can increase the efciency of a developer the price gets paid of pretty quick. As the respondent from Company E said: "Sometimes we nd that we can use a workday to work around the lack of a tool and develop our own solution, however the salary of this work usually end of magnitudes higher then the acquirement cost of a tool." However price could be a deal breaker when comparing products with similar functionality, which favors Open Source alternatives. Another aspect of this is that it makes it easier to try out different tools because the initial cost is non existent. Company culture also mattered. Management rarely makes decision about tool usage, normally devel- opers can choose which tool they want to use, and unless the price is very high if they want to use a specic tool they will get it. Still, developers within a company or department tend to use the same products. One of the reason is that it eases cooperation between colleagues. As the respondent from company H said: "It is easier to help each other with tool troubles when everybody use the same tools." In addition if many different tools are used it could increase the dependencies. As one of the respon- dents from the preinterviews said: "I think there is too much freedom in choice of tools. It leads to bothersome build processes as free choice leads to many choices, which in turn increases the number of third party dependencies." One of the reasons why some companies used few Open Source alternatives is that few alternatives ex- isted. The one that used no OSS alternatives simply stated that none existed for the given technological platform. For other technological platforms the usage of OSS tools was higher. As one of the respon- dents from the preinterviews said: "In my previous job we had a Java development group and a .NET development group. The usage of OSS development tools were much higher in the Java group because of more and better OSS alternatives, compared to the .NET group where the proprietary alternatives was recognized as best." Another reason might be partnership with vendors, and specically Microsoft. The respondent from Company F said: "Being a Microsoft Partner the management prefers that we use Microsoft friendly products.". The respondent from Company B said: "The partnership with Microsoft gives some guid- ance on which products we should use. Also, using tools from just one vendor means that it is easier to get different tools to cooperate." However, partnership didnt always mean that usage of OS tools is low. Company C is also a Microsoft Partner, and they used several Open Source development tools. 5.3.3 Discussion Almost all companies used Open Source development tools, but with various degrees of usage. 28 out of 64 tools used were Open Source, but the number of titles and the degree of usage was still higher for proprietary tools, so it apperas that proprietary tools still are favored. 5.4 Adoption of OSS Components This section answers Research Question 3: How extensive is the adoption of Open Source Software components in the software industry? The motivation behind the question was that if the adoption Runar Os Mathisen 36 5. Results of OSS components in the software industry is high it should be reected in the education for com- puter science students. Additionally it might increase condence in and promote further usage of OSS components in the software industry. This thesis suggests that most companies integrate OSS components into their products, but to a little extent. Seven out of the eight respondents used Open Source Software components in their products and services, but at a very small degree (see table B.1). The last respondent was unable to use OSS components because his department used a proprietary programming language for their development, in which no OSS components were allowed. He said however that other departments in the same company using other technological platforms have some usage of OSS components, but at a very small degree. This indicates that most Norwegian software companies arent afraid to use OSS components, and given a OSS component that has the desired functionality the component will often be used. As the respondent fromCompany Asaid: "If we nd a simple Open Source component with the desired functionality, were using it." However OSS components, and components in general, are used only at a very small degree. There are various reasons to this. 5.4.1 Important factors in component choice All eight respondents found functionality to be the denitive most important factor when it comes to deciding if a component is to be used, and which component is to be used. As a consequence of this, an important factor for the extent of OSS component usage is the availability of OSS components with the desired functionality. Some of the respondents worked in narrow domains that had very low availability of Open Source components, which led to less usage of components. Another important factor was the complexity of components. For complex components it might take more time to understand it and integrate it than to just write it oneself. Also, binding oneself to a component also typically means binding oneself to future upgrades for the component, upgrades that might break existing code leading to much work xing these problems. Price was also mentioned as a factor, but it was the least important factor. Unless the price was very high, cost rarely mattered. It was however a potential deal breaker when deciding between an OSS component and a proprietary component. 5.4.2 OSS components vs. proprietary components In the choice between proprietary and OSS components with the same functionality, OSS components were often preferred. One of the reasons of this is that the companies want more control of their own software, and having the source control available is one way of achieving that. As the respondent from Company F said: "We want to have control in case something happens. As an example the development of a proprietary GUI-library for C++ that we use in our software stopped, which created some difculties for us. In the end, but after some hassle, we managed to buy the source code for the component and continued development of it ourselves." Another respondent (Company B) on the other hand favored proprietary components. This respon- dent worked in the health informatics sector, and for his company the liabilities that came with some proprietary components made them more attractive. As he said: "As the systems we make can have consequences concerning life and death, trust and security is important for us. With Open Source com- ponents we are dependent on testing the components ourselves, but with proprietary vendors we can make arrangements that transfer liabilities and ensure that we receive thoroughly tested components." Adoption of Open Source Software in the Software Industry 5.5. Development Tools 37 Another discouraging factor with OSS components is the complexity and restrictions of the Open Source licenses. Specically the GNU General Public License (see section 2.2.1) was often brought up during the interviews as it couldnt be used in software that was distributed to customers. But also the complexity and the multitude of licenses could constrain usage of OSS components. Even a developer (from Company A) of a publishing system for web (which could potentially use GPL-code because it isnt redistributed) didnt want to use many OSS components because as he said: "In the event that the Open Source licenses of potential components could restrict us if we want to sell the publishing system as a proprietary and commercial product in the future." 5.4.3 Discussion Several studies reported that approximately 50 percent of the companies in the software intensive in- dustry use OSS components in their products and services ([Nikula and Jantunen, 2005], [Hauge, 2008] and [Mindel et al., 2007]). Out of eight telephone interview respondents, seven reported that they used OSS components, an adoption rate of 87,5%. Three of these seven had stated in a previous survey that they didnt use OSS components, and now answered that they did. This could be because of errounous information in the previous survey, specically because some developers may not have been aware of all components used by the company, however the numbers still indicate an increase in the adoption rate, which leads to the following hypothesis: H5: The adoption of OSS components in the software industry is increasing. Although the percentage of companies integrating OSS components is high, all these companies re- ported that they used OSS components only at a very small degree. This leads to the following hypoth- esis: H6: The extent of adoption of OSS components by the individual companies in the software industry is very small. 5.5 Development Tools This section answers Research Question 4: Which Open Source Software development tools are used by the software industry? The motivation behind the question was that it might be hard to nd and evaluate which development tools that might be used in the organization, and having a list of which de- velopment tools are used by the software industry might increase condence in these tools and improve the decision making process for potential users. This thesis suggests that there is a lot of diversity in the development tool usage in the Norwegian software industry, with many being Open Source. Out of a list of in total 64 different development tools used by the interviewed companies, 28 of them (44%) are Open Source, though with a varying degree of usage. In addition not all companies used tools in all categories. Some of the companies didnt need to use a tool in some of the categories, and there were also some internal solutions. See appendix C for a complete list of all tools used by the interviewed companies. 5.5.1 Tool categories Some of the tool categories (such as version control systems, test tools and build tools) have more usage of open source than others, and usage of open source tools seems to depend somewhat on the Runar Os Mathisen 38 5. Results technological platform used by the software companies. Below the answers in each development tool category is discussed. Integrated Development Environments All respondents reported that they used an IDE as the main development tool during work. Which tool was used depended mostly on the technological platform of choice, with proprietary tools used for PHP, Delphi, .NET, C/C++ and the G programming platform. For Java and Python solutions that are Open Source were more often chosen though, with Eclipse being the most mentioned. As the respondent from Company H said: "Eclipse is used here because it has become somewhat of an industry standard." Eclipse is also cross-platform, and can be used by those using Linux as their primary development operating system. Other Open Source IDEs used are NetBeans, Emacs, vi and KDevelop. Modelling Tools Most of the companies interviewed didnt use modelling tools very often in their development. Three of the eight companies used internal solutions, one of them even cited Post-it notes as the most used modelling tool. The rest used proprietary solutions such as Microsoft Visio and Rational Rose. None used Open Source alternatives. Code Editors The usage of simple code editors (basic text editors with syntax highlighting) werent very prominent, with the exception of Kate for Linux. Instead, nearly all code was written in IDEs. There were some additional tools used as code editors though, specically some proprietary solutions for editing SQL. Compilers Most of the respondents used the standard compiler for the given platform that was integrated into the IDE. An exception was the GNU Compiler Collection, which was used by one company when compiling to the Linux operating system (as opposed to using Visual Studio when compiling the same software to the Windows operating system), and another company using the AVR GNU C Compiler when compiling directly to microprocessors. Debuggers All respondents that used a debugger used the one that was integrated into their IDE. Version Control Systems Version Control Systems (VCS) was the category of tools with the highest usage of Open Source alternatives. Three of the respondents used CVSNT as a VCS server together with the clients WinCVS and TortoiseCVS. Another respondent used the Subversion server together with the client TortoiseSVN, in addition to two of the CVS-users wanting to convert to Subversion. One company surprisingly didnt use any VCS, while the rest used proprietary solutions. Adoption of Open Source Software in the Software Industry 5.5. Development Tools 39 User Documentation Tools Not all companies performed any development for external users, so only some companies needed to create user documentation. Of those that did create user documentation the preferred tool was Microsoft Word, however an interesting open source solution was chosen by one of the respondents, namely the open semantic markup language DocBook. Test Tools In the testing category a wide variety of tools was used, and no two companies used the same set of testing tools. Those of the companies that performed unit testing used a Open Source unit test framework, such as DUnit for Delphi and NUnit for .NET (both based on JUnit for Java), while the Mozilla Firefox extensions FireBug and WebDeveloper, both Open Source, was used by one company for testing web applications. Build Tools Only half of the companies interviewed used a tool for the build process. One of those used Microsoft Visual Studio, the other three however used Open Source solutions. One company used BuildMagic, the other two had a continuous integration process, and used respectively Hudson with GNU Make and CruiseControl.NET with NAnt. Bugtrackers Seven of the respondents used either no solution, an internal solution or a proprietary solution. One company was the exception though, this company used both trac and BugZilla. Support Tools None of the respondents used an Open Source support tool. Other Tools Some of the respondents reported that they regularly used other tools during their daily software devel- opment. Amongst these were the zipping tool 7-Zip, the terminal emulator PuTTY, and the FTP client FileZilla. 5.5.2 Discussion Table 5.4 summarizes all of the Open Source Software Tools used by the interviewed companies, as well as indicating the frequency of usage. The frequency is estimated from the interview notes. As we can see there is a lot of tools used, most of which are used only sparsely by few companies. However all tools are evaluated and used by the software industry of today, and the list can serve as a basis for companies that wish to start using OSS development tools. Runar Os Mathisen 40 5. Results Development tool Frequency Eclipse Main IDE for 3 companies NetBeans Secondary IDE for 1 company Emacs Used sparsely as IDE by 2 companies vi Used sparsely as IDE by 1 company KDevelop Used sparsely as IDE by 1 company Kate Secondary code editor for 1 company GNU Compiler Collection One of two compilers used by 1 company AVR GNU C Compiler Main compiler of 1 company CVSNT with WinCVS/TortoiseCVS Main VCS-stack for 3 companies Subversion with TortoiseSVN Main VCS-stack for 1 company DocBook Used sparsely by 1 company DUnit and NUnit Main test framework for 1 company FireBug and WebDeveloper Main webpage testing tool for 1 company BuildMagic Main build tool for 1 company Hudson with GNU Make Main build tools used by 1 company CruiceControl.NET with NAnt Main build tools used by 1 company trac One of two bugtrackers used by 1 company BugZilla One of two bugtrackers used by 1 company 7-Zip Main zipping tool for 1 company PuTTY Main terminal emulator for 1 company FileZilla Main FTP client for 1 company Table 5.4: Open Source development tools used in the Norwegian software industry Adoption of Open Source Software in the Software Industry Chapter 6 Conclusions 6.1 Summary The purpose of this thesis was to investigate if there is a relation between usage of OSS development tools and OSS components, and to nd the adoption of Open Source in the software industry. This thesis suggests that there is no direct relation between usage of Open Source Software development tools and Open Source Software components. Two other aspects however seem to inuence the adoption of Open Source, availability and awareness. In total 44%(28 out of 64) of the different tools used by the interviewees were Open Source tools, which indicate that a lot of OSS development tools exist and are used by the software industry. The usage was highest with compilers, version control systems and build tools. The Open Source development tools that were used by several companies were the IDE Eclipse and the VCS server CVSNT together with the clients WinCVS and TortoiseCVS. The most important factor in choice of tools was functionality, however factors such as price, company culture, partnership and availability also mattered some. 87,5% of the companies used OSS components in their software, which indicates an increase from pre- vious studies. However, OSS components were used at a very small degree. The most important factor in choice of components was functionality, but factors such as price, licensing, availability, complexity, control and liability also mattered. Based on the ndings from the study six hypotheses were stated, which are presented in table 6.1. 6.2 Limitations and validity With a total of 13 companies being contacted, eight resulted in an interview, giving a response rate of 62 percent. The ve companies which did not participate interestingly enough came from the group of small companies not using Open Source, however this probably has more to do with the timing of the interviews. This group was the last group that was contacted, and the chances of reaching a company with Christmas deadlines fast approaching became higher. While the withdrawals probably were random making the sample representative of the population, it is a possible future improvement for interview based data gathering to distribute the interviews more evenly out over time according to strata. 41 42 6. Conclusions Number Hypothesis H1 There is no direct relation between usage of Open Source Software de- velopment tools and Open Source Software components. H2 Functionality is the most important factor in choice of development tools and software components. H3 High availability of Open Source solutions leads to higher adoption of Open Source. H4 High awareness of Open Source solutions leads to higher adoption of Open Source. H5 The adoption of OSS components in the software industry is increasing. H6 The extent of adoption of OSS components by the individual companies in the software industry is very small. Table 6.1: Hypotheses A possible factor that might have inuenced the answers is the age of the respondents. While the inter- viewer never asked about age, the impression was that interviews were delegated to recently graduated and newly hired developers. This might mean that the sample might not be representative of the popula- tion, but rather skewed towards younger developers, however it is also the impression of the interviewer that the answers didnt differ very much, so while it might have reduced the validity of the results, an eventual reduction is very small. A bigger problem is that the number of respondents really isnt high enough to give denite conclusions on some of the research questions. This is an effect of the chosen research method, where focus was on qualitative data rather than quantitative data in order to better answer research question 1. A result of this is that this thesis doesnt state any clear conclusions, but rather states some interesting hypotheses and lays the foundation for a possible future study to conrm or deny these hypotheses. 6.3 Future work This thesis states six hypothesis based on the interviews. The data is however too limited too make any clear conclusions about any of them, they are merely indications. This thesis can therefore function well as a basis for a future study, in which the hypothesis are tested with a larger sample size through a survey using a questionnaire. One of the things that can be tested is which factors that inuence the choice of OSS development tools and OSS components in order to nd if availability and awareness are important factors inuencing the adoption rate of Open Source in the software industry. Another is to survey the software industry to test if it is correct that the adoption of OSS has increased, and additionally nd the degree of OSS component usage. And lastly one can with a larger sample size nd more OSS development tools used by the software industry, and a better estimation of which tools are the most popular, in order to increase condence of these tools to companies wanting to use OSS alternatives. Adoption of Open Source Software in the Software Industry Bibliography [Apache Foundation, 2008] Apache Foundation (2008). Apache License. http://www.apache. org/licenses/LICENSE-2.0. [Black Duck Software, 2008] Black Duck Software (2008). Open Source License Resource Center. http://www.blackducksoftware.com/oss. [Cernocek, 2005] Cernocek, G. (2005). A brief history of Eclipse. http://www.ibm.com/ developerworks/rational/library/nov05/cernosek/. [Cruz et al., 2006] Cruz, D., Wieland, T., and Ziegler, A. (2006). Evaluation Criteria for Free/Open Source Software Products Based on Project Analysis. Software Process: Improvement and Practice, 11(2). [Di Giacomo, 2005] Di Giacomo, P. (2005). COTS and Open Source Software Components: Are They Really Different on the Battleeld? [Free Software Foundation, 2008a] Free Software Foundation (2008a). The Free Software Denition. http://www.gnu.org/philosophy/free-sw.html. [Free Software Foundation, 2008b] Free Software Foundation (2008b). The GNU General Public Li- cense. http://www.gnu.org/licenses/gpl.html. [Free Software Foundation, 2008c] Free Software Foundation (2008c). The GNU Lesser General Pub- lic License. http://www.gnu.org/licenses/lgpl.html. [Free Software Foundation, 2008d] Free Software Foundation (2008d). What is Copyleft. http: //www.gnu.org/copyleft/copyleft.html. [Ghosh, 2006] Ghosh, R. A. (2006). Study on the Economic Impact of Open Source Software on In- novation and the Competiveness of the Information and Communication Technologies (ICT) Sector in the EU. Technical report, UNU-MERIT. [Hauge, 2007] Hauge, . (2007). Open Source Software in Software Intensive Industry - A Survey. Masters thesis, Norwegian University of Science and Technology NTNU. [Hauge, 2008] Hauge, . (2008). Bruk av fri programvare i norsk programvareindustri. Technical report, NTNU. [Jaaksi, 2007] Jaaksi, A. (2007). Experiences on Product Development with Open Source Software. [Li et al., 2006] Li, J., Conradi, R., Slyngstad, O. P. N., Bunse, C., Torchiano, M., and Morisio, M. (2006). An Empirical Study on Decision Making in Off-The-Shelf Component-Based Development. In ICSE 06: Proceedings of the 28th International Conference on Software Engineering, New York, NY, USA. ACM. 43 44 BIBLIOGRAPHY [Madanmohan and De, 2004] Madanmohan, T. R. and De, R. (2004). Open Source Reuse in Com- mercial Firms. IEEE Software, 21(6). [Mindel et al., 2007] Mindel, J. L., Mui, L., and Verma, S. (2007). Open Source Software Adoption in ASEAN Member Countries. In HICSS2007 Proceedings of the 40th Annual Hawaii International Conference on System Sciences. IEEE Computer Society. [Morgan and Finnegan, 2007] Morgan, L. and Finnegan, P. (2007). Benets and Drawbacks of Open Source Software: An Exploratory Study of Secondary Software Firms. pages 307312. [Nikula and Jantunen, 2005] Nikula, U. and Jantunen, S. (2005). Quantifying the Interest in Open Source System: Case South-East Finland. [Open Source Initiative, 2008a] Open Source Initiative (2008a). History of the OSI. http://www. opensource.org/history. [Open Source Initiative, 2008b] Open Source Initiative (2008b). The Open Source Denition. http: //www.opensource.org/docs/osd. [OSI, 2008a] OSI (2008a). The BSD License. http://www.opensource.org/licenses/ bsd-license.php. [OSI, 2008b] OSI (2008b). The MIT License. http://www.opensource.org/licenses/ mit-license.php. [Perrin, 2006] Perrin, C. (2006). Security through visibility: The secrets of open source security. http://articles.techrepublic.com.com/5100-10878_11-6064734.html. [Raymond, 1998] Raymond, E. (1998). The cathedral and the bazaar. First Monday, 3(3). [Rufn and Ebert, 2004] Rufn, M. and Ebert, C. (2004). Using Open Source Software in Product Development: A Primer. IEEE Software, 21(1):8286. [SSB, 2008] SSB (2008). Tabell 03109 - Bedrifter, etter nring og antall ansatte. http:// statbank.ssb.no/statistikkbanken/. [Stallman, 2008] Stallman, R. (2008). The GNU Project. http://www.gnu.org/gnu/ thegnuproject.html. [West and OMahony, 2005] West, J. and OMahony, S. (2005). Contrasting Community Building in Sponsored and Community Founded Open Source Projects. In HICSS2005 Proceedings of the 38th Annual Hawaii International Conference on System Sciences. IEEE Computer Society. [Wikipedia, 2008a] Wikipedia (2008a). FLOSS. http://en.wikipedia.org/wiki/FLOSS. [Wikipedia, 2008b] Wikipedia (2008b). Subversion. http://en.wikipedia.org/wiki/ Subversion_(software). Adoption of Open Source Software in the Software Industry Part V Appendices 45 Appendix A Mapping from research to interview Interview Question Research Question How many people work at your company? Describe population What products and services do you offer? Describe population Which developments tools do you offer? RQ2, RQ4 Why are these tools used? RQ1 How do you acquire tools? RQ1 How has tool usage changed over time? RQ1 Which open source components do you use? RQ1, RQ3 How extensive is the usage of components? RQ3 How has component usage changed over time? RQ1 Is there a relation between usage of tools and components? RQ1 What causes an eventual relation? RQ1 Table A.1: Mapping from research questions to interview questions 47 48 A. Mapping from research to interview Adoption of Open Source Software in the Software Industry Appendix B Interview data Company Company A Company B Company C Company D 1. Employees in company 75 11 22 500 2. Developers in department 17 4 6 7 3. Web application development Yes Yes Yes No 4. Desktop application development No Yes No No 5. Development on hardware equipment No No No Yes 6. Most important factor in tool decision Functionality Functionality Functionality Functionality 7. Open to usage of OSS tools Yes No Yes Yes 8. Degree of OSS component usage Very little Very little Very little None 9. Most important factor in component decision Functionality Functionality Functionality Functionality 10. Relation between tool and component usage No No No No 11. Experience with OSS leads to more OSS Yes Yes Yes Yes Company Company E Company F Company G Company H 1. Employees in company 140 75 14 40 2. Developers in department 35 22 8 14 3. Web application development No Yes Yes No 4. Desktop application development Yes Yes Yes Yes 5. Development on hardware equipment Yes No No No 6. Most important factor in tool decision Functionality Functionality Functionality Functionality 7. Open to usage of OSS tools Yes Yes Yes Yes 8. Degree of OSS component usage Very little Very little Very little Very little 9. Most important factor in component decision Functionality Functionality Functionality Functionality 10. Relation between tool and component usage No No No No 11. Experience with OSS leads to more OSS Yes Yes Yes Yes Table B.1: Interview data 49 50 B. Interview data Adoption of Open Source Software in the Software Industry Appendix C Tool usage by company Company Tools used OS Usage Company A Zend Studio None Company B Microsoft Visual Studio - CodeGear Delphi - PL SQL Developer None Company C Microsoft Visual Studio None Company D SolidWorks - LabVIEW - NX - MATLAB None Company E Eclipse - Emacs - vi - AVR Studio - KDevelop Medium Company F Microsoft Visual Studio None Company G Eclipse - NetBeans High Company H Eclipse - PL SQL Developer Medium Table C.1: Integrated Development Environments used by companies Company Tools used OS Usage Company A Internal solution None Company B Microsoft Visio None Company C Internal solution None Company D SolidWorks - LabVIEW - Simulink - MATLAB None Company E Internal solution None Company F Rational Rose - Rational XDE None Company G Sybase PowerDesigner None Company H Microsoft Visio None Table C.2: Modelling Tools used by companies 51 52 C. Tool usage by company Company Tools used OS Usage Company A Zend Studio - Emacs - Adobe Flash - Oracle SQL Developer - Quest SQL Navigator Low Company B Microsoft Visual Studio - CodeGear Delphi - PL SQL Developer None Company C Microsoft Visual Studio - PSPad Editor None Company D SolidWorks - LabVIEW - NX - MATLAB None Company E Eclipse - Emacs - vi - AVR Studio - Kate Medium Company F Microsoft Visual Studio None Company G Eclipse - NetBeans - TextPad Medium Company H Eclipse - Internal solution Medium Table C.3: Code Editors used by companies Company Tools used OS Usage Company A No solution None Company B Microsoft Visual Studio None Company C Microsoft Visual Studio - GNU Compiler Collection Low Company D SolidWorks - LabVIEW - NX - MATLAB None Company E AVR GNU C Compiler High Company F Microsoft Visual Studio None Company G Eclipse - NetBeans High Company H Eclipse High Table C.4: Compilers used by companies Company Tools used OS Usage Company A No solution None Company B Microsoft Visual Studio None Company C Microsoft Visual Studio None Company D SolidWorks - LabVIEW - NX - MATLAB None Company E Eclipse - AVR Studio Medium Company F Microsoft Visual Studio None Company G Eclipse - NetBeans High Company H Eclipse High Table C.5: Debuggers used by companies Company Tools used OS Usage Company A No solution None Company B Team Foundation Server - Microsoft Visual SourceSafe - Microsoft SharePoint None Company C CVSNT - WinCVS - TortoiseCVS High Company D LabVIEW None Company E Subversion - TortoiseSVN - Microsoft SharePoint Medium Company F Perforce None Company G CVSNT - WinCVS - TortoiseCVS High Company H CVSNT - WinCVS - TortoiseCVS High Table C.6: Version Control Systems used by companies Adoption of Open Source Software in the Software Industry 53 Company Tools used OS Usage Company A No solution None Company B Doc-To-Help None Company C DocBook High Company D Microsoft Word None Company E No solution None Company F Internal solution None Company G Microsoft Word None Company H Microsoft Word None Table C.7: User Documentation Tools used by companies Company Tools used OS Usage Company A WebDeveloper - FireBug High Company B Microsoft Test - NUnit - DUnit Medium Company C Internal solution None Company D SolidWorks - LabVIEW - NX - MATLAB None Company E OpenTTCN None Company F NUnit - Internal solution Medium Company G Internal solution None Company H HP Test Director None Table C.8: Test Tools used by companies Company Tools used OS Usage Company A No solution None Company B Microsoft Visual Studio None Company C Hudson - GNU Make High Company D No solution None Company E Internal solution None Company F NAnt - CruiseControl.NET High Company G Internal solution None Company H BuildMagic High Table C.9: Build Tools used by companies Company Tools used OS Usage Company A GoogleDocs None Company B Team Foundation Server None Company C eJournal None Company D No solution None Company E Trac - BugZilla High Company F DevTrack None Company G Internal solution None Company H Jira None Table C.10: Bugtrackers used by companies Runar Os Mathisen 54 C. Tool usage by company Company Tools used OS Usage Company A No solution None Company B eJournal None Company C eJournal None Company D No solution None Company E No solution None Company F eJournal None Company G Internal solution None Company H Jira None Table C.11: Support Tools used by companies Company Tools used OS Usage Company A Adobe Photoshop - FileZilla - Putty - CuteFTP Low Company B Microsoft Word - Microsoft Excel - Microsoft PowerPoint None Company C 7-Zip High Company D No solution None Company E lint - CodeSonar Low Company F No solution None Company G No solution None Company H No solution None Table C.12: Other Tools used by companies Adoption of Open Source Software in the Software Industry Appendix D Development Tool Titles 55 56 D. Development Tool Titles Proprietary tools Tool category Open Source tools Tool category DevTrack Bugtracker BugZilla Bugtracker Jira Bugtracker Trac Bugtracker Adobe Flash Code Editor BuildMagic Build Tool Oracle SQL Developer Code Editor CruiseControl.NET Build Tool PSPad Editor Code Editor DUnit Build Tool Quest SQL Navigator Code Editor GNU Make Build Tool TextPad Code Editor Hudson Build Tool CuteFTP FTP Client NAnt Build Tool Adobe Photoshop Graphics Editor NUnit Build Tool AVR Studio IDE Kate Code Editor CodeGear Delphi IDE AVR GNU C Compiler Compiler LabVIEW IDE GNU Compiler Collection Compiler MATLAB IDE FileZilla FTP Client Microsoft Visual Studio IDE Eclipse IDE NX IDE Emacs IDE SolidWorks IDE KDevelop IDE Zend Studio IDE NetBeans IDE Microsoft Visio Modelling Tool vi IDE Rational Rose Modelling Tool Putty Terminal Emulator Rational XDE Modelling Tool FireBug Test Tool Sybase PowerDesigner Modelling Tool WebDeveloper Test Tool GoogleDocs Ofce Tool DocBook User Documentation Tool Microsoft Excel Ofce Tool CVS NT Version Control Microsoft PowerPoint Ofce Tool Subversion Version Control Microsoft Word Ofce Tool TortoiseCVS Version Control CodeSonar Static Code Analysis Tool TortoiseSVN Version Control lint Static Code Analysis Tool WinCVS Version Control eJournal Support Tool 7-Zip Zipping Tool HP Test Director Test Tool Microsoft Test Test Tool OpenTTCN Test Tool Doc-To-Help User Documentation Tool Microsoft SharePoint Version Control Microsoft Visual SourceSafe Version Control Perforce Version Control Team Foundation Server Version Control Total: 36 tools Total: 28 tools Table D.1: Development Tool Titles Adoption of Open Source Software in the Software Industry Appendix E Interview Form The form used to take notes and control ow of the telephone interviews. 57 pne intervjuet ved fortelle litt om meg selv. Jeg gr p linja for datateknikk ved NTNU, og skriver prosjektoppgave om bruk av Open Source i programvareindustrien. Tenker da bde p utviklingsverkt og komponentbruk, og gjerne sammen!eng mellom disse. "ller frst, jeg tar notater fra intervjuet og tenker bruke informasjonen i oppgaven min, men da selvflgelig anonmisert. Og mens jeg !usker det, er det greit at jeg sender en email for komme med noen oppflgingssprsml om det er noen senere# Srg for f beskrevet populasjonen. Dobbeltsjekk gjerne p nett i etterkant. Hvor mange ansatte bestr bedriften av? $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hvilke tjenester/produkter tilbyr dere? %vilken teknologisk plattform ligger bak produktene deres# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hvilke utviklingsverkty bruker dere? $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ &'() $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ *odellering) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +odeeditor) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +ompilator) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 'ebugger) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ,ersjonskontroll) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -rukerdokumentasjon) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Testing) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -uilds) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -ugtracker) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Support) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "nnet) Hvorfor benytter dere akkurat disse verktyene? .unksjonalitet# /ris# &deologi# -edriftsstandard# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hvordan er prosessen bak det bruke/skaffe et verkty? (r det noen produkter dere m bentte# (r det noen produkter dere ikke kan bentte# %ar dere noen avtaler med verktleverandrer# %ar dere noen problemer med verktbruk# +an fri!et i verktbruken fre til tungvinte prosesser# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Har verktybruken forandret seg noe den siste tida? %vorfor det# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Bruker dere open source komponenter i produktene/tjenestene deres? .ortell litt om komponentene# %vilke prosesser ligger bak valg av komponenter# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hvor mange av produktene har open source, hvor stor andel av produktene bestr av open source. I hvor stor grad benytter dere O komponenter? %vor mange av det siste rs prosjekter !ar open source, og i !vor stor grad. Her kan det vre greit tenke p hvor lang tid det ville tatt egenutvikle brukte komponenter kontra hvor me som er egenutviklet. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hva er rsaken til det. Har komponentbruken forandret seg noe den siste tida? $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ D!S"#S$%&' Hva kom frst! bruk av open source verkty eller open source komponenter! eller kom det kanskje samtidig? %ar dere noen mening om sammen!eng mellom bruk av open source verkt eller komponenter# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Hvorfor er det slik? %ar tillit til open source noe si# %ar plattform noe si# %ar alder noe si# %ar kjennskap til open source noe si# (r funksjonalitet overordnet ting som pris og tilgang til kildekode# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "nnet# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$