Technical lag Technical lag for software Jesus M. Gonzalez-Barahona deployments The balance Releases Collections Dependencies Jesus M. Gonzalez-Barahona (direct) Dependencies (all) Universidad Rey Juan Carlos Discussion @jgbarah http://github.com/jgbarah/presentations Summary Seminar at IMDEA Software Madrid (Spain), October 2nd 2018 Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 1 / 35
Technical lag “If I go there will be trouble Jesus M. Gonzalez-Barahona And if I stay it will be double The balance So come on and let me know” Releases Collections Dependencies Should I Stay Or Should I Go? (direct) Dependencies (all) The Clash Discussion Summary https: // www. youtube. com/ watch? v= BN1WwnEDWAM Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 2 / 35
The balance Technical lag Jesus M. Gonzalez-Barahona The balance The balance Releases Collections Dependencies (direct) Dependencies (all) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 3 / 35
The balance Technical lag Deployments Jesus M. Gonzalez-Barahona The balance Releases Any deployment Collections Dependencies is the real world instance (direct) Dependencies (all) of an “ideal” target Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 4 / 35
The balance Technical lag Deployments: the balance Jesus M. Gonzalez-Barahona The balance Releases “If it works, don’t touch it” Collections Dependencies (direct) vs. Dependencies (all) “The quest for the ideal” Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 5 / 35
The balance Technical lag Deployments: example Jesus M. Gonzalez-Barahona You want the latest functionality The balance Releases so you deploy it Collections but the day after Dependencies (direct) it is no longer the latest Dependencies (all) Discussion Summary Should you update? Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 6 / 35
The balance Technical lag Living the risky life Jesus M. Gonzalez-Barahona The balance Releases Collections Dependencies (direct) Dependencies (all) Discussion Summary Upgrading in Debian/testing Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 7 / 35
The balance Technical lag Dependencies Jesus M. Gonzalez-Barahona You want the latest functionality The balance Releases so you deploy it Collections but dependencies may prevent you Dependencies (direct) from having the latest Dependencies (all) Discussion Summary Should dependencies be updated? Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 8 / 35
The balance Technical lag Living in the past Jesus M. Gonzalez-Barahona The balance Releases "dependencies": { Collections "coffeescript": "~1.10.0", Dependencies "dateformat": "~1.0.12", (direct) "eventemitter2": "~0.4.13", Dependencies (all) "exit": "~0.1.1", Discussion "findup-sync": "~0.3.0", Summary ... }, Oct. 2018: Grunt master / coffescript Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 9 / 35
Releases Technical lag Jesus M. Gonzalez-Barahona The balance Releases Releases Collections Dependencies (direct) Dependencies (all) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 10 / 35
Releases Technical lag Technical lag Jesus M. Gonzalez-Barahona For a release: The balance Releases “difference between the deployed release Collections and the ideal release” Dependencies (direct) Dependencies (all) • What is “ideal release”? Discussion Summary • How we measure difference between releases? Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 11 / 35
Releases Technical lag Ideal release (examples) Jesus M. Gonzalez-Barahona The balance Releases Most recent Collections Most recent in the stable line Dependencies (direct) Less open bugs Dependencies (all) Discussion Less unfixed vulnerabilities Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 12 / 35
Releases Technical lag Difference (examples) Jesus M. Gonzalez-Barahona The balance Releases Difference in release time Collections Difference in version number Dependencies (direct) Number of commits Dependencies (all) Difference in number of open bugs Discussion Estimated effort Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 13 / 35
Releases Technical lag • ideal: P × Repos → R Jesus M. Gonzalez-Barahona Given p ∈ P , repo ∈ Repos , ideal ( p , repo ) The balance • diff: R × R × Repos → L Releases Collections Given repo ∈ Repos and r , s ∈ repo , Dependencies diff ( r , s , repo ), if package ( r ) = package ( s ) (direct) Dependencies (all) • techlag: R × Repos → L Discussion ∀ repo ∈ Repos , ∀ r ∈ repo : Summary techlag ( r , repo ) = diff ( r , ideal ( r , repo ) , repo ) Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 14 / 35
Releases Technical lag Example Jesus M. Gonzalez-Barahona Package: Pandas The balance Deployed: 0.22.0 Releases Collections Ideal: 0.23.4 Dependencies (direct) Lag (releases): 6 releases Dependencies (all) Discussion Lag (reltime): 8 months, 4 days Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 15 / 35
Releases Technical lag Example Jesus M. Gonzalez-Barahona Debian releases The balance for git Releases Collections Dependencies (source code & (direct) commits Dependencies (all) Discussion diffs) Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 16 / 35
Collections Technical lag Jesus M. Gonzalez-Barahona The balance Collections Releases Collections Dependencies (direct) Dependencies (all) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 17 / 35
Collections Technical lag Technical lag Jesus M. Gonzalez-Barahona For a collection of releases: The balance Releases Collections “aggregation of the lag Dependencies for each release in the collection” (direct) Dependencies (all) Discussion • How do we aggregate? Summary • Examples: maximum, summation, mean Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 18 / 35
Collections Technical lag Jesus M. Gonzalez-Barahona • techlag: P ( R ) × Repos → L The balance • Given rcoll ∈ P ( R ) , repo ∈ Repos , Releases Collections techlag max ( rcoll , repo ) = max r ∈ rcoll ( techlag ( r , repo )) Dependencies (direct) • Given rcoll ∈ P ( R ) , repo ∈ Repos , Dependencies (all) techlag add ( rcoll , repo ) = � r ∈ rcoll techlag ( r , repo ) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 19 / 35
Dependencies (direct) Technical lag Jesus M. Gonzalez-Barahona Dependencies The balance Releases Collections (direct) Dependencies (direct) Dependencies (all) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 20 / 35
Dependencies (direct) Technical lag Technical lag Jesus M. Gonzalez-Barahona For direct dependencies of a release: The balance Releases “technical lag Collections for the collection formed by Dependencies (direct) direct dependencies of the release” Dependencies (all) Discussion Summary • Having constraints into account • Selecting as the package manager does Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 21 / 35
Dependencies (direct) Technical lag • dep : R → P ( P ) Jesus M. Gonzalez-Barahona • allowed : R × P × Repos → P ( R ) allowed ( r , p , repo ) = rcol , where rcol ⊂ repo . The balance Releases • selectver : P ( R ) → R Collections Dependencies • deploy : R × Repos → P ( R ) (direct) Given repo ∈ Repos , r ∈ repo , Dependencies (all) deploy ( r , repo ) = Discussion { selectver ( allowed ( r , p i , repo )) , ∀ p i ∈ dep ( r ) } Summary • deplag : R × Repos → L : deplag ( r , repo ) = techlag ( deploy ( r , repo )) Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 22 / 35
Dependencies (all) Technical lag Jesus M. Gonzalez-Barahona Dependencies The balance Releases Collections (all) Dependencies (direct) Dependencies (all) Discussion Summary Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 23 / 35
Dependencies (all) Technical lag Technical lag Jesus M. Gonzalez-Barahona For all dependencies of a release: The balance Releases “technical lag Collections for the collection formed by Dependencies (direct) all (transitive) dependencies of the release” Dependencies (all) Discussion Summary • Having constraints into account • Selecting as the package manager does Jesus M. Gonzalez-Barahona (URJC) Technical lag Seminar IMDEA Software 24 / 35
Recommend
More recommend