It is wrong to suppose that if you cant measure it, you cant manage - - PowerPoint PPT Presentation

it is wrong to suppose that if you can t measure it you
SMART_READER_LITE
LIVE PREVIEW

It is wrong to suppose that if you cant measure it, you cant manage - - PowerPoint PPT Presentation

It is wrong to suppose that if you cant measure it, you cant manage it - a costly myth W. Edwards Deeming If you cant measure it, you cant improve it Lord Kelvin Technical Debt for Linux-based distributions:


slide-1
SLIDE 1

“It is wrong to suppose that if you can’t measure it, you can’t manage it - a costly myth”

  • W. Edwards Deeming
slide-2
SLIDE 2

“If you can’t measure it, you can’t improve it”

Lord Kelvin

slide-3
SLIDE 3

Technical Debt for Linux-based distributions:

Estimating what you are missing

Jesus M. Gonzalez-Barahona (URJC & Bitergia) Paul Sherwood (Codethink) speakerdeck.com/bitergia Linux Foundation Open Source Leadership Summit Tahoe, CA (USA) February 14th 2017

slide-4
SLIDE 4

Outline

Some context Why debt for distros Approach Current results Next steps

slide-5
SLIDE 5

Some context

slide-6
SLIDE 6

/Jesus Like five years ago I was having coffees with the gang of Bitergia founders Involved in the company since then bitergia.com I work at Universidad Rey Juan Carlos... ...researching about software development gsyc.es/~jgb My two hats:

slide-7
SLIDE 7

/Paul Currently… Codethink CEO and shareholder Consultant + troubleshooter Baserock contributor Previously... Teleca Founder cmdline tools + VCS Project Manager “The Software Commandments”

slide-8
SLIDE 8

Why debt for distros

slide-9
SLIDE 9

Context (Paul’s POV)

  • Develop/integrate/test software
  • Employ/fund others to do that too
  • Offer teams to large customers
  • Advise on business impacts of FOSS
  • Recommend *using* FOSS
  • See lots of projects *misusing* FOSS

EOL versions

Long local forks, not upstreamed

  • Notice Year 1 practices hurt Year 2..Year 20
  • Wonder why… maybe because

Year 1 metrics are obvious (developer costs vs delivery date)

Later metrics are a mystery...

slide-10
SLIDE 10

Unanswered: when should we update?

slide-11
SLIDE 11

Unanswered: when should we update?

slide-12
SLIDE 12

We’re not talking about updating just a few components...

slide-13
SLIDE 13

Typical IVI project approaching 1000… Which ones do we need to upgrade? How often do we need to re-decide?

slide-14
SLIDE 14

Example

  • Project started on 3.8.x kernel in 2012

○ Plus custom drivers

  • Went live three years later on same 3.8.x

○ Plus custom functionality ○ Plus thousands of fixes backported

  • As the years go by

○ Developers move on - no-one understands the custom stuff ○ Cost of backporting increases

  • New variants need new features (eg virtualization)

○ Cost of backporting from later kernels increases Eventually one of the releases DEMANDS an update

slide-15
SLIDE 15

Example continued

Development Maintenance

slide-16
SLIDE 16

When to update

What you risk by upgrading What you risk or lose by not upgrading

slide-17
SLIDE 17

When to update

The balance may change suddenly

  • ver time
slide-18
SLIDE 18

Rationale

  • Technical debt is a popular concept
  • … but not for third-party software
  • … and not for FOSS
  • Distros are large third-party software sets
  • Distros update constantly
  • Distro users often do not
  • Cost of updating is perceived high
  • Cost of not updating is unknown

Can we even **find** metrics for this?

slide-19
SLIDE 19

Approach

What to measure?

  • Delta vs mainline
  • For individual components,

and

  • For whole stack:
  • distros
  • custom

assemblies/stacks

slide-20
SLIDE 20

Defining “Gold standard”

slide-21
SLIDE 21

The different kinds of gold (examples)

Goals Scenarios Candidates Stability Isolated system, frozen functionality Debian stable Functionality Cloud application Latest upstream Security Upgradable embedded Stable upstream

slide-22
SLIDE 22

Comparing with upstream

Upstream master Upstream 2.x Deployed packages Distro packages 1.4 2.0 2.1

slide-23
SLIDE 23

Comparing with upstream (no updates)

Upstream master Upstream 2.x Deployed packages Distro packages 1.4 2.0 2.1

slide-24
SLIDE 24

Comparing with upstream (late updates)

Upstream master Upstream 2.x Deployed packages Distro packages 1.4 2.0 2.1

slide-25
SLIDE 25

Comparing with upstream (new package)

Upstream master Upstream 2.x Deployed packages Distro packages 1.4 2.0 2.1 3.0

??

slide-26
SLIDE 26

Compare “most likely upstream equivalent”

1.4 2.0 2.1 3.0

??

slide-27
SLIDE 27

Compare “most likely upstream equivalent” with HEAD

1.4 2.0 2.1 3.0

??

slide-28
SLIDE 28

Difference is “technical lag” with “gold standard”

1.4 2.0 2.1 3.0

??

slide-29
SLIDE 29

How to measure difference

1.4 2.0 2.1 3.0

Lines of code Number of functions, classes Number of bugs fixed Number of security bugs fixed Number of issues closed Time for benchmark runs Unit test coverage Results in integration tests

...

slide-30
SLIDE 30

Current results

slide-31
SLIDE 31

Debian Git releases, lag in November (lines, files)

slide-32
SLIDE 32

Debian Git releases, lag in Nov. (commits)

slide-33
SLIDE 33

Normalized effort (in days)

For each developer: number of days with at least

  • ne commit

For a project: sum for all developers

slide-34
SLIDE 34

Debian Git releases, lag in Nov. (normalized effort)

slide-35
SLIDE 35

Next steps

slide-36
SLIDE 36

Application to many domains Debian packages in a virtual machine Python pip packages in a deployed container JavaScript npm modules in a web app Yocto packages in an embedded system

slide-37
SLIDE 37

Definition of details, according to requirements Different “golden standards” Different metrics for lag Different aggregations Software for automated computation of lag per component (and dependencies?)

slide-38
SLIDE 38

Credits

slide-39
SLIDE 39

Images

“Gold”, by Michael Mandiberg CC Attribution-ShareAlike 2.0 https://flic.kr/p/6feTT2 “Gold philarmonic”, by Eric Golub CC Attribution-ShareAlike 2.0 https://flic.kr/p/7csHXG “Plymouth”, by Dennis Jarvis CC Attribution-ShareAlike 2.0 https://flic.kr/p/5pqT72 “Jenga distorted”, by Guma89 at WikiMedia Commons CC Attribution-ShareAlike 3.0 https://commons.wikimedia.org/wi ki/File:Jenga_distorted.jpg “Balance scale”, by winnifredxoxo at Flickr CC Attribution-ShareAlike 2.0 https://flic.kr/p/9LdVCR