SlideShare a Scribd company logo
1 of 19
Comparing semantic versioning practices
in Cargo, npm, Packagist and Rubygems
@tom_mens
www.linkedin.com/in/tommens
www.slideshare.net/TomMens
SECO-ASSIST
Belgian
Research Project
"Excellence of Science”
secoassist.github.io
@secoassist
Empirical research
on packaging ecosystems
On the impact of security vulnerabilities in the npm package dependency network
Decan, Mens, Constantinou – MSR 2018 – https://doi.org/10.1145/3196398.3196401
On the evolution of technical lag in the npm package dependency network
Decan, Mens, Constantinou – ICSME 2018 – https://doi.org/10.1109/ICSME.2018.00050
An empirical comparison of dependency network evolution in seven software packaging ecosystems
Decan, Mens, Grosjean – Empirical Software Engineering Journal 2019 – https://doi.org/10.1007/s10664-017-9589-y
What do package dependencies tell us about semantic versioning?
Decan, Mens – IEEE Transactions on Software Engineering 2019 – https://doi.org/10.1109/TSE.2019.2918315
Lost in zero space – An empirical comparison of 0.y.z releases in software packaging distributions
Decan, Mens – Science of Computer Programming 2021 – https://doi.org/10.1016/j.scico.2021.102656
Back to the past – Analysing backporting practices in package dependency networks
Decan, Mens, Zerouali, De Roover – IEEE Trans. Software Engineering 2021 – https://doi.org/10.1109/TSE.2021.3112204
Semantic
Versioning
https://semver.org
major minor patch
3 9 2
Breaking
changes
Backwards
compatible
changes
Bug fixes
recommended to respect
semantic versioning
Dependency
Constraints
https://semver.org
major minor patch
3 9 2
Breaking
changes
Backwards
compatible
changes
Bug fixes
Most
permissive
Most
Restrictive
Outdated
Dependencies
• 1 out of 3 packages never update their dependency
• Outdatedness is related to the type of dependency constraint being used
Strict constraints represent
about 33% of all outdated dependencies
Outdated
runtime dependencies
By making dependency constraints “semver-compliant”
the proportion of outdated releases might be reduced by >17%
“What if …” analysis:
Outdated
Dependencies
semver
in package distributions
Different package distributions interpret
dependency constraints in different ways
More restrictive than semver
More permissive than semver
What do package dependencies tell us of semantic versioning?
A Decan, T Mens (2019) IEEE Transactions on Software Engineering
semver compliant
semver
in package distributions
To which extent do package distributions adhere to semver?
All considered distributions become more semver-compliant over time.
mostly semver-compliant
>16% of restrictive dependency constraints,
preventing automatic adoption of backward compatible upgrades
semver
in package distributions
To which extent do package distributions adhere to semver?
The RubyGems team urges gem developers to follow the
semantic versioning standard for their gem’s versions. The
RubyGems library itself does not enforce a strict versioning
policy, but using an “irrational” policy will only be a disservice to
those in the community who use your gems.
https://guides.rubygems.org/patterns/
Cargo package
serde
Packagist package
mage2pro/core
npm package
react-scripts
Rubygems package
rails
Wisdom
of the Crowds
Maintainers of dependent packages should look at how other packages
depend on a required package to decide which version constraint to use.
Distribution of dependency constraint types of dependent packages
compliant
1
permissive
50
compliant
575
restrictive
17
compliant
1
restrictive
56
compliant
288
permissive
506
restrictive
203
Summary
so far
Semver reduces outdatedness
Distribution-specific semver rules are confusing
Package distributions become more semver-compliant over time
Maintainers of dependent packages could use “wisdom of the crowds”
to decide which version constraint to use for their dependencies
What about
major version zero?
“Major version zero (0.y.z) is for initial development. Anything MAY
change at any time. The public API SHOULD NOT be considered stable.”
https://semver.org
More permissive than semver !
Constraint Cargo npm Packagist
~0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[
^0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[
youtu.be/b1U4YefW24Q
proportion of dependency constraints to 0.y.z
accepting at most patches or minor releases
What about
major version zero?
^ constraint is misleading: it behaves differently for 0.y.z releases
Constraint Cargo npm Packagist
^1.2.3 [1.2.3, 2.0.0[ [1.2.3, 2.0.0[ [1.2.3, 2.0.0[
^0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[
only 0.y.z
only 0.y.z
only 0.y.z
only 0.y.z
both
both
both
both
only >= 1.0.0
only >= 1.0.0
only >= 1.0.0
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Cargo
RubyGems
npm
Packagist
Stuck
in zero space?
Proportion of packages having release in a given version range
A minority of 0.y.z packages
ever crosses the 1.0.0 barrier
0.0.0
0.0.0
0.0.0
0.0.0
0.0.1
0.0.1
0.0.1
0.0.1
0.1.0
0.1.0
0.1.0
0.1.0
1.0.0
1.0.0
1.0.0
1.0.0
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Cargo
RubyGems
npm
Packagist
Stuck
in zero space?
Proportion of packages created in 2019, by version number
96.3%
84.9%
44.3%
35.0%
impact of
0.1.0 default
Monthly proportion of 0.y.z releases
Abundance
of 0.y.z releases
The release policies of Cargo and
RubyGems should be adapted
to incite package maintainers
to move out of the zero
version space sooner.
Can 0.y.z
releases be trusted?
FOSDEM 2021 – Lost in ZeroSpace
0.18
Would you trust depending on a
package with major version 0?
No
6%
Only if there
is no
alternative
19%
Only after
checking
41%
Sure
34%
Can 0.y.z
releases be trusted?
FOSDEM 2021 – Lost in ZeroSpace
0.19
Distributions of the number of dependent packages
for required 0.y.z and ≥1.0.0 packages.
Psychological 1.0.0 barrier is mostly artificial:
• Many dependent ≥1.0.0 packages rely on
0.y.z packages.
• Many 0.y.z packages
are required by ≥1.0.0 packages.
• Little practical difference between 0.y.z and
≥1.0.0 packages
Major version zero does not imply initial development.
Move out of zero space as soon as package is production-ready.
« if your software is used in production, it should probably already be 1.0.0 »
« if you have a stable API on which users have come to depend, you should be 1.0.0 »

More Related Content

Similar to Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems

Comparing dependency issues across software package distributions (FOSDEM 2020)
Comparing dependency issues across software package distributions (FOSDEM 2020)Comparing dependency issues across software package distributions (FOSDEM 2020)
Comparing dependency issues across software package distributions (FOSDEM 2020)Tom Mens
 
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...FOSDEM 2020 Presentation: Comparing dependency management issues across packa...
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...Fasten Project
 
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...Tom Mens
 
Empirically Analysing the Socio-Technical Health of Software Package Managers
Empirically Analysing the Socio-Technical Health of Software Package ManagersEmpirically Analysing the Socio-Technical Health of Software Package Managers
Empirically Analysing the Socio-Technical Health of Software Package ManagersTom Mens
 
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...Ahmed Zerouali
 
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...Liran Tal
 
Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Amazon Web Services
 
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...Tom Mens
 
A Developer’s Guide to Kubernetes Security
A Developer’s Guide to Kubernetes SecurityA Developer’s Guide to Kubernetes Security
A Developer’s Guide to Kubernetes SecurityGene Gotimer
 
Container Orchestration with Amazon ECS
Container Orchestration with Amazon ECSContainer Orchestration with Amazon ECS
Container Orchestration with Amazon ECSAmazon Web Services
 
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017Amazon Web Services
 
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...Fasten Project
 
M.E Computer Science Secure Computing Projects
M.E Computer Science Secure Computing ProjectsM.E Computer Science Secure Computing Projects
M.E Computer Science Secure Computing ProjectsVijay Karan
 
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...Baddam Akhil Reddy
 
M phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsM phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsVijay Karan
 
M phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsM phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsVijay Karan
 

Similar to Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems (20)

Comparing dependency issues across software package distributions (FOSDEM 2020)
Comparing dependency issues across software package distributions (FOSDEM 2020)Comparing dependency issues across software package distributions (FOSDEM 2020)
Comparing dependency issues across software package distributions (FOSDEM 2020)
 
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...FOSDEM 2020 Presentation: Comparing dependency management issues across packa...
FOSDEM 2020 Presentation: Comparing dependency management issues across packa...
 
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...
Towards Laws of Software Ecosystem Evolution: An Empirical Comparison of Seve...
 
Empirically Analysing the Socio-Technical Health of Software Package Managers
Empirically Analysing the Socio-Technical Health of Software Package ManagersEmpirically Analysing the Socio-Technical Health of Software Package Managers
Empirically Analysing the Socio-Technical Health of Software Package Managers
 
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
 
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
 
Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017
 
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...
On the Relation between Outdated Docker Containers, Severity Vulnerabilities,...
 
A Developer’s Guide to Kubernetes Security
A Developer’s Guide to Kubernetes SecurityA Developer’s Guide to Kubernetes Security
A Developer’s Guide to Kubernetes Security
 
Canister
Canister Canister
Canister
 
Container Orchestration with Amazon ECS
Container Orchestration with Amazon ECSContainer Orchestration with Amazon ECS
Container Orchestration with Amazon ECS
 
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017
Building and Scaling a Containerized Microservice - DevDay Los Angeles 2017
 
How to use mtr 2
How to use mtr 2How to use mtr 2
How to use mtr 2
 
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...
FASTEN: Scaling static analyses to ecosystem, presented at FOSDEM 2020 in Bru...
 
Node.js security tour
Node.js security tourNode.js security tour
Node.js security tour
 
Nido
NidoNido
Nido
 
M.E Computer Science Secure Computing Projects
M.E Computer Science Secure Computing ProjectsM.E Computer Science Secure Computing Projects
M.E Computer Science Secure Computing Projects
 
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...
Privacy-Preserving and Truthful Detection of Packet Dropping Attacks in Wirel...
 
M phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsM phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projects
 
M phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projectsM phil-computer-science-secure-computing-projects
M phil-computer-science-secure-computing-projects
 

More from Tom Mens

How to be(come) a successful PhD student
How to be(come) a successful PhD studentHow to be(come) a successful PhD student
How to be(come) a successful PhD studentTom Mens
 
Recognising bot activity in collaborative software development
Recognising bot activity in collaborative software developmentRecognising bot activity in collaborative software development
Recognising bot activity in collaborative software developmentTom Mens
 
A Dataset of Bot and Human Activities in GitHub
A Dataset of Bot and Human Activities in GitHubA Dataset of Bot and Human Activities in GitHub
A Dataset of Bot and Human Activities in GitHubTom Mens
 
The (r)evolution of CI/CD on GitHub
 The (r)evolution of CI/CD on GitHub The (r)evolution of CI/CD on GitHub
The (r)evolution of CI/CD on GitHubTom Mens
 
Nurturing the Software Ecosystems of the Future
Nurturing the Software Ecosystems of the FutureNurturing the Software Ecosystems of the Future
Nurturing the Software Ecosystems of the FutureTom Mens
 
Comment programmer un robot en 30 minutes?
Comment programmer un robot en 30 minutes?Comment programmer un robot en 30 minutes?
Comment programmer un robot en 30 minutes?Tom Mens
 
On the rise and fall of CI services in GitHub
On the rise and fall of CI services in GitHubOn the rise and fall of CI services in GitHub
On the rise and fall of CI services in GitHubTom Mens
 
Evaluating a bot detection model on git commit messages
Evaluating a bot detection model on git commit messagesEvaluating a bot detection model on git commit messages
Evaluating a bot detection model on git commit messagesTom Mens
 
Bot or not? Detecting bots in GitHub pull request activity based on comment s...
Bot or not? Detecting bots in GitHub pull request activity based on comment s...Bot or not? Detecting bots in GitHub pull request activity based on comment s...
Bot or not? Detecting bots in GitHub pull request activity based on comment s...Tom Mens
 
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)Measuring Technical Lag in Software Deployments (CHAOSScon 2020)
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)Tom Mens
 
SecoHealth 2019 Research Achievements
SecoHealth 2019 Research AchievementsSecoHealth 2019 Research Achievements
SecoHealth 2019 Research AchievementsTom Mens
 
SECO-Assist 2019 research seminar
SECO-Assist 2019 research seminarSECO-Assist 2019 research seminar
SECO-Assist 2019 research seminarTom Mens
 
ConPan: Analysing Packages Installed in Docker Containers
ConPan: Analysing Packages Installed in Docker ContainersConPan: Analysing Packages Installed in Docker Containers
ConPan: Analysing Packages Installed in Docker ContainersTom Mens
 
On the diversity of software popularity metrics: An empirical study of npm
On the diversity of software popularity metrics: An empirical study of npmOn the diversity of software popularity metrics: An empirical study of npm
On the diversity of software popularity metrics: An empirical study of npmTom Mens
 
How to increase the technical health of your software?
How to increase the technical health of your software?How to increase the technical health of your software?
How to increase the technical health of your software?Tom Mens
 
"Software Ecosystem Health" lightning talk
"Software Ecosystem Health" lightning talk"Software Ecosystem Health" lightning talk
"Software Ecosystem Health" lightning talkTom Mens
 
On the health of the npm packaging ecosystem
On the health of the npm packaging ecosystemOn the health of the npm packaging ecosystem
On the health of the npm packaging ecosystemTom Mens
 
On the evolution of technical lag in the npm package dependency network
On the evolution of technical lag in the npm package dependency networkOn the evolution of technical lag in the npm package dependency network
On the evolution of technical lag in the npm package dependency networkTom Mens
 
On the impact of security vulnerabilities in the npm package dependency network
On the impact of security vulnerabilities in the npm package dependency networkOn the impact of security vulnerabilities in the npm package dependency network
On the impact of security vulnerabilities in the npm package dependency networkTom Mens
 
SoHeal 2018 Welcome Slides: First International Workshop on Software Health
SoHeal 2018 Welcome Slides: First International Workshop on Software HealthSoHeal 2018 Welcome Slides: First International Workshop on Software Health
SoHeal 2018 Welcome Slides: First International Workshop on Software HealthTom Mens
 

More from Tom Mens (20)

How to be(come) a successful PhD student
How to be(come) a successful PhD studentHow to be(come) a successful PhD student
How to be(come) a successful PhD student
 
Recognising bot activity in collaborative software development
Recognising bot activity in collaborative software developmentRecognising bot activity in collaborative software development
Recognising bot activity in collaborative software development
 
A Dataset of Bot and Human Activities in GitHub
A Dataset of Bot and Human Activities in GitHubA Dataset of Bot and Human Activities in GitHub
A Dataset of Bot and Human Activities in GitHub
 
The (r)evolution of CI/CD on GitHub
 The (r)evolution of CI/CD on GitHub The (r)evolution of CI/CD on GitHub
The (r)evolution of CI/CD on GitHub
 
Nurturing the Software Ecosystems of the Future
Nurturing the Software Ecosystems of the FutureNurturing the Software Ecosystems of the Future
Nurturing the Software Ecosystems of the Future
 
Comment programmer un robot en 30 minutes?
Comment programmer un robot en 30 minutes?Comment programmer un robot en 30 minutes?
Comment programmer un robot en 30 minutes?
 
On the rise and fall of CI services in GitHub
On the rise and fall of CI services in GitHubOn the rise and fall of CI services in GitHub
On the rise and fall of CI services in GitHub
 
Evaluating a bot detection model on git commit messages
Evaluating a bot detection model on git commit messagesEvaluating a bot detection model on git commit messages
Evaluating a bot detection model on git commit messages
 
Bot or not? Detecting bots in GitHub pull request activity based on comment s...
Bot or not? Detecting bots in GitHub pull request activity based on comment s...Bot or not? Detecting bots in GitHub pull request activity based on comment s...
Bot or not? Detecting bots in GitHub pull request activity based on comment s...
 
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)Measuring Technical Lag in Software Deployments (CHAOSScon 2020)
Measuring Technical Lag in Software Deployments (CHAOSScon 2020)
 
SecoHealth 2019 Research Achievements
SecoHealth 2019 Research AchievementsSecoHealth 2019 Research Achievements
SecoHealth 2019 Research Achievements
 
SECO-Assist 2019 research seminar
SECO-Assist 2019 research seminarSECO-Assist 2019 research seminar
SECO-Assist 2019 research seminar
 
ConPan: Analysing Packages Installed in Docker Containers
ConPan: Analysing Packages Installed in Docker ContainersConPan: Analysing Packages Installed in Docker Containers
ConPan: Analysing Packages Installed in Docker Containers
 
On the diversity of software popularity metrics: An empirical study of npm
On the diversity of software popularity metrics: An empirical study of npmOn the diversity of software popularity metrics: An empirical study of npm
On the diversity of software popularity metrics: An empirical study of npm
 
How to increase the technical health of your software?
How to increase the technical health of your software?How to increase the technical health of your software?
How to increase the technical health of your software?
 
"Software Ecosystem Health" lightning talk
"Software Ecosystem Health" lightning talk"Software Ecosystem Health" lightning talk
"Software Ecosystem Health" lightning talk
 
On the health of the npm packaging ecosystem
On the health of the npm packaging ecosystemOn the health of the npm packaging ecosystem
On the health of the npm packaging ecosystem
 
On the evolution of technical lag in the npm package dependency network
On the evolution of technical lag in the npm package dependency networkOn the evolution of technical lag in the npm package dependency network
On the evolution of technical lag in the npm package dependency network
 
On the impact of security vulnerabilities in the npm package dependency network
On the impact of security vulnerabilities in the npm package dependency networkOn the impact of security vulnerabilities in the npm package dependency network
On the impact of security vulnerabilities in the npm package dependency network
 
SoHeal 2018 Welcome Slides: First International Workshop on Software Health
SoHeal 2018 Welcome Slides: First International Workshop on Software HealthSoHeal 2018 Welcome Slides: First International Workshop on Software Health
SoHeal 2018 Welcome Slides: First International Workshop on Software Health
 

Recently uploaded

Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoSérgio Sacani
 
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...Sérgio Sacani
 
Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )aarthirajkumar25
 
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service 🪡
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service  🪡CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service  🪡
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service 🪡anilsa9823
 
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...Labelling Requirements and Label Claims for Dietary Supplements and Recommend...
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...Lokesh Kothari
 
Biological Classification BioHack (3).pdf
Biological Classification BioHack (3).pdfBiological Classification BioHack (3).pdf
Biological Classification BioHack (3).pdfmuntazimhurra
 
Formation of low mass protostars and their circumstellar disks
Formation of low mass protostars and their circumstellar disksFormation of low mass protostars and their circumstellar disks
Formation of low mass protostars and their circumstellar disksSérgio Sacani
 
Animal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxAnimal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxUmerFayaz5
 
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral Analysis
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral AnalysisRaman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral Analysis
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral AnalysisDiwakar Mishra
 
Disentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOSTDisentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOSTSérgio Sacani
 
Presentation Vikram Lander by Vedansh Gupta.pptx
Presentation Vikram Lander by Vedansh Gupta.pptxPresentation Vikram Lander by Vedansh Gupta.pptx
Presentation Vikram Lander by Vedansh Gupta.pptxgindu3009
 
GFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxGFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxAleenaTreesaSaji
 
Boyles law module in the grade 10 science
Boyles law module in the grade 10 scienceBoyles law module in the grade 10 science
Boyles law module in the grade 10 sciencefloriejanemacaya1
 
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |aasikanpl
 
Botany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdfBotany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdfSumit Kumar yadav
 
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCR
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCRStunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCR
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCRDelhi Call girls
 
Natural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsNatural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsAArockiyaNisha
 

Recently uploaded (20)

Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on Io
 
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...
Discovery of an Accretion Streamer and a Slow Wide-angle Outflow around FUOri...
 
Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )
 
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service 🪡
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service  🪡CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service  🪡
CALL ON ➥8923113531 🔝Call Girls Kesar Bagh Lucknow best Night Fun service 🪡
 
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...Labelling Requirements and Label Claims for Dietary Supplements and Recommend...
Labelling Requirements and Label Claims for Dietary Supplements and Recommend...
 
CELL -Structural and Functional unit of life.pdf
CELL -Structural and Functional unit of life.pdfCELL -Structural and Functional unit of life.pdf
CELL -Structural and Functional unit of life.pdf
 
Biological Classification BioHack (3).pdf
Biological Classification BioHack (3).pdfBiological Classification BioHack (3).pdf
Biological Classification BioHack (3).pdf
 
Formation of low mass protostars and their circumstellar disks
Formation of low mass protostars and their circumstellar disksFormation of low mass protostars and their circumstellar disks
Formation of low mass protostars and their circumstellar disks
 
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
 
Animal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxAnimal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptx
 
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral Analysis
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral AnalysisRaman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral Analysis
Raman spectroscopy.pptx M Pharm, M Sc, Advanced Spectral Analysis
 
Disentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOSTDisentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOST
 
Presentation Vikram Lander by Vedansh Gupta.pptx
Presentation Vikram Lander by Vedansh Gupta.pptxPresentation Vikram Lander by Vedansh Gupta.pptx
Presentation Vikram Lander by Vedansh Gupta.pptx
 
GFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxGFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptx
 
Boyles law module in the grade 10 science
Boyles law module in the grade 10 scienceBoyles law module in the grade 10 science
Boyles law module in the grade 10 science
 
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |
Call Us ≽ 9953322196 ≼ Call Girls In Mukherjee Nagar(Delhi) |
 
Botany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdfBotany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdf
 
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCR
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCRStunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCR
Stunning ➥8448380779▻ Call Girls In Panchshil Enclave Delhi NCR
 
Natural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsNatural Polymer Based Nanomaterials
Natural Polymer Based Nanomaterials
 
Engler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomyEngler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomy
 

Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems

  • 1. Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems @tom_mens www.linkedin.com/in/tommens www.slideshare.net/TomMens
  • 2. SECO-ASSIST Belgian Research Project "Excellence of Science” secoassist.github.io @secoassist
  • 3. Empirical research on packaging ecosystems On the impact of security vulnerabilities in the npm package dependency network Decan, Mens, Constantinou – MSR 2018 – https://doi.org/10.1145/3196398.3196401 On the evolution of technical lag in the npm package dependency network Decan, Mens, Constantinou – ICSME 2018 – https://doi.org/10.1109/ICSME.2018.00050 An empirical comparison of dependency network evolution in seven software packaging ecosystems Decan, Mens, Grosjean – Empirical Software Engineering Journal 2019 – https://doi.org/10.1007/s10664-017-9589-y What do package dependencies tell us about semantic versioning? Decan, Mens – IEEE Transactions on Software Engineering 2019 – https://doi.org/10.1109/TSE.2019.2918315 Lost in zero space – An empirical comparison of 0.y.z releases in software packaging distributions Decan, Mens – Science of Computer Programming 2021 – https://doi.org/10.1016/j.scico.2021.102656 Back to the past – Analysing backporting practices in package dependency networks Decan, Mens, Zerouali, De Roover – IEEE Trans. Software Engineering 2021 – https://doi.org/10.1109/TSE.2021.3112204
  • 4. Semantic Versioning https://semver.org major minor patch 3 9 2 Breaking changes Backwards compatible changes Bug fixes recommended to respect semantic versioning
  • 5. Dependency Constraints https://semver.org major minor patch 3 9 2 Breaking changes Backwards compatible changes Bug fixes Most permissive Most Restrictive
  • 6. Outdated Dependencies • 1 out of 3 packages never update their dependency • Outdatedness is related to the type of dependency constraint being used Strict constraints represent about 33% of all outdated dependencies Outdated runtime dependencies
  • 7. By making dependency constraints “semver-compliant” the proportion of outdated releases might be reduced by >17% “What if …” analysis: Outdated Dependencies
  • 8. semver in package distributions Different package distributions interpret dependency constraints in different ways More restrictive than semver More permissive than semver What do package dependencies tell us of semantic versioning? A Decan, T Mens (2019) IEEE Transactions on Software Engineering semver compliant
  • 9. semver in package distributions To which extent do package distributions adhere to semver? All considered distributions become more semver-compliant over time. mostly semver-compliant >16% of restrictive dependency constraints, preventing automatic adoption of backward compatible upgrades
  • 10. semver in package distributions To which extent do package distributions adhere to semver? The RubyGems team urges gem developers to follow the semantic versioning standard for their gem’s versions. The RubyGems library itself does not enforce a strict versioning policy, but using an “irrational” policy will only be a disservice to those in the community who use your gems. https://guides.rubygems.org/patterns/
  • 11. Cargo package serde Packagist package mage2pro/core npm package react-scripts Rubygems package rails Wisdom of the Crowds Maintainers of dependent packages should look at how other packages depend on a required package to decide which version constraint to use. Distribution of dependency constraint types of dependent packages compliant 1 permissive 50 compliant 575 restrictive 17 compliant 1 restrictive 56 compliant 288 permissive 506 restrictive 203
  • 12. Summary so far Semver reduces outdatedness Distribution-specific semver rules are confusing Package distributions become more semver-compliant over time Maintainers of dependent packages could use “wisdom of the crowds” to decide which version constraint to use for their dependencies
  • 13. What about major version zero? “Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.” https://semver.org More permissive than semver ! Constraint Cargo npm Packagist ~0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ ^0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ youtu.be/b1U4YefW24Q proportion of dependency constraints to 0.y.z accepting at most patches or minor releases
  • 14. What about major version zero? ^ constraint is misleading: it behaves differently for 0.y.z releases Constraint Cargo npm Packagist ^1.2.3 [1.2.3, 2.0.0[ [1.2.3, 2.0.0[ [1.2.3, 2.0.0[ ^0.2.3 [0.2.3, 0.3.0[ [0.2.3, 0.3.0[ [0.2.3, 0.3.0[
  • 15. only 0.y.z only 0.y.z only 0.y.z only 0.y.z both both both both only >= 1.0.0 only >= 1.0.0 only >= 1.0.0 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Cargo RubyGems npm Packagist Stuck in zero space? Proportion of packages having release in a given version range A minority of 0.y.z packages ever crosses the 1.0.0 barrier
  • 16. 0.0.0 0.0.0 0.0.0 0.0.0 0.0.1 0.0.1 0.0.1 0.0.1 0.1.0 0.1.0 0.1.0 0.1.0 1.0.0 1.0.0 1.0.0 1.0.0 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Cargo RubyGems npm Packagist Stuck in zero space? Proportion of packages created in 2019, by version number 96.3% 84.9% 44.3% 35.0% impact of 0.1.0 default
  • 17. Monthly proportion of 0.y.z releases Abundance of 0.y.z releases The release policies of Cargo and RubyGems should be adapted to incite package maintainers to move out of the zero version space sooner.
  • 18. Can 0.y.z releases be trusted? FOSDEM 2021 – Lost in ZeroSpace 0.18 Would you trust depending on a package with major version 0? No 6% Only if there is no alternative 19% Only after checking 41% Sure 34%
  • 19. Can 0.y.z releases be trusted? FOSDEM 2021 – Lost in ZeroSpace 0.19 Distributions of the number of dependent packages for required 0.y.z and ≥1.0.0 packages. Psychological 1.0.0 barrier is mostly artificial: • Many dependent ≥1.0.0 packages rely on 0.y.z packages. • Many 0.y.z packages are required by ≥1.0.0 packages. • Little practical difference between 0.y.z and ≥1.0.0 packages Major version zero does not imply initial development. Move out of zero space as soon as package is production-ready. « if your software is used in production, it should probably already be 1.0.0 » « if you have a stable API on which users have come to depend, you should be 1.0.0 »