Software seldom lives in isolation. Instead, projects dwell in software ecosystems where they depend on each other to favor reuse, while projects fulfil one of two roles – the library role or the client role. For her PhD research, Lina Ochoa Venegas examined the library-client co-evolution problem from the nounal view, where the library-client co-evolution phenomenon and its properties are studied, and the verbal view, where based on the research outcomes of the nounal view, tools to solve issues were developed.
Software projects have a dual role. The first is the library role which expose a set of services to other projects, and the second is the client role which depend on other libraries to leverage their functionality.
As time passes though, library developers introduce changes to include functional and extra-functional enhancements. Although changes are intended to increase the library's value, they might propagate to client projects resulting in broken code.
Versioning schemes, such as semantic versioning, are often used to communicate the nature of changes, such as changes that could potentially break (or not break) client code. Nevertheless, library developers still face a dilemma: whether to introduce changes at the cost of increasing the technical lag on their clients or even losing them; or avoid change at the cost of increasing technical debt.
In her PhD research, Lina Ochoa Venegas comes to a profound conclusion – breaking changes are not harmful by themselves. “Their impact needs to be assessed first so that developers can make informed decisions on where to introduce the changes in the first place, and then put forward coping strategies,” says the researcher.
Nounal and verbal views
In her thesis, Ochoa Venegas addresses the library-client co-evolution problem from the nounal and the verbal views.
The nounal view allows for empirical understanding on the nature of the library-client co-evolution phenomenon. “Along with the collaborators, we studied the best practices to define dependencies as a way of preventing the propagation of breaking changes, and the syntactic breaking changes and their impact on client projects in relation with semantic versioning,” says Ochoa Venegas.
On the other hand, the verbal view encourages the provision of new processes, methods, and tools that can better support the library-client co-evolution process. To aid with this, the researcher has formulated two new approaches that can be utilized to assess changes and development workflow.
Ochoa Venegas: “The first approach is the static impact analysis approach, which is used to detect the introduction of breaking changes and to quantify their impact on client code. The second approach is the static reverse dependency compatibility testing approach, which performs static impact analysis as part of a pull-based development workflow.”
The static impact analysis approach is implemented in Maracas, a static analysis tool for Java projects, while the latter is implemented in BreakBot, a GitHub bot that assists library evolution. “These new tools can be integrated into the software development workflow to better support decision-making when library evolution manifests,” says Ochoa Venegas. “We envisage that they can be extremely beneficial moving forwards.”
Key conclusions
The research of Ochoa Venegas leads to a number of key conclusions in relation to library-client co-evolution.
First, she has found that practitioners do not widely follow best practices when defining dependencies. In her thesis, Ochoa Venegas has identified best practices to define healthy dependencies between library and client projects.
Second, the researcher has shown that libraries tend to comply with semantic versioning when introducing syntactic breaking changes, with adherence to such a scheme increasing over time, and only a few clients are impacted by these changes.
And finally, new tools designed in the research can support software evolution in being accurate, applicable, and relevant for pull-based development workflows.
Title of PhD thesis: Break the Code? Breaking Changes and Their Impact on Software Evolution. Supervisors: Jurgen Vinju, Mark van den Brand, and Thomas Degueule.
Lina Ochoa executed her PhD research in CWI's Software Analysis and Transformation (SWAT) research group and defended her thesis at Eindhoven University of Technology on 29 March 2023.
Text: Barry Fitzgerald, Eindhoven University of Technology