Meni

Dediščina programske opreme: svetovni arhiv izvornih kod programske opreme

Roberto Di Cosmo

Programska oprema ni le gonilo naše panoge in inovacij, temveč tudi bistveno sredstvo komunikacije. Omogoča nam boljše življenje, izvajanje kakršnih koli transakcij in dejavnosti, medsebojno organizacijo v družbi in oblikovanje političnih mnenj. Programska oprema je ključna za delovanje gospodarskih, družbenih in političnih organizacij, ne glede na to, ali so javnega ali zasebnega značaja oziroma delujejo na mobilnih napravah ali v oblaku. Igra nepogrešljivo vlogo posrednika, ki omogoča dostop do vseh digitalnih informacij, poleg člankov in podatkov pa predstavlja tudi enega od stebrov sodobnega raziskovanja (Noorden et al., 2014).

Programska oprema je torej pomemben del naše znanstvene, tehnične in industrijske dediščine.

Ob pozornem opazovanju lahko ugotovimo, da se pravo znanje hranjeno v programski opremi ne skriva v izvršljivih programih, temveč v »izvorni kodi«, ki v skladu z definicijo v licenci GPL predstavlja »zaželeni način, s katerim razvijalec spremeni program.«1 Izvorna koda je posebna oblika znanja: ustvarjena je tako, da jo razume človek, torej razvijalec, in da se jo lahko strojno prevede v obliko, s pomočjo katere je izvršljiva neposredno na napravi. Zgovorno je že samo izrazoslovje, ki ga uporablja računalniška skupnost: »programski jeziki« se uporabljajo za »pisanje« programja. Harold Habelson je že leta 1985 zapisal, da je »programe treba najprej napisati, da jih lahko preberejo drugi ljudje«. (Abelson & Sussman, 1985)

Izvorna koda programske opreme je torej človeška stvaritev, ki je ustvarjena na povsem enak način kot drugi pisni dokumenti, zato si razvijalci programske opreme zaslužijo enako mero spoštovanja kot drugi ustvarjalci.

Izvorna koda programske opreme je dragocena dediščina, kar sta trdila že Len Shustek (v odličnem članku iz leta 2006 (Shustek, 2006)) in Donald Knuth (Knuth, 1984), zato je bistvenega pomena, da jo poskušamo ohraniti.

Poslanstvo pobude Software Heritage, ki je nastala leta 2015 s podporo inštituta Inria,2 je zbirati, organizirati in ohranjati vso javno dostopno izvorno kodo na planetu ter jo narediti javno dostopno, ne glede na to, kje in kako je bila razvita ali distribuirana.

Večplastna naloga

Arhiviranje celotne izvorne kode, ki je dostopna, je večplastna naloga. V članku (Abramatic et al., 2018) je podrobno opisano, da je treba uporabiti različne strategije, odvisno od tega, ali želite zbrati odprto ali lastniško izvorno kodo, poleg tega pa je treba izvorno kodo, ki je že dostopna prek spleta, drugače obravnavati kot izvorno kodo, ki je nameščena na starejših fizičnih medijih.

Za zbiranje odprte izvorne kode, ki je že dostopna na spletu, je najustrezneje razviti zbiralnik, ki samodejno zbira vsebino z najrazličnejših platform za sodelovanje, kot so GitHub, GitLab.com ali BitBucket, ali s platform za distribucijo paketov programske opreme, kot so Debian, NPM. CRAN ali Pypi.

Za zbiranje izvorne kode stare programske opreme je treba vzpostaviti pravi postopek računalniške arheologije. V sodelovanju z Univerzo v Pisi in UNESCOM smo že pričeli z delom in tako je nastal proces SWHAP. Uporabili smo ga za iskanje, dokumentiranje in arhiviranje programske opreme, ki je igrala pomembno vlogo v zgodovini računalništva v Italiji. Nedavno smo ga razširili v sklopu projekta Software Stories, ki poskuša izpostaviti vse zgodovinske elemente v zvezi s programsko opremo, katere izvorna koda je bila najdena.

Svetovno poslanstvo

Temeljna načela Software Heritage so (Abramatic et al., 2018; Di Cosmo in Zacchiroli, 2017): sistematična uporaba odprtokodne programske opreme za razvijanje infrastrukture za Software Heritage, zato da je njeno delovanje mogoče razumeti in ga po potrebi ponoviti; izgradnja globalne mreže neodvisnih zrcalnih kopij arhiva, saj je veliko število kopij najboljša zaščita pred izgubo in napadi; izbira neprofitne in mednarodne strukture z več deležniki, s čimer se zmanjša tveganje za obstoj posameznih mest okvar ter zagotovi, da bo pobuda Software Heritage resnično služila vsem.

Za izpolnitev takega poslanstva sta potrebni institucionalna legitimnost kot tudi resnična sposobnost širokega konsenza. Okvirni sporazum, ki sta ga Inria in UNESCO podpisala 3. aprila 2017 in obnovila novembra 2021, je ključnega pomena.

Preteklost, sedanjost in prihodnost: veliko več kot arhiv!

Software Heritage poseduje infrastrukturo, ki raste iz dneva v dan. Arhiv večinoma sestavljajo vsebine, ki so bile pridobljene s postopkom samodejnega zbiranja, pričenjamo pa dodajati tudi bisere, pridobljene s potrpežljivim obnavljanjem starejše programske opreme s postopkom zajemanja, ki je bil razvit v sodelovanju Univerze v Pisi in UNESCA.3

Slika 1: Število projektov, izvornih datotek in različic, ki so bili od junija 2022 arhivirani v Software Heritage .

Čeprav izčrpnost še zdaleč ni dosežena, arhiv že sedaj vsebuje največji korpus izvorne kode na svetu z več kot 180 milijoni arhiviranih izvorov za več kot 12 milijard edinstvenih datotek z izvorno kodo, vsaka od njih pa je opremljena z intrinzičnim identifikatorjem, ki temelji na kriptografskih zgoščenih vrednostih (Di Cosmo et al., 2018).

Ta edinstvena infrastruktura ima več poslanstev. Seveda je namen ohraniti izvorne kode iz preteklosti, ki so zapisale zgodovino računalništva in informacijske družbe, za prihodnje generacije. Vseeno pa predvsem poskušamo zgraditi velikanski teleskop, ki nam bo pomagal pri raziskovanju sedanjega razvoja galaksije programske opreme, da bi jo bolje razumeli in izboljšali ter tako ustvarili boljšo tehnološko prihodnost.

Strateško vprašanje, ki ga moramo poznati

Arhiv Software Heritage je že sedaj najpomembnejša zbirka izvorne kode na svetu, a pred nami je še dolga pot: združiti je treba še številne deležnike, od kulturne dediščine do industrije in od raziskovalnih ustanov do javne uprave. Računamo, da bomo to dosegli s pomočjo rastoče mreže ambasadorjev vključno z Računalniškim muzejem v Ljubljani.

Jasno je, da je programska oprema postala bistven sestavni del vseh človekovih dejavnosti, zato neomejen dostop do javno dostopnih izvornih kod programske opreme postaja vprašanje digitalne suverenosti vseh narodov.

Edinstvena infrastruktura, ki jo z univerzalnim pristopom gradi Software Heritage, je ključnega pomena za doseganje zahtevnega cilja digitalne suverenosti ob ohranjanju dimenzije arhiva za skupno dobro.

Zato je izjemno pomembno, da se odločevalci na ravni institucij, panoge, znanosti in civilne družbe pričnejo zavedati, kako pomembna so ta vprašanja. Poleg tega bi morala Evropska unija hitro zavzeti svoja stališče in pričeti zagotavljati potrebna sredstva, zaradi katerih bo lahko pobuda Software Heritage rasla in trajala. S tem bi se postavili ob bok drugim mednarodnim akterjem, ki so se k pobudi že zavezali, in podprli ustanovitev mednarodne neprofitne ustanove, ki bo dolgoročno izvajala to poslanstvo.

Notes

1. GNU91. Splošno dovoljenje GNU, različica 2, 1991. Pridobljeno septembra 2015.

2. Inria je javna znanstvena in tehnološka ustanova, specializirana za matematiko in računalništvo, ki je bila ustanovljena leta 1967. Deluje pod nadzorom francoskega Ministrstva za visoko šolstvo, raziskave in inovacije ter Ministrstva za gospodarstvo in finance.

3. Glej SWHAP na spletnem mestu https://www.softwareheritage.org/swhap.