Putting the Semantics into Semantic Versioning

08/17/2020
by   Patrick Lam, et al.
0

The long-standing aspiration for software reuse has made astonishing strides in the past few years. Many modern software development ecosystems now come with rich sets of publicly-available components contributed by the community. Downstream developers can leverage these upstream components, boosting their productivity. However, components evolve at their own pace. This imposes obligations on and yields benefits for downstream developers, especially since changes can be breaking, requiring additional downstream work to adapt to. Upgrading too late leaves downstream vulnerable to security issues and missing out on useful improvements; upgrading too early results in excess work. Semantic versioning has been proposed as an elegant mechanism to communicate levels of compatibility, enabling downstream developers to automate dependency upgrades. While it is questionable whether a version number can adequately characterize version compatibility in general, we argue that developers would greatly benefit from tools such as semantic version calculators to help them upgrade safely. The time is now for the research community to develop such tools: large component ecosystems exist and are accessible, component interactions have become observable through automated builds, and recent advances in program analysis make the development of relevant tools feasible. In particular, contracts (both traditional and lightweight) are a promising input to semantic versioning calculators, which can suggest whether an upgrade is likely to be safe.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/06/2021

Recommending More Efficient Workflows to Software Developers

Existing recommendation systems can help developers improve their softwa...
research
04/01/2023

A Large Scale Analysis of Semantic Versioning in NPM

The NPM package repository contains over two million packages and serves...
research
12/06/2022

Binary-level Software Compatibility Tool Agreement

Application Binary Interface (ABI) compatibility is essential for system...
research
01/16/2018

Why and How Java Developers Break APIs

Modern software development depends on APIs to reuse code and increase p...
research
03/04/2021

Secure Software Development in the Era of Fluid Multi-party Open Software and Services

Pushed by market forces, software development has become fast-paced. As ...
research
03/12/2021

Predicting Community Smells' Occurrence on Individual Developers by Sentiments

Community smells appear in sub-optimal software development community st...
research
12/19/2017

Built to Last or Built Too Fast? Evaluating Prediction Models for Build Times

Automated builds are integral to the Continuous Integration (CI) softwar...

Please sign up or login with your details

Forgot password? Click here to reset