27.03.2014 Views

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Choosing licenses in free open source software<br />

Ioannis E. Foukarakis<br />

Department of Telecommunications<br />

Science and Technology<br />

University of Peloponnese<br />

Tripolis, Greece<br />

Georgia M. Kapitsaki<br />

Department of Computer Science<br />

University of Cyprus<br />

Nicosia, Cyprus<br />

Nikolaos D. Tselikas<br />

Department of Telecommunications<br />

Science and Technology<br />

University of Peloponnese<br />

Tripolis, Greece<br />

Abstract—Free/Libre/Open Source Software (FLOSS) has been<br />

lately on the focus of the software community in the attempt to<br />

provide wide access to software resources and promote their<br />

distribution. Open software resources may be linked directly or<br />

indirectly with more than one open source licenses. Due to license<br />

heterogeneity, incompatibilities may arise in such dependencies.<br />

For this reason, adequate support for decision making in license<br />

use is an important issue. Such systems can assist in determining<br />

the right licenses and avoid potential violations. We tackle the<br />

above aspects by giving an overview of the areas of license<br />

extraction from software resources, license information storing<br />

and license-related reasoning activities. We discuss about several<br />

attempts in these areas and present an initial prototype assistance<br />

system employing such techniques.<br />

Keywords- data dependencies; licensing; open source software<br />

I. INTRODUCTION<br />

Free/Libre/Open Source Software (FLOSS) [1] has<br />

influenced modern software engineering processes, allowing<br />

individuals to use software for free and software engineers to<br />

incorporate third party software libraries in their software<br />

products and implementations. The terms, under which the<br />

software has become available and is provided for use to the<br />

community, are captured in the licenses that accompany open<br />

source software. Licenses correspond to the characteristics of<br />

the intellectual property and usually express the rights and the<br />

obligations of the copyright owner and the one using the<br />

license (referred to as the licensee). Many different licenses<br />

have appeared: GNU General Public License (GPL), Apache<br />

License, BSD License, MIT License to name a few. Licenses<br />

fall into three main categories: permissive, weak copyleft or<br />

strong copyleft, showing different degrees of freedom in<br />

FLOSS use. The first category of permissive licenses states that<br />

licensed software can be adopted even in commercial software<br />

that is not distributed as open so urce. On the contrary, weak<br />

copyleft licenses demand that any changes in the licenses<br />

source code should be made available as open source software<br />

itself, whereas strong copyleft licenses mandate that any kind<br />

of further distribution be under open source principles.<br />

Each license may have multiple versions making it difficult<br />

for developers to cope with incompatibilities that might exist<br />

due to the use of software libraries based on different licenses.<br />

Especially during the development phase, it is often the case<br />

that engineers include additional, and often redundant,<br />

dependencies in their code light-hearted, without examining<br />

possible licensing incompatibilities. As the number of<br />

components increases, so does the complexity of deciding<br />

which licenses can be applied to the final system, or of<br />

checking if violations exist among the terms defined in the<br />

licenses, leading to license incompatibility. Lindberg [2]<br />

describes license compatibility as a sim ilar approach with<br />

blood type compatibility: “two blood types are compatible if<br />

donations from two different people can be used together.” In<br />

the same way, licenses are compatible if software distributed<br />

under two different licenses can be used together in the same<br />

software product. Although no mature software for supporting<br />

decisions in license issues is available, many research activities<br />

and commercial efforts have recently appeared.<br />

The current paper provides an overview of the aspects of<br />

license decisions by presenting the process of license<br />

compatibility detection that can be divided into the areas of<br />

license extraction information from software resources, license<br />

information storing, as well as modeling and reasoning actions.<br />

Some techniques are applied on the implementation of a<br />

prototype system extending a popular build tool. The rest of the<br />

paper is structured as follows. Section II briefly presents the<br />

steps of the license compatibilities process. Section III<br />

discusses works on extracting license information from existing<br />

components, whereas section IV is dedicated to the<br />

presentation of repository-based approaches. In section V ways<br />

for discovering licenses are presented. An initial prototype<br />

implementation of the compatibility detection is demonstrated<br />

in section VI. Finally, section VII concludes the paper.<br />

II. THE LICENSE COMPATIBILITY PROCESS<br />

Each software system is comprised of individual artifacts<br />

that may include source code, compiled programs, software<br />

libraries or other file types (i.e., images, multimedia files and<br />

data in general). An abstract model of the software includes the<br />

distinct artifacts and the way these are connected through the<br />

development process. For instance, a source code file may hold<br />

references to other source code files or libraries. In turn, the<br />

compiled version of the source code may have static or<br />

dynamic references to software libraries and so on.<br />

The generic approach that can be followed for detecting<br />

license incompatibilities is depicted in Fig. 1. The first step<br />

towards making a decision for possible open source licenses is<br />

to identify the individual components of the software system.<br />

Afterwards, different license extraction techniques may be<br />

applied to detect the license of each artifact, varying from text<br />

matching to querying license repositories. In fact, the same<br />

200

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!