SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Tom Mens, Alexandre Decan
Software Engineering Lab
What do package
dependencies tell us about
semantic versioning?
IEEE Transactions on Software Engineering, May 2019
https://doi.org/10.1109/TSE.2019.2918315
SECO-ASSIST
"Excellence of Science”
Research Project
2018-2021
secoassist.github.io@secoassist
Characterising the evolution of
package dependency networks
Decan & Mens (2019) An Empirical Comparison of Dependency Network Evolution in
Seven Software Packaging Ecosystems. Empirical Software Engineering
830K packages – 5.8M package versions – 20.5M dependencies (April 2017)
Observation: Dependency Hell
Package updates may cause many maintainability
issues or even failures in dependent packages.
"Especially with respect to package
dependencies, the risk of things breaking at
some point due to the fact that a version of a
dependency has changed without you
knowing about it is immense. That actually
cost us weeks and months in a couple of
professional projects I was part of."
Observation: Outdated dependencies
Many package maintainers do not update the
dependencies of their packages.
> 1 out of 3 dependents never
� update their dependency
A Zerouali et al (Feb. 2019) A formal framework for measuring
technical lag in component repositories – and its application to npm.
Wiley Journal on Software Evolution and Process
Should package
maintainers upgrade
their dependencies?
https://chaoss.community
� Upgrades benefit from bug and security fixes
� Upgrading allows to use new features
� Upgrading requires effort
� Upgrading may introduce breaking changes
All Dependencies
Outdated Dependencies
Relation between dependency
constraints and outdatedness
Outdatedness is related to the type of dependency constraint being used
Strict constraints represent about 20% of all dependencies,
but about 33% of all outdated dependenciesSuggestion: Rely on semantic versioning
policy to set dependency constraints
How to avoid breaking changes?
Semantic Versioning to the rescue
• For package providers: Inform your dependents about
which releases are backwards compatible
• For package consumers: Decide and control which newer
dependency releases are permitted
major minor patch
3 9 2
Breaking
changes
Backwards
compatible
changes
Bug fixes
Semantic Versioning 2.0.0
https://semver.org
To which extent do packages follow
semantic versioning?
A comparison of 4 ecosystems
January 2018 dataset from libraries.io:
Dependency constraint syntax
across package managers
Different package managers interpret version constraints in different ways
 Constraint normalization
More restrictive than semver
More permissive than semver
Should we treat 0.y.z releases differently?
Many packages depend
on 0.y.z package releases
According to Semantic Versioning 2.0.0 Specification
https://semver.org
“Major version zero (0.y.z) is for initial development. Anything MAY change
at any time. The public API SHOULD NOT be considered stable.”
Monthly proportion of required packages for
which at least one client is still relying on a 0.y.z
81%
35%
30%
Permissiveness of dependency constraints
across package managers
Pre-1.0.0 constraints are more permissive than semver
Proportion of dependency constraints that are semver-compliant or more permissive
Permissiveness of dependency constraints
across package managers
Post-1.0.0 constraints
Proportion of dependency constraints that are
semver-compliant, more permissive , or more restrictive
• >16% of dependency constraints in npm, Packagist
and Rubygems are restrictive, preventing backward compatible
upgrades from being automatically adopted.
• Cargo, npm and Packagist are mostly semver-compliant.
• All considered ecosystems become more compliant over time.
Compliance of packages with
semantic versioning
Proportion of required packages “specialized” towards a specific
constraint type for its reverse dependencies
Recommending dependency constraints based on “wisdom of the crowds”
Conclusion
• Different package managers have different policies
• RubyGems does not adhere to semantic versioning
• Cargo, Packagist, npm are mostly semver compliant
• Package managers are more permissive than semver for 0.y.z
releases
• Semantic versioning compliance is increasing over time
• The “wisdom of the crowds” principle could help to decide
which type of constraint to use for new dependencies to
existing required packages
What do package dependencies tell us about semantic versioning?
A. Decan, T. Mens. IEEE Transactions on Software Engineering, May 2019
https://doi.org/10.1109/TSE.2019.2918315

Weitere ähnliche Inhalte

