@proceedings {1911,
	title = {Machine Learning-Based Detection of Open Source License Exceptions},
	year = {2017},
	note = {"We address these questions by first performing a large scale mining-based study... [W]e analyzed the  source code of 51,754 projects written in six different programming languages (Ruby, Javascript, Python, C, C++, and C$\#$) hosted on GitHub. },
	month = {05/2017},
	pages = {118-129},
	abstract = {From a legal perspective, software licenses govern the redistribution, reuse, and modification of software as both source and binary code. Free and Open Source Software (FOSS) licenses vary in the degree to which they are permissive or restrictive in allowing redistribution or modification under licenses different from the original one(s). In certain cases developers may modify the license by appending to it an exception to specifically allow reuse or modification under a particular condition. These exceptions are an important factor to consider for license compliance analysis since they modify the standard (and widely understood_ terms of the original license. In this work, we first perform a large-scale empirical study on the change history of over 51k FOSS systems aimed at quantitatively investigating the prevalence of known license exceptions and identifying new ones. Subsequently, we performed a study on the detection of license exceptions by relying on machine learning. We evaluated the license exception classification with four different supervised learners and sensitivity analysis. Finally we present a categorization of license exceptions and explain their implications.},
	keywords = {classifier, empirical studies, license, machine learning},
	doi = {10.1109/ICSE.2017.19},
	author = {Vendome, Christopher and Mario Linares-Vasquez and Bavota, Gabriele and Di Penta, Massimiliano and Daniel M. German and Poshyvanyk, Denys}
}
@article {1847,
	title = {License usage and changes: a large-scale study on gitHub},
	journal = {Empirical Software Engineering},
	year = {2016},
	abstract = {Open source software licenses determine, from a legal point of view, under which conditions software can be integrated and redistributed. The reason why developers of a project adopt (or change) a license may depend on various factors, e.g., the need for ensuring compatibility with certain third-party components, the perspective towards redistribution or commercialization of the software, or the need for protecting against somebody else{\textquoteright}s commercial usage of the software. This paper reports a large empirical study aimed at quantitatively and qualitatively investigating when and why developers adopt or change software licenses. Specifically, we first identify license changes in 1,731,828 commits, representing the entire history of 16,221 Java projects hosted on GitHub. Then, to understand the rationale of license changes, we perform a qualitative analysis on 1,160 projects written in seven different programming languages, namely C, C++, C$\#$, Java, Javascript, Python, and Ruby{\textemdash}following an open coding approach inspired by grounded theory{\textemdash}on commit messages and issue tracker discussions concerning licensing topics, and whenever possible, try to build traceability links between discussions and changes. On one hand, our results highlight how, in different contexts, license adoption or changes can be triggered by various reasons. On the other hand, the results also highlight a lack of traceability of when and why licensing changes are made. This can be a major concern, because a change in the license of a system can negatively impact those that reuse it. In conclusion, results of the study trigger the need for better tool support in guiding developers in choosing/changing licenses and in keeping track of the rationale of license changes.},
	issn = {1573-7616},
	doi = {10.1007/s10664-016-9438-4},
	author = {Vendome, Christopher and Bavota, Gabriele and Di Penta, Massimiliano and Linares-V{\'a}squez, Mario and German, Daniel and Poshyvanyk, Denys}
}
@proceedings {1502,
	title = {A Dataset from Change History to Support Evaluation  of Software Maintenance Tasks},
	year = {2013},
	month = {05/2013},
	pages = {131-134},
	abstract = {Approaches that support software maintenance need 
to be evaluated and compared against existing ones, in order to 
demonstrate their usefulness in practice. However, oftentimes the 
lack of well-established sets of benchmarks leads to situations 
where these approaches are evaluated using different datasets, 
which results in biased comparisons. In this data paper we 
describe and make publicly available a set of benchmarks from 
six Java applications, which can be used in the evaluation of 
various software engineering (SE) tasks, such as feature location 
and impact analysis. These datasets consist of textual description 
of change requests, the locations in the source code where they 
were implemented, and execution traces. Four of the benchmarks 
were already used in several SE research papers, and two of them 
are new. In addition, we describe in detail the methodology used 
for generating these benchmarks and provide a suite of tools in 
order to encourage other researchers to validate our datasets and 
generate new benchmarks for other subject software systems. 
Our online appendix: http://www.cs.wm.edu/semeru/data/msr13/ },
	url = {http://www.cs.wm.edu/~bdit/publications/MSR13DataPaper_Dit_CRC.pdf},
	attachments = {https://flosshub.org/sites/flosshub.org/files/MSR13DataPaper_Dit_CRC.pdf},
	author = {Bogdan Dit and Andrew Holtzhauer and Poshyvanyk, Denys and Kagdi, Huzefa}
}
@conference {940,
	title = {Using Latent Dirichlet Allocation for automatic categorization of software},
	booktitle = {2009 6th IEEE International Working Conference on Mining Software Repositories (MSR)2009 6th IEEE International Working Conference on Mining Software Repositories},
	year = {2009},
	pages = {163 - 166},
	publisher = {IEEE},
	organization = {IEEE},
	address = {Vancouver, BC, Canada},
	abstract = {In this paper, we propose a technique called LACT for automatically categorizing software systems in open-source repositories. LACT is based on latent Dirichlet Allocation, an information retrieval method which is used to index and analyze source code documents as mixtures of probabilistic topics. For an initial evaluation, we performed two studies. In the first study, LACT was compared against an existing tool, MUDABlue, for classifying 41 software systems written in C into problem domain categories. The results indicate that LACT can automatically produce meaningful category names and yield classification results comparable to MUDABlue. In the second study, we applied LACT to 43 software systems written in different programming languages such as C/C++, Java, C$\#$, PHP, and Perl. The results indicate that LACT can be used effectively for the automatic categorization of software systems regardless of the underlying programming language or paradigm. Moreover, both studies indicate that LACT can identify several new categories that are based on libraries, architectures, or programming languages, which is a promising improvement as compared to manual categorization and existing techniques.},
	keywords = {categorization, category mining, lact, mudablue, multiple languages, repository},
	isbn = {978-1-4244-3493-0},
	doi = {10.1109/MSR.2009.5069496},
	attachments = {https://flosshub.org/sites/flosshub.org/files/163MSR2009_TianPos.pdf},
	author = {Tian, Kai and Revelle, Meghan and Poshyvanyk, Denys}
}
