Kaip galėtų atrodyti Lietuvos atvirų duomenų portalas
Lietuvoje įsibėgėja atvirų duomenų portalo (ADP) projektas, kuriam yra skirta 2,6 mln. €. Šiuo metu rengiama ADP techninė specifikacija. Šio projekto eigą atidžiai stebiu nuo pat pradžių. Jei tiksliau, atvirų duomenų sritį pradėjau stebėti nuo 2012 metų, o ADP projektas prasidėjo 2017 metais.
Noriu pasidžiaugti, kad tiek IVPK, tiek tiekėjai sutinka bendrauti ir dalinasi informacija apie projekto eigą ir progresą, padeda suprasti, kas vyksta.
Per 6 metus esu paleidęs nuo nulio kurtą atvirų duomenų portalą, keletą kartų esu paleidęs CKAN sistemą, kelis kartus esu perkėlęs IVPK IRS sistemos duomenis į CKAN. Esu daręs duomenų surinkimą naudojant Scrapy ir BeatifulSoap, esu sukūręs savo karkasą duomenims atverti ir to karkaso pagalba esu atvėręs apie 10 duomenų rinkinių. Atvertus duomenis esu panaudojęs projektuose manoseimas.lt, manopozicija.lt, esu analizavęs duomenis panaudodamas mašinų mokymosi algoritmus. Dariau apklausą dėl atvirų duomenų poreikio. Apklausos pagrindu parengiau inventorizacijos ir prašymo gauti duomenis pavyzdines formas. Esu skaitęs daugybę dokumentų, tokių kaip investiciniai projektai, projekto nuostatai, viešojo pirkimo dokumentai, galimybių tyrimai ir pan.
Visu tuo noriu pasakyti, kad esu išsamiai susipažinęs su atvirų duomenų klausimu. Kadangi šiuo metu yra rengiama techninė atvirų duomenų portalo specifikacija, noriu pasidalinti savo patirtimi ir matymu, kaip galėtų būti kuriamas atvirų duomenų portalas.
Mano vertinimu, atvirų duomenų projektas turėtų būti sudarytas iš šių esminių dalių (kiekvienos dalies apimtį įvertinau pinigais, kad geriau atspindėti tos dalies svorį visame projekte):
7,3 mln. € duomenų inventorizavimo ir atvėrimo darbai, jei būtų atveriami absoliučiai visi atvertini valstybinių įstaigų duomenys.
0,2 mln. € priemonių kūrimas duomenų inventorizavimui, prašymų teikimui, atvėrimui ir viso proceso stebėsenai.
0,03 mln. € duomenų vitrinos CKAN pagrindu paleidimas.
0,006 mln. € infrastruktūros kaina per metus.
Paaiškinimą iš kur gavau tokius skaičius rasite skyrelyje finansų paskirstymas. 7,3 mln. € kaina duomenų inventorizavimui ir atvėrimui yra gerokai didesnė, nei skirtas finansavimas. Bet mano vertinimu tiek galėtų kainuoti absoliučiai visų valstybinių duomenų atvėrimas. Akivaizdu, kad skirto finansavimo neužteks visiems duomenis atverti, todėl labai svarbu tinkamai nusistatyti prioritetus. Jei bus atverti esminiai ir labiausiai reikalingi duomenų rinkiniai, to turėtų užtekti didžiajai daliai projektų įgyvendinti. Jei duomenys bus atveriami neatsižvelgiant į poreikį, tada pinigai bus išleisti, dalis duomenų bus atverta, tačiau projektai negalės judėti į priekį, jei jiems trūks duomenų, kurie nebuvo atverti.
Nuo ko pradėti?¶
Labai svarbu darbus pradėti nuo teisingo galo. Mano manymu, pradėti reikėtų nuo duomenų atvėrimo. Pradžiai reikėtų pasirinkti nesudėtingą ir nedidelės apimties duomenų rinkinį, pasidaryti inventorizaciją ir atverti duomenis.
Tik turint realios patirties, bent su vienu ar keliais duomenų rinkiniais, galima pradėti kurti priemones, kurios palengvintu inventorizavimo ir atvėrimo darbus.
Atlikus kelių duomenų rinkinių inventorizaciją, galima pereiti prie prašymų gauti duomenis. Prašymai žinoma turėtų būti ne A4 lapas su tekstu, o kompiuteriui suprantamo formato duomenų failas, kuriame būtų surašyti projektui reikalingi laukai. Pradžiai, prašymų formos gali būti pateiktos paprastų skaičiuoklių forma. Vėliau, išbandžius prašymų teikimo ir priėmimo procesą praktiškai, galima sukurti patogesnius įrankius, vietoj skaičiuoklės lentelių.
Turint procesą prašymų pateikimui ir priėmimui, duomenų atvėrimo prioritetas turėtų būti nustatomas remiantis prašymų duomenimis. Kuo daugiau pateikta prašymų tam tikriems duomenims gauti, tuo tų duomenų atvėrimo prioritetas turėtų būti didesnis. Žinoma vadovautis reikėtų ne tik prašymu skaičiumi, bet ir projekto, kuriam reikalingi duomenys rodikliais. Didelės apimties projektai, turintys didžiausią socialinę ir ekonominę naudą, turėtų būti aukštesnio prioriteto, nei nedideli ir mažos svarbos asmeniniai duomenų panaudojimo projektėliai.
Didėjant atvertų rinkmenų kiekiui reikalinga stebėsenos sistema, kurioje turėtų atsispindėti esminiai veiklos rodikliai. Turėtų matytis kiek prašymų jau patenkinta, kiek procentų liko iki tol, kol bus patenkinti visi prašymai arba kiek procentų liko, kol bus pilnai patenkinti konkrečių projektų prašymai. Turėtų būti galimybė stebėti atveriamų duomenų prognozuojama socialinė ir ekonominė nauda. Visa stebėsena žinoma turėtų vykti realiu laiku.
Nuolat didėjant atvertų duomenų rinkinių skaičiui, reikėtų apsirašyti metodiką, kurioje būtų dokumentuoti duomenų atvėrimo procesai. Ši metodika turėtų padėti išlaikyti vientisumą atveriant vis daugiau duomenų. Įgaunant vis naujos patirties atveriant duomenis, metodika turėtų būti nuolat atnaujinama. Realybėje, ADP projekte darbai buvo pradėti ne nuo duomenų atvėrimo, o nuo metodikos rengimo, kas mano manymu nėra gerai. Galima bandyti aprašyti pyrago valgymo metodiką, jo neparagavus, bet vis dėl to geriau atsikąsti bent vieną kąsnį, o tada imtis metodikos, remiantis praktine patirtimi.
Paskutiniame etape, turint pakankamai daug atvertų duomenų galima įsidiegti atvirų duomenų vitriną. Atvirų duomenų vitrinoje būtų galima greitai susirasti atvertus duomenų rinkinius, juos filtruoti pagal kategorijas, raktinius žodžius ir pan. Vitrinoje galima demonstruoti, kokie projektai kokius duomenis naudoja. Nėra prasmės paleidinėti vitrinos projekto pradžioje, neturint duomenų.
Kiek etapų reikia šiam projektui?¶
Šiuo metu ADP projektas yra suskirstytas į bent penkis skirtingus etapus. Projekto pradžioje man kilo tam tikrų klausimų į kuriuos buvo atsakyta, kad šiame etape tai nenumatyta, bet tai bus daroma vėlesniuose etapuose. Etapų gausa trukdo sekti projekto eigą. Nėra garantijos, kad pažadėti darbai sekančiuose etapuose tikrai bus vykdomi. Be to, kiekvienas etapas reikalauja atskiro viešojo pirkimo, skirtingus etapus gali vykdyti skirtingi tiekėjai turinti visiškai kitą pasaulio suvokimą.
Idealiu atveju, geriausia apsiriboti vienu etapu, kuriame turi būti padaryta viskas, be atidėliojimų ateities etapams. Vienam etapui užtektų vieno viešojo pirkimo, nedidelės komandos paslaugoms, kuri toliau galėtų žongliruoti įvairiais tiekėjais, žinoma skaidriai ir kompiuteriui įskaitomu formatu atsiskaitydama už panaudotas lėšas.
Prašymai duomenims gauti¶
Projektų kūrėjai, norėdami gauti jiems reikalingus duomenis turėtų teikti prašymus duomenims gauti. Prašymai būtų pateikiami ne A4 lapo dokumentais su tekstu, o kompiuteriui suprantamu pavyzdžiui JSON arba YAML formatu. Iš bėdos, galima prašymus pateikti ir skaičiuoklės lentelėmis, aiškiai susitarus dėl lentelės struktūros.
Prašymuose, projektų kūrėjai turėtų tiksliai surašyti, kokių duomenų laukų projektui. Prašymai duomenims gauti ir inventorizacijos aprašai turėtų naudoti suderinama formatą, kad būtų galima palyginti inventorizuotus ir prašomus duomenis. Teikiant prašymus duomenims gauti, prašymas, kaip ir inventorizacijos atveju, iš pradžių gali būti pateikiamas mažesniu detalumu, o vėliau esant reikalui detalumas gali būti didinamas.
Prašyme reikėtų nurodyti projektui reikalingus duomenis, o ne tai, kokius duomenis kaupia valstybinės įstaigos. Jei prašomų duomenų nėra inventorizacijos įrašuose arba įstaiga tiesiog tokių duomenų nekaupia, tada tai turėtų būti ženklas, kad gal būt tokius duomenis reikėtų pradėti kaupti, nes yra poreikis juos naudoti. Yra labai daug projektams reikalingų duomenų, kurių valstybinės įstaigos nekaupia, nors galėtų kaupti. Valstybinėse įstaigose labai daug duomenų yra „paslėpta“ A4 lapuose.
Vienas iš pavyzdžių apie nekaupiamus duomenis galėtų būti teisės aktų duomenys. Šiuo metu teisės aktai yra spausdinimui paruošti dokumentai, kuriuose nėra sužymėta kokią funkcija dokumente atlieka atskiros pastraipos ar atskiri teksto fragmentai. Teisės aktų keitimo projektų tekste nėra mašininiu būdu nuskaitomos informacijos apie tai, kas tiksliai keičiama. Tokie duomenys yra labai naudingi įvairiuose taikymuose, tačiau jie nėra kaupiami.
Baiminamasi, kad atvirų duomenų naudotojų bendruomenė yra labai nedidelė ir labai pasyvi, dėl to niekas neteiks prašymu. Manau dėl to tikrai nereikėtų nerimauti, svarbu sudaryti priemones pateikti prašymus duomenims gauti ir tinkamai apie tai informuoti visuomenę. Reikėtų aiškiai nurodyti, kad duomenys bus atveriami prašymų skaičiaus prioriteto tvarka. Jei atsiras, bent vienas prašymas, reiškia prioritetas yra aiškus, kadangi yra konkretus suinteresuotas asmuo, kuris tuos duomenis planuoja naudoti. Jei prašymo nėra, tada nėra jokių garantijų, kad atvėrus duomenis, kas nors juos naudos.
Šiuo metu žiniasklaidos priemonėse galima rasti keletą užsakomųjų straipsnių, kurie supažindina visuomenę su atvirais duomenimis. Problema yra ta, kad duomenų kol kas nėra ir tokie straipsniai galėtų informuoti apie tvarką, kaip teikti prašymus duomenims gauti. Jei tai bus aiškiai iškomunikuota, prašymų tikrai netrūks.
Teikiant prašymus reikėtų įvertinti esamą/numatomą projekto naudotojų skaičių ir esamą/numatomą pelną ar kitus rodiklius. Tokiu būdu atsiras galimybė realiu laiku paskaičiuoti, kiek pelno generuoja atviri duomenys ir kiek naudotojų naudoja paslaugas atvirų duomenų dėka. Papildomai, galima įvertinti ateities pelno ir naudotojų prognozes. Tokie rodikliai gali būti naudojami tiksliau įvertinti atvertinų duomenų prioritetą. Duomenys reikalingi didelio masto ir poveikio projektui turėtų būti aukštesnio prioriteto, nei vieno asmens prašymas gauti duomenis asmeniniams tikslams.
Vyriausybė taip pat turėtų teikti prašymus gauti duomenis, vadovaujantis turima strategija ir veiklos sritimis. Strategija ir veiklos sritys yra mažo detalumo, todėl prašyme reikėtų tiksliau aprašyti galimus duomenų panaudojimo atvejus kiekvienoje srityje ir sužymėti, kokių konkrečių duomenų laukų reikėtų šiems projektams. Tokiu būdu, net ir neturint prašymų duomenims gauti, būtų galima vadovautis strateginiais prioritetais.
Atveriant duomenis prioritetą reikėtų teikti didesnį detalumą turintiems prašymams.
Bendrasis žodynas¶
Kadangi skirtingos įstaigos ir skirtingų projektų autoriai naudoja skirtingus pavadinimus tam pačiam dalykui pavadinti reikia turėti bendrąjį žodyną, kad būtų įmanoma susikalbėti, tiek žmogiškąja tiek kompiuterine prasme.
Turint inventorizacijos ir prašymų duomenis, juos reikėtų „išversti“ iš vidinės terminologijos į bendrojo žodyno terminologiją. Pavyzdžiui, turi būti galimybė nurodyti, kad inventorizacijos duomenyse naudojamas fname laukas yra tas pats, kas vardas. Tokiu būdu, atsiranda galimybė įvertinti poreikį automatiniu būdu, siejant inventorizacijos ir prašymų duomenis per bendrąjį žodyną.
Bendrojo žodyno nereikėtų painioti su viešai skelbiamais žodynais, tokias kaip DCAT, FOAF, Dublin Core ir pan. Bendrasis žodynas yra skirtas tik vidinėms inventorizacijos ir prašymų teikimo reikmėms. Viešieji žodynai dengia specifines ir siauras sritis. Tinkamų viešųjų žodynų paieška ir susiejimas yra daug laiko reikalaujantis darbas, be to viešieji žodynai dengia tik nedidelę dalį visų terminų. Kai kurie viešieji žodynai dengia tuos pačius terminus, todėl reikia atsirinkti kurį žodyną naudoti.
Kadangi darbas su viešaisiais žodynais yra gan sudėtingas ir reikalauja daug laiko, geriausia naudoti tik vidinėms reikmėms skirtą bendrąjį žodyną, kuris būtų kuriamas ir pildomas bendromis pastangomis. Vėliau siekiant didesnės integracijos, bendrasis žodynas gali būti susietas ir su viešaisiais žodynas.
Atliekant inventorizaciją ir teikiant prašymus, reikėtų vadovautis bendruoju žodynu.
Esminių veiklos rodiklių stebėsena¶
Remiantis inventorizacijos ir prašymų duomenimis galėtų būti pateiktas visų laukų sąrašas. Tame sąraše galėtų būti rodoma, pateiktų prašymų skaičius, numatyta atvėrimo data, panaudotas finansavimas, atsakingas tiekėjas už atvėrimą, įstaigos teikiančios duomenis ir pan. Jei duomenys jau atverti, turi būti rodoma informacija, kada duomenys buvo atnaujinti, ar atnaujinimo metu nebuvo klaidų, kiek kartų duomenys yra pasisiųsti ar kiek naudotojų nuolat atlieka duomenų sinchronizavimą, kiek kainavo duomenų atvėrimas.
Visa tai turėtų būti rūšiuojama, pagal prašymų skaičių, pagal esamą/numatomą pelną, naudotojų skaičių, atvėrimo kainą.
Jei duomenys yra išvestiniai, turi būti nuoroda į šaltinį, iš kurių duomenys buvo išvesti.
Galėtų būti rodomi statistiniai duomenys apie tai, koks procentas prašymų gauti duomenis yra patenkintas, kiek dar liko atverti duomenų, kiek liko skirto finansavimo pinigų, kokie teikiamų duomenų brandos lygiai. Galima apskaičiuoti kokių įstaigų duomenų labiausiai prašoma ir kiek jų yra atverta. Galima realiu laiku rodyti bendrą atvirų duomenų generuojamą pelną ir naudotojų skaičių. Galima įvertinti ar išleisti pinigai duomenims atverti jau atsipirko ar dar ne.
Duomenų naudotojai, naudojantis duomenų portalo API galėtų teikti atsiliepimus apie naudojamus duomenis. Galėtų informuoti, kiek projektas turi naudotojų, kiek pelno generuoja, galėtų informuoti apie klaidas ir pan.
Finansų paskirstymas¶
Jau ne kartą yra pademonstruota, kad paleisti duomenų vitriną CKAN pagrindu trunka vidutiniškai vieną savaitgalį. Mano vertinimu, norint padaryti duomenų perkėlimą iš senos IVPK IRS į CKAN, prijungti arba sukurti trūkstamas funkcijas, padaryti projekto CI/CD, patalpinti serveryje ir pan. gali prireikti apie 3 mėnesių vieno žmogaus darbo, ribojant apetitą naujoms funkcijoms ir apsiribojant tuo, ką turi CKAN. Vertinant pinigais tai būtų 65 €/h × 8 h/d × 20 d/mėn × 3 mėn = 0,0312 mln. € arba 1,2% skirto 2.6 mln. € finansavimo. Mano vertinimu, duomenų vitrina yra mažiausiai svarbus dalykas šiame projekte. Žymiai svarbesnis dalykas yra duomenys, jei nėra duomenų, tai nėra ir ką dėti į vitriną.
Kita duomenų atvėrimo vidinės virtuvės dalis yra kiek sudėtingesnė, kadangi šiam reikalui jau sukurto įrankio nėra. Yra daug atskirų įrankių duomenų surinkimui, transformavimui, pateikimui ir pan. Bet nėra tokio, dalyko, kuris visą tai susietų į vieną vietą. Duomenų inventorizacijos, prašymų teikimo, stebėsenos ir duomenų suvedimo ir keitimo naudotojo sąsajai sukurti, mano vertinimu gali reikėti 12 mėnesių vieno žmogaus darbo. Pinigais tai gautųsi apie 65 €/h × 8 h/d × 20 d/mėn × 12 mėn = 0,1248 mln. € arba 4,8% skirto finansavimo.
Visą tai paskaičiavus, duomenų atvėrimui liktų 2,4 mln. €.
Dėl pačio duomenų atvėrimo, mano vertinimu, vidutiniškai, vienam žmogui, norint atverti vieną duomenų rinkinį įskaitant pilną detalią inventorizaciją, nuasmeninimą, transformaciją ir susiejimą, gali reikėti vieno mėnesio laiko. Kai kurie atvejai gali būti paprastesni, kiti sudėtingesni, bet manau vidutiniškai tai būtų apie mėnuo laiko. Šiuo metu IVPK IRS yra registruota apie 700 duomenų rinkinių. Visą tai pavertus pinigais, gautųsi 65 €/h × 8 h/d × 20 d/mėn × 1 mėn × ~700 rinkmenų = ~7,3 mln. €. Kaip ir minėjau, duomenų atvėrimas yra daug laiko reikalaujantis, rankinis darbas ir visiems duomenis atverti, skirto finansavimo tikrai neužteks. Tačiau finansavimo turėtų užtekti, norint atverti bent 30% aukščiausio prioriteto duomenų, o tai yra labai daug. 30% aukščiausio prioriteto duomenų, ko gero turėtų pilnai patenkinti visus pateiktus prašymus duomenims gauti, darant prielaidą, kad pradžioje nebus labai didelis atvirų duomenų naudojimo aktyvumas.
Dar yra viena svarbi kainos dedamoji, tai vieta serveryje, kur bus saugomi duomenys ir vykdomas duomenų apdorojimas. Tarkime, 100TB duomenų saugykla, sudaryta iš kelių virtualių serverių tikriausiai kainuos apie 6000 € per metus. Žiūrint dešimt metų į priekį, tai kainuotų 60 000 € per metus arba 0,06 mln. € arba 2,3% viso finansavimo 10-čiai metų.
Tikriausiai, kažkiek pinigų reikėtų teisininkų paslaugoms. Dalis valstybinių įstaigų valdančių didelius duomenų registrus nenusiteikusios dalintis duomenimis, kadangi iš duomenų gerai uždirba. Tokiais atvejais, bet teisininkų pagalbos matyt išsiversti nepavyks.
Išvados arba TL;DR¶
Stengiausi viską surašyti glaustai, bet gavosi daug temų ir daug teksto, todėl išvadose rasite labai apibendrintą variantą.
Esminės vietos, kurias norėjau aprašyti yra šios:
Darbų atlikimo tvarka. Šiuo metu projektas vykdomas atskirais etapais tokia eilės tvarka: projekto nuostatos ir partnerių sutinkančių atverti duomenis pasirinkimas, metodikos rengimas, techninė specifika portalui, portalo įgyvendinimas pagal specifikaciją ir paskutinėje vietoje pasirinktų partnerių duomenų atvėrimas. Tuo tarpu mano siūlymas nedaryti tokio griežto suskirstymo etapais, o koncentruotis ties duomenų atvėrimu ir pakeliui pasidaryti viską, ko reikia duomenų atvėrimui, daryti tik tai ko tikrai reikia, be išankstinių teorinių metodikų ar specifikacijų.
Darbų apimtis. Įvairiuose dokumentuose daug dėmesio skirta duomenų vitrinai, kuri pagal mano skaičiavimus yra mažiausios apimties darbas visame šiame projekte. Todėl norėjau perteikti skaičiais realų atskirų projektų dalių svorį.
Atveriamų duomenų prioriteto svarba. Noriu pabrėžti, kad labai svarbu ne kiekybė, o atveriamų duomenų kokybė. Jei bus atverta tik pusė projektui reikalingų duomenų, projektas negalės būti pabaigtas. Todėl labai svarbu atverti tuos duomenis, kurių reikia realiems projektams.
Duomenų detalumas. Dažnai, kalbant apie duomenis, vertinamos labai abstrakčios duomenų kategorijos, tokios kaip geografiniai duomenys, transporto duomenys ir pan. Kalbant apie duomenis, reikia kalbėti apie duomenų laukus, bent jau atliekant inventorizaciją ir priimant prašymus duomenims gauti.
Esminiai veiklos rodikliai. Norint suprasti ar projektas buvo sėkmingas ar ne, reikia galimybės realiu laiku stebėti esminius veiklos rodiklius. Tokiu būdu galima įsivertinti ar projektas pasiekė kokius nors rezultatus ar ne.
Skaidrumas. Šiam projektui skirtų pinigų panaudojimo atvejus galima taip pat interpretuoti kaip duomenis ir integruoti į sistemą. Tokiu būdu bus tiksliai matyti kas kiek kainavo ir kodėl.
Manau skirtas 2,6 mln. € finansavimas tikrai gali stipriai stumtelėti atvirų duomenų situaciją Lietuvoje ir nesunkiai galime tapti pavyzdys kitoms šalims. Bet visą tai yra įmanoma, tik tinkamai organizuojant darbus ir leidžiant pinigus tik ten, kur jų tikrai reikia.
Nesilaikant geros projekto disciplinos, galima labai greitai išleisti visus pinigus dalykams kurie yra mažos vertės ir nelabai kam reikalingi. Reikia tikėtis, kad taip nenutiks.