Mehr von Tom Mens

Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems
Comparing semantic versioning practices in Cargo, npm, Packagist and RubygemsComparing semantic versioning practices in Cargo, npm, Packagist and Rubygems
Comparing semantic versioning practices in Cargo, npm, Packagist and RubygemsTom Mens
 
Lost in Zero Space
Lost in Zero SpaceLost in Zero Space
Lost in Zero SpaceTom 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
 
Is my software ecosystem healthy? It depends!
Is my software ecosystem healthy? It depends!Is my software ecosystem healthy? It depends!
Is my software ecosystem healthy? It depends!Tom 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
 
On the fragility of open source software packaging ecosystems
On the fragility of open source software packaging ecosystemsOn the fragility of open source software packaging ecosystems
On the fragility of open source software packaging ecosystemsTom Mens
 
How magic is zero? An Empirical Analysis of Initial Development Releases in S...
How magic is zero? An Empirical Analysis of Initial Development Releases in S...How magic is zero? An Empirical Analysis of Initial Development Releases in S...
How magic is zero? An Empirical Analysis of Initial Development Releases in S...Tom Mens
 
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
 
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
 
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
 
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 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
 
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
 

Mehr von Tom Mens (20)

Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems
Comparing semantic versioning practices in Cargo, npm, Packagist and RubygemsComparing semantic versioning practices in Cargo, npm, Packagist and Rubygems
Comparing semantic versioning practices in Cargo, npm, Packagist and Rubygems
 
Lost in Zero Space
Lost in Zero SpaceLost in Zero Space
Lost in Zero Space
 
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
 
Is my software ecosystem healthy? It depends!
Is my software ecosystem healthy? It depends!Is my software ecosystem healthy? It depends!
Is my software ecosystem healthy? It depends!
 
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...
 
On the fragility of open source software packaging ecosystems
On the fragility of open source software packaging ecosystemsOn the fragility of open source software packaging ecosystems
On the fragility of open source software packaging ecosystems
 
How magic is zero? An Empirical Analysis of Initial Development Releases in S...
How magic is zero? An Empirical Analysis of Initial Development Releases in S...How magic is zero? An Empirical Analysis of Initial Development Releases in S...
How magic is zero? An Empirical Analysis of Initial Development Releases in S...
 
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)
 
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
 
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
 
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 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,...
 
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
 

Kürzlich hochgeladen

Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfSELF-EXPLANATORY
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...D. B. S. College Kanpur
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxmalonesandreagweneth
 
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuine
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 GenuineCall Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuine
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuinethapagita
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)itwameryclare
 
Four Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptFour Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptJoemSTuliba
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingNetHelix
 
Speech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxSpeech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxpriyankatabhane
 
Davis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologyDavis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologycaarthichand2003
 
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxMicrophone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxpriyankatabhane
 
User Guide: Orion™ Weather Station (Columbia Weather Systems)
User Guide: Orion™ Weather Station (Columbia Weather Systems)User Guide: Orion™ Weather Station (Columbia Weather Systems)
User Guide: Orion™ Weather Station (Columbia Weather Systems)Columbia Weather Systems
 
Pests of castor_Binomics_Identification_Dr.UPR.pdf
Pests of castor_Binomics_Identification_Dr.UPR.pdfPests of castor_Binomics_Identification_Dr.UPR.pdf
Pests of castor_Binomics_Identification_Dr.UPR.pdfPirithiRaju
 
Pests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPirithiRaju
 
User Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationUser Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationColumbia Weather Systems
 
OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024innovationoecd
 
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxTHE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxNandakishor Bhaurao Deshmukh
 
FREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naFREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naJASISJULIANOELYNV
 
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdf
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdfBUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdf
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdfWildaNurAmalia2
 

Kürzlich hochgeladen (20)

Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
 
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuine
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 GenuineCall Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuine
Call Girls in Majnu Ka Tilla Delhi 🔝9711014705🔝 Genuine
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)
 
Four Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptFour Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.ppt
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
 
Speech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxSpeech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptx
 
Davis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologyDavis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technology
 
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxMicrophone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
 
User Guide: Orion™ Weather Station (Columbia Weather Systems)
User Guide: Orion™ Weather Station (Columbia Weather Systems)User Guide: Orion™ Weather Station (Columbia Weather Systems)
User Guide: Orion™ Weather Station (Columbia Weather Systems)
 
Pests of castor_Binomics_Identification_Dr.UPR.pdf
Pests of castor_Binomics_Identification_Dr.UPR.pdfPests of castor_Binomics_Identification_Dr.UPR.pdf
Pests of castor_Binomics_Identification_Dr.UPR.pdf
 
Pests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdf
 
User Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationUser Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather Station
 
OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024
 
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxTHE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
 
FREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naFREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by na
 
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdf
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdfBUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdf
BUMI DAN ANTARIKSA PROJEK IPAS SMK KELAS X.pdf
 

What do package dependencies tell us about semantic versioning?

  • 1. Tom Mens, Alexandre Decan Software Engineering Lab What do package dependencies tell us about semantic versioning? IEEE Transactions on Software Engineering, May 2019 https://doi.org/10.1109/TSE.2019.2918315
  • 2. SECO-ASSIST "Excellence of Science” Research Project 2018-2021 secoassist.github.io@secoassist
  • 3. Characterising the evolution of package dependency networks Decan & Mens (2019) An Empirical Comparison of Dependency Network Evolution in Seven Software Packaging Ecosystems. Empirical Software Engineering 830K packages – 5.8M package versions – 20.5M dependencies (April 2017)
  • 4. Observation: Dependency Hell Package updates may cause many maintainability issues or even failures in dependent packages. "Especially with respect to package dependencies, the risk of things breaking at some point due to the fact that a version of a dependency has changed without you knowing about it is immense. That actually cost us weeks and months in a couple of professional projects I was part of."
  • 5. Observation: Outdated dependencies Many package maintainers do not update the dependencies of their packages. > 1 out of 3 dependents never � update their dependency A Zerouali et al (Feb. 2019) A formal framework for measuring technical lag in component repositories – and its application to npm. Wiley Journal on Software Evolution and Process
  • 6. Should package maintainers upgrade their dependencies? https://chaoss.community � Upgrades benefit from bug and security fixes � Upgrading allows to use new features � Upgrading requires effort � Upgrading may introduce breaking changes
  • 7. All Dependencies Outdated Dependencies Relation between dependency constraints and outdatedness Outdatedness is related to the type of dependency constraint being used Strict constraints represent about 20% of all dependencies, but about 33% of all outdated dependenciesSuggestion: Rely on semantic versioning policy to set dependency constraints
  • 8. How to avoid breaking changes? Semantic Versioning to the rescue • For package providers: Inform your dependents about which releases are backwards compatible • For package consumers: Decide and control which newer dependency releases are permitted major minor patch 3 9 2 Breaking changes Backwards compatible changes Bug fixes Semantic Versioning 2.0.0 https://semver.org
  • 9. To which extent do packages follow semantic versioning? A comparison of 4 ecosystems January 2018 dataset from libraries.io:
  • 10. Dependency constraint syntax across package managers Different package managers interpret version constraints in different ways  Constraint normalization More restrictive than semver More permissive than semver
  • 11. Should we treat 0.y.z releases differently? Many packages depend on 0.y.z package releases According to Semantic Versioning 2.0.0 Specification https://semver.org “Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.” Monthly proportion of required packages for which at least one client is still relying on a 0.y.z 81% 35% 30%
  • 12. Permissiveness of dependency constraints across package managers Pre-1.0.0 constraints are more permissive than semver Proportion of dependency constraints that are semver-compliant or more permissive
  • 13. Permissiveness of dependency constraints across package managers Post-1.0.0 constraints Proportion of dependency constraints that are semver-compliant, more permissive , or more restrictive • >16% of dependency constraints in npm, Packagist and Rubygems are restrictive, preventing backward compatible upgrades from being automatically adopted. • Cargo, npm and Packagist are mostly semver-compliant. • All considered ecosystems become more compliant over time.
  • 14. Compliance of packages with semantic versioning Proportion of required packages “specialized” towards a specific constraint type for its reverse dependencies Recommending dependency constraints based on “wisdom of the crowds”
  • 15. Conclusion • Different package managers have different policies • RubyGems does not adhere to semantic versioning • Cargo, Packagist, npm are mostly semver compliant • Package managers are more permissive than semver for 0.y.z releases • Semantic versioning compliance is increasing over time • The “wisdom of the crowds” principle could help to decide which type of constraint to use for new dependencies to existing required packages What do package dependencies tell us about semantic versioning? A. Decan, T. Mens. IEEE Transactions on Software Engineering, May 2019 https://doi.org/10.1109/TSE.2019.2918315

Hinweis der Redaktion

  1. S5: Ce résultat inclut également les paquets qui sont abandonnés ou les paquets qui n'ont pas connu de nouvelles releases depuis l'introduction d'une contrainte (autrement dit : ce résultat n'a pas considéré la censure droite liée à l'absence d'opportunité de mettre à jour une dépendance). De même, certaines dépendances n'ont pas besoin d'être mise à jour car elles sont "universelles" (>=x, *, "latest", etc.) ou encore parce qu'aucune nouvelle version de la cible n'est disponible. Je dois pouvoir te calculer le "vrai" ratio si tu le souhaites, mais il sera sans doute plutôt aux alentours de 50% que de 33%.
  2. S6: Tu peux ajouter quelque chose du genre "Older versions are usually no longer maintained" (on peut adopter les patchs d'une mineure/majeure précédente et donc bénéficier des "fixes", mais ça suppose que de tels patchs osnt encore déployés pour une ancienne mineure/majeure).
  3. Talk about the dilemma of which type of dependency constraint to be used: strict ones require you to manually update your dependency constraints after each upgrade; permissive ones may pose backward incomp problems
  4. A majority of required packages in Cargo and npm are still in an initial development phase. For these two ecosystems, more than one third of the dependency constraints are pre-1.0.0 constraints. For Rubygems and Packagist, even if this proportion is lower, it still repre- sent on average 15.5% and 9.5% of all constraints. It is therefore important to distinguish between pre-1.0.0 and post-1.0.0 constraints to analyze semver-compliance. Cargo: 81%, npm 35%, packagist 15%, rubygems 30% at the last date
  5. A majority of required packages in Cargo and npm are still in an initial development phase. For these two ecosystems, more than one third of the dependency constraints are pre-1.0.0 constraints. For Rubygems and Packagist, even if this proportion is lower, it still repre- sent on average 15.5% and 9.5% of all constraints. It is therefore important to distinguish between pre-1.0.0 and post-1.0.0 constraints to analyze semver-compliance.
  6. PAR DEFAUT SEMVER NE PEUT PAS ETRE PLUS RESTRICTIVE Oralement il sera sans doute intéressant de rappeler que semver considère que "tout peut casser" pour 0.x.y, et que cette interprétation impose qu'il n'existe pas de contraintes plus restrictives que semver. La raison pour laquelle cette remarque est utile est qu'elle est à l'origine de discussions importantes sur le fait qu'un patch doit ou ne doit pas être compatible. Ca explique la large proportion de contraintes "permissive".
  7. Pour le premier item, j'ajouterai qu'un package manager ne peut que suggérer l'usage de semver, pas l'imposer (par définition de semver). Les 4 considérés le recommendent plus ou moins fortement (surtout cargo, puis npm, puis rubygems via une variante de semver et enfin packagist). En pratique, les paquets sont libres de choisir de respecter ou non semver, et on voit que certains le font (cargo ou dans une moindre mesure npm) mais pas tous (rubygems étant l'exemple parfait pour ça).
  8. Specialised = 95% of the dependent package agree; and minimum 2 dependent package; (based on 1-year history only) White zone = those for which no 95% agreement We looked at post-1.0.0 constraints only for wisdom of the crowds… We assessed and confirmed that the “wisdom of the crowds” principle can be used to allow to decide which type of constraint to use for new dependencies to existing required packages. If the large majority of dependencies to a given required package “agree” on the constraint type they use, this constraint type can be recommended for other packages desiring to depend on the same required package.
  9. Newly added pre-1.0.0 constraints are more permissive than semver Newly added post-1.0.0 constraints are mostly semver compliant Different package managers have different policies RubyGems does not adhere to semantic versioning Semantic versioning compliance is increasing over time Required packages are specialized towards a specific constraint type The “wisdom of the crowds” principle could help to decide which type of constraint to use for new dependencies to existing required packages