Recent studies investigating the reuse of code in Open Source software projects show that developers in Open Source software projects commonly reuse available code and other knowledge that solves their technical problems.
Moreover, developers spend no negligible amounts of time studying scientific publications and standard specifications, or learning from the source code (and its documentation) of related projects to reuse of algorithms and methods without simply copying the code.
Therefore, developing a software system reusing existing (FLOSS) solutions implies time consuming activities that are not performed when software is developed from scratch or without third party code.
All those highlights the need to free the software analysts and developers from the technological barriers caused by the heterogeneity of approaches adopted by each Open Source project to provide similar information on the software characteristics.
MARKOS intends to realize the prototype of an automatic service providing an integrated view on the Open Source projects available on the web, focusing on functional, structural and licenses aspects of the software code released by the projects.
A typical MARKOS Use-Case
Currently the web offers several software code search tools, and indexes of open source projects that allow a developer or a software analyst to search and analyze the source code published on the web.
Nevertheless such services are mainly based on the textual representation of the code. Poor support is given to search for a specific class or a specific package (i.e. the static semantics of the code), to analyse the dependency between components released by different projects and the relationships between this dependencies and the adopted software licences.
Imagine for example a developer that needs an Open Source version of a software component implementing a piece of functionality represented by a standard interface or API. The desired component could be a single class, such as an implementation of the Java interface java.util.List, or the implementation of a full API such as the Java™ JDBC API identified by the package names java.sql and javax.sql.
With current tools it is difficult for the developers to distinguish projects that just uses a specific code from projects that implement it. Due to the intricacy of dependencies between different projects and the heterogeneity of licence models it is also more challenging to judge if a project suffers of any legal infringement.
Thanks to its software analyses capabilities MARKOS will be able to recognize software components of different projects that import and extend the same interfaces or API. It will show the dependencies between components coming from different projects. Moreover it will automatically analyze possible licence violations providing legal argumentations, explaining the reason of such an infringement.
MARKOS is divided in 9 Work-Packages: