Libyears

Kysymys: Mikä on projektin riippuvuuksien ikä verrattuna nykyisiin vakaisiin julkaisuihin?

Kuvaus

Libyears selittää iän riippuvuudet johon projekti (arkisto tai rakennettavien ohjelmistojen tietovarastot) perustuu, verrattuna näiden riippuvuuksien nykyisiin vakaisiin julkaisuihin. Riippuvuuden "nykyinen vakaa" julkaisu on yleiseen käyttöön tarkoitettu julkaisu, joka ei sisällä ehdokas-/luonnosjulkaisuja. Ikä on kumulatiivinen kaikissa projektin riippuvuuksissa, ja se voidaan määrittää useilla tavoilla, kuten raportoimalla kokonais-ikä, keski-ikä ja mahdollisesti mediaani-ikä (huomaa, että mediaani-ikä voi piilottaa ongelmia, jos iät ovat pitkät). Yleensä pienempi Libyear-luku on parempi. Työkalujen tulisi myös tarjota luettelo riippuvuuksista, jotka on lajiteltu iän mukaan, jotta saadaan enemmän tietoa. Tämän mittaamisen konseptia ehdottivat Cox et al [Cox 2015] "Measuring Dependency Freshness in Software Systems".

Huomautus: Joissakin tapauksissa vanhemman version käyttäminen nykyisen version sijaan voi olla viisaampi valinta. Tämä mittari tarjoaa kuitenkin tietoa, joka auttaa muita tunnistamaan, missä vanhemmat versiot ovat käytössä.

Tavoitteet

Libyears-mittarin tavoitteena on auttaa tunnistamaan riippuvuuksia, jotka todennäköisemmin aiheuttavat projektille vakaus-, turvallisuus- ja haavoittuvuusriskejä. Pitkään vanhentuneessa komponentissa on todennäköisemmin julkisesti tunnettuja haavoittuvuuksia, ja se on myös vähemmän tuettu. Se on hyödyllinen aloitussuodatin riippuvuuksien lajitteluun, joka auttaa tunnistamaan riippuvuudet, jotka vaativat projektin lähempää tarkastelua.

Täytäntöönpano

Terveysmittareiden käyttö ja levittäminen voi johtaa yksityisyyden loukkauksiin. Organisaatiot voivat altistua riskeille. Nämä riskit voivat johtua GDPR-asetuksen noudattamisesta EU:ssa, Yhdysvaltain osavaltion lain tai muun lainsäädännön noudattamisesta. Tietojen tarjoajien, kuten GitHubin ja GitLabin, palveluehdoista voi myös aiheutua sopimusriskejä. Mittareiden käyttöä on tutkittava riskien ja mahdollisten dataeettisten ongelmien varalta. Ole hyvä ja katso CHAOSS Data Ethics -asiakirja lisäohjeita varten.

parametrit

Oletuksena nämä tiedot ovat ekosysteemissä (esim. JavaScript tai Maven), koska se on helpompi laskea. Tämä mittari voidaan laskea useiden ekosysteemien kesken, mutta se vaatii yleensä enemmän tietoa, esimerkiksi ekosysteemien välisen Software Bill of Materials (SBOM) -aineiston.

Nämä tiedot voivat ottaa huomioon vain suoria riippuvuuksia tai ne voivat sisältää myös kaikki transitiiviset riippuvuudet. On todennäköisempää, että mahdolliset ongelmat paljastavat, jos transitiiviset riippuvuudet sisällytetään, mutta kaikki tällaiset työkalut eivät tue tätä.

Jos projektilla on useita vakaita/tuettuja haaroja, onko hyväksyttävää pitää "nykyistä" missä tahansa haarassa? Oletusarvon mukaan vain uusin vakaa haara otetaan huomioon, koska tyypillisesti ajan myötä vanhemmat haarat saavat vähemmän ylläpitoa. Vaihtoehto (vaikka ei oletuksena) on myös hyväksyä vanhemmat versiot "nykyisiksi", jos kyseistä vanhempaa versiota tuetaan aktiivisesti. raporteissa on selvästi mainittava, milloin tätä vaihtoehtoa käytetään. Pitäisikö olla armonaikaa, jolloin uutta riippuvuutta pidetään edelleen "ajankohtaisena"? Oletusarvoisesti vastaus on ei; mikä tahansa tietty lisäaika on mielivaltainen, ja tarkoituksena on yrittää pysyä ajan tasalla

Suodattimet (valinnainen)

Riippuvuustaso (vain suora, sisältää transitiiviset riippuvuudet jne. [Upstream Code Dependencies] -kohdassa määriteltyjenhttps://github.com/chaoss/wg-risk/blob/master/focus-areas/dependency-risk-assessment/upstream-code-dependencies.md) metrinen.

  • Kumulatiiviset Lib-vuodet kokonaisiänä.
  • Keskimääräinen riippuvuuden ikä
  • Riippuvuussuhteiden mediaaniikä
  • Lajiteltu luettelo riippuvuuksista (lajiteltu vanhin ensin), joten "iän takia riskialttiimmat" riippuvuudet tunnistetaan ensin

Visualisaatiot (valinnainen)

Tämä on esimerkki Libyearista suorien riippuvuuksien Libyears kumulatiivisena mittana, tässä tapauksessa kumulatiivisella arvolla 103.78 kumulatiivista libyears.

LibYear Visualisointi

Tämä kuva on lähteestä https://github.com/nasirhjafri/libyear

Mittarin antavat työkalut (valinnainen)

Huomaa, että jotkin työkalut voivat myös laskea eroja versiotunnusten välillä (esim. 1.1.1 vs. 1.2.3); tämä voi olla informatiivinen, mutta kaikki riippuvuudet eivät käytä samoja versionumerointimenetelmiä, joten yksinkertaisuuden vuoksi keskitymme ajan mittaamiseen.

Tässä on esimerkki työkaluista, jotka toteuttavat libyersareja:

Viitteet

Osallistujat

  • Sophia Vargas (Google)
  • David A. Wheeler (Linux Foundation)
  • Vinod Ahuja (University of Nebraska Omaha)
  • Kate Stewart (Linux Foundation)
  • Duane O'Brien
  • Sean Goggins (Missourin yliopisto / CHAOSS-projekti)