Versioonihalduskeskkonnad GitHubi, GitLabi ja Bitbucketi näitel: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Svpetr (talk | contribs)
Svpetr (talk | contribs)
Line 131: Line 131:
'''GitHub''' - Kõige esimene versioonihaldus keskkond mis on kõige suurema kasutajaskonnaga, kõige töökindlam aga samas ka kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace [https://github.com/marketplace], mis pakub nii tasuta kui tasulisi lisafunktsionaalsuste laiendamise võimalusi. Kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) [https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab] kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim [https://github.com/pricing#feature-comparison] aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.
'''GitHub''' - Kõige esimene versioonihaldus keskkond mis on kõige suurema kasutajaskonnaga, kõige töökindlam aga samas ka kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace [https://github.com/marketplace], mis pakub nii tasuta kui tasulisi lisafunktsionaalsuste laiendamise võimalusi. Kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) [https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab] kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim [https://github.com/pricing#feature-comparison] aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.


'''GitLab''' - Loodud GitHubi analoogina kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com] ja võimalikult suur paindlikus keskkonda vastavalt enda ja projekti vajadustele kohanda just selliseks, et kõige paremini täita püstitatud eesmärke. GitLab Community Edition puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav [https://gitlab.com/gitlab-org/gitlab-foss] ja enda serverites kasutamise puhul ka vabalt muudetav vastavalt tekkivatele vajadustele. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLabi on võimalik installida kasutades isegi Dockeri image -id. See nõuab loomilikult vastava know-how olemasolu ja kogu tiimi teadlikust eriversiooni kasutamisel. Ka GitLab -il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused kuid tunduvalt väiksemas mahus kui GitHubil ja Bitbucketil [https://docs.gitlab.com/ee/user/project/integrations/overview.html]. Kuid kuna tegemist on avatud lähtekoodiga tarkvaraga siis on täiendavate integratsioonide loomine tehtud kõigile vabalt võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised [https://docs.gitlab.com/ee/administration/file_hooks.html]. GitLab -i eeliseks võib pidada näiteks seda, et siin on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.
'''GitLab''' - Loodud GitHubi analoogina kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com] ja võimalikult suur paindlikus keskkonda vastavalt enda ja projekti vajadustele kohanda just selliseks, et kõige paremini täita püstitatud eesmärke. GitLab Community Edition puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav [https://gitlab.com/gitlab-org/gitlab-foss] ja enda serverites kasutamise puhul ka vabalt muudetav vastavalt tekkivatele vajadustele. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLabi on võimalik installida kasutades isegi Dockeri image -id [https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html]. See nõuab loomilikult vastava know-how olemasolu ja kogu tiimi teadlikust eriversiooni kasutamisel. Ka GitLab -il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused kuid tunduvalt väiksemas mahus kui GitHubil ja Bitbucketil [https://docs.gitlab.com/ee/user/project/integrations/overview.html]. Kuid kuna tegemist on avatud lähtekoodiga tarkvaraga siis on täiendavate integratsioonide loomine tehtud kõigile vabalt võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised [https://docs.gitlab.com/ee/administration/file_hooks.html]. GitLab -i eeliseks võib pidada näiteks seda, et siin on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.


'''Bitbucket''' - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega mille autoriks on Atlassian Corporation nagu näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad siis on versioonihalduse keskkonnana kindlasti heaks valikuks just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldus tarkvaraga. Ka Bitbucketit on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel [https://www.atlassian.com/licensing/bitbucket-server#cloud-licensing]. Bitbucketi funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace [https://marketplace.atlassian.com/] kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucketi miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5 -e tiimi liikmega [https://bitbucket.org/product/pricing?ref=stackshare]. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu [https://github.com/pricing#feature-comparison], [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com].
'''Bitbucket''' - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega mille autoriks on Atlassian Corporation nagu näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad siis on versioonihalduse keskkonnana kindlasti heaks valikuks just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldus tarkvaraga. Ka Bitbucketit on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel [https://www.atlassian.com/licensing/bitbucket-server#cloud-licensing]. Bitbucketi funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace [https://marketplace.atlassian.com/] kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucketi miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5 -e tiimi liikmega [https://bitbucket.org/product/pricing?ref=stackshare]. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu [https://github.com/pricing#feature-comparison], [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com].
'''Kuidas võiks neid keskkondi kasutama õppida'''
...





Revision as of 10:30, 2 May 2020

Sissejuhatus

Versioonikontrolli [1] kasutatakse erinevates keskkondades. Versioonihaldust võivad pidada tekstitöötlus programmid, tabelarvutusprogrammid, veebilehed, sisuhaldussüsteemid kui ka Wikipedia ise. Versioonihaldus võimaldab näha dokumendi vaheseisu kui ka tagasi pöörata dokumendi eelnevasse versiooni.

Versioonihaldus

Iga arendaja puutub varem või hiljem kokku versioonihaldusega. Versioonihaldus võimaldab arendajal kirjutatud koodi versioneerida. On võimalik näha minevikus tehtud muudatusi, kes need muudatused tegi, miks tegi (põhjus koos kommentaaridega) ja millal need tehtud on. See kõik on vajalik kirjutatud koodi paremaks haldamiseks ning kõige parema tulemuse annavad need võimalused siis kui mitu arendajat koostöös tegelevad ühe projektiga.

Versioonihaldussüsteemid

Versioonihaldussüsteemid on need rakendused mida kasutavad versioonihalduskeskkonnad projektifailide haldamiseks. Versioonihalduse keskkondi on aegade algusest loodud erinevaid, erinevatel põhjustel erinevate inimeste poolt. Suurimaks üheks keskkonnaks on GitHub millel on kohe kannul GitLab ning kaugeltki maha ei jää ka Bitbucket. Kõik loetletud süsteemid on ehitatud Git'i peale mis on üks vanematest versioonihaldussüsteemidest. Peale Git'i on veel CVS, SVN, Mercurial, Monotone jm.

Versioonihalduskeskkonnad on loonud mitmeid oma pakette ja teenuseid laiendamaks Giti funktsionaalsust. Lisaks on loodud ka hinnastatud võimalusi meeskondadele ja ettevõtetele mis pakuvad erinevat võimekust ja funktsioone veelgi parema koostöö kogemuse pakkumiseks. Üldiselt pakutakse põhifunktsionaalsust kõigile kuid suuremate inimeste hulga ja lisavõimaluste puhul tahetakse seda paketi, teenuse või plaanina pakkuda, olenevalt kuidas keskkond seda nimetanud on.

Rõhku on pandud ka turvalisusele. Võimalus on saada teavitus kui projektis kasutatavas komponendis on leitud turvanõrkus või mõni ligipääsu võti on jäänud lähtekoodi. Jällegi, täpsemad ja veel turvalisust lisavad teenused on kasutatavad ainult parema plaani omanikele. Versioonihalduskeskkonna poolt pakutakse ettevõtte tüüpi plaani tellinutele lisaks veel kasutajatuge.

Repositooriumid

Projektid on repositooriumid kust sikutatakse faile (pull) [2], lükatakse neid üles (push) [3], kloonitakse omale (clone) [4], liigutatakse ringi (mv) [5], kustutatakse (rm) [6] jpm. Versioonihalduskeskkonnad hoiustavad repositooriumeid ning lihtsustavad arendajate koostööd. Projekti sikutamisega tiritakse projektifailid omale soovitud keskkonda nende kallal töötamiseks. Tehtud soovitud muudatused, saadetakse need projekti tagasi teadmisega, et vanem versioon jääb alles. Arendajal on võimalus projekti ka mitmes seadmes muuta eelnevalt mainitud käskude abil. Mitmes arvutis tööd tehes on lõpuks tulemus mestida (merge) [7] ning saab kõik jälle ühtseks.

Eelnevat saab lahendada kasutades käsurea käske kui ka versioonihalduskeskkonna graafilist liidest. Igal huvilisel on võimalik minna uudistama omale huvi pakkuvat avaliku repositooriumit. Näiteks on võimalik uurida kuidas on loodud meie ID-kaardi tarkvara. Sellist koodis tuhnimist isegi soovitatakse, et õppida parimatelt. Kunagi versioonihalduskeskkondi polnud mis koodi avalikult näitaks ning nt. Bill Gates käis kooli tagant prügikastist teiste programmeerijate minema visatud väljaprintide pealt vaatamas kuidas teised seda teevad.

Keskkondadest täpsemalt

Järgnevalt tutvustame kolme välja valitud versioonihalduskeskkonda täpsemalt. Vaatame mis põhjusel ja kelle poolt erinevad keskkonnad loodi. Millisteks on need keskkonnad praeguseks arenenud ning mis lisafunktsionaalsust pakuvad. Versioonihalduskeskkonnad on tulnud pika maa ning lisanud oma arsenali erinevaid lisafunktsioone alates turvalisust puudutavaid lisasi kui ka täiendavaid taristuga integreerimise võimalusi.

GitHub

GitHub Inc on USA-s asuv globaalne ettevõte, mille peamiseks tooteks on Git-il baseeruv tarkvara versioonihalduskeskkond GitHub [8]. (Kuigi sisuliselt võiks GitHubi kasutada mistahes tüüpi dokumentide versioonihalduseks, kasutatakse seda kõige laialdasemalt siiski tarkvara jaoks [9].) Git ise on käsureal põhinev tööriist, GitHub aga üks selle veebipõhine graafiline kasutajaliides, mis pakub mitmeid lisafunktsioone.

Ajalugu

GitHubi arendus algas 2007. aastal ning Chris Wanstrath, P. J. Hyett ja Tom Preston-Werner avalikustasid platformi 2008. aasta aprillis. Algselt tuntud kui Logical Awesome LLC [10], muudeti nimi selguse mõttes 2010. aastal GitHubiks [11]. Juba 2010. aastal jõudis GitHub 1 miljoni repositooriumini [12] ning 2018. aastal oli see arv juba üle 100 miljoni [13].

2007. aastal, kui töö GitHubi kallal algas, oli Git suhteliselt vähekasutatud versioonihaldussüsteem ning puudusid kommertsiaalsed Giti hostimisvõimalused. GitHub loodigi esialgu mõttega, et seda tühja kohta täita, ning lisati võimalused koodi muudatuste paremaks jälgimiseks. GitHub lihtsustas oluliselt avatud lähtekoodiga projektide arendamist ja koostööd, ning kasvas omaette kogukonnaks, mida on nimetatud ka arendajate "Facebookiks", aga piltide ja elusündmuste jagamise asemel postitavad inimesed projektide koode ning teised arendajad kommenteerivad, pakuvad välja uusi lahendusi ning täiendavad koodi vastavalt enda vajadustele. Brian Doll, GitHubi strateegia asepresident on öelnud:

„If you look at the top 100 sites, you’ve got a handful of social sites, thirty flavors of Google with national footprints, a lot of media outlets — and GitHub.“

Tänapäeval on GitHub koduks lugematutele avatud lähtekoodiga projektidele, muuhulgas kasutavad GitHubi ka Google, Facebook, Twitter ja Microsoft. [14]

Alates 2018. aastast on GitHub Microsofti filiaal [15] [16].

GitHubist lähemalt

GitHubi tarkvara arendati välja Ruby on Rails ja Erlangi baasil. Kolm peamist GitHubi funktsionaalsust on fork, pull request ja merge. Forking tähendab, et repositoorium kopeeritakse ühelt kasutajalt teise kasutaja repositooriumi. See tähendab, et kasutaja kellel enne ei olnud projekti kirjutamise õigust, saab seda enda kasutaja alt muuta, ning seejärel saata pull requesti originaalomanikule. Viimane saab seejärel soovi korral mergeida muutudes originaalrepositooriumi ühe nupuvajutusega.

Enne GitHubi oli kogu protsess avatud lähtekoodiga projektides palju keerulisem ja pikem: projekti lähtekoodi tuli muuta lokaalselt, kirjutada ise nimekiri muutustest (nimega patch) ja see tuli meiliga saata projekti omanikule, kes siis pidi muutused üle vaatama ja need ise sisse viima. GitHubis on igal inimesel profiil, kus on näha inimeste "reputatsioon", mis suureneb iga kord kui inimese pull request heaks kiidetakse. See võimaldab projekti autoril näha, kes tema projektile muudatusettepanekuid esitavad, nende "reputatsiooni" ja varasemaid projekte. Muudatusettepanekute üle saab ka avalikult arutleda. [17]

Lähtekood, litsents

GitHubi tarkvara on suletud lähtekoodiga. Enterprise serveri funktsionaalsusega on võimalik tutvuda lähemalt GitHub Enterprise veebilehel. [18]

Teenused

GitHub pakub laias laastus kolme paketitüüpi: tasuta versioon, Pro/Team versioon ja Enterprise. Kõikide pakettidega saab töötada piiramatu arvu inimestega piiramatu arvu avalike repositooriumitega, kasutades kõiki funktsionaalsusi, ning piiramatu arvu privaatsete repositooriumitega. Privaatsete repositooriumite võimalused on aga piiratud erineval määral. Näiteks GitHub Free for user accounts (tasuta versioon üksikkasutajale) lubab privaatsete repositooriumite korral töötada kuni kolme inimesega ühe projekti kallal. Github Pro ja Team maksavad 4$ kuus kasutaja kohta, ning Enterprise 21$ kuus kasutaja kohta. On olemas veel GitHub One, mis pakub veelgi lisavõimalusi Enterprise plaanile (Advanced Security, Insights, Learning Lab, and Premium Plus Support). [19] Erinevate pakettide võimalustega ja hindadega on võimalik lähemalt tutvuda GitHubi koduleheküljel. [20]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

GitHub keskendub peamiste funktsioonide töökindlusele ja kättesaadavusele, ning delegeerib lisavõimalused välistele platformidele nagu Travis ja Waffle (erinevate tööriistadega on võimalik tutvuda lähemalt siin: [21]). GitHubi konkurent GitLab pakub kindlasti rohkem integratsioonivõimalusi, kuid GitHubi peamiseks eeliseks on selle arvukas ja aktiivne kasutajaskond.

GitLab

GitLab Inc on USA's asuv tarkvaraettevõte, kelle peakorter asub San Franciscos. GitLab pakub tarkvaraarenduseks mõeldud erinevaid tööriistu ning pakettlahendusi, keskendudes peamiselt DevOps tarkvaraarenduse kultuurile omastele teenustele ja tootedele. [22]

Algusaastad

GitLab’i sünnihetkeks võib pidada 2011. aasta oktoobrikuud, mil GitLab’i esimene versioon päevavalgust nägi. GitLab’i loomisel kandis võtmeisiku rolli ukrainlane (inglise päraselt) Dmitriy Zaporozhets. GitLab kirjutati esialgu Ruby’s. Veidi ajas tagasi minnes võib lühidalt vaadata, millest ajendatult GitLab üldse loodi. Mõni aasta varem (2008) oli loodud GitHub, kellele GitLab on tänaseks üks peamisi konkurente. GitLab’i looja Dmitriy Zaporozhets’i töötas parajasti ettevõttes nimega Sphere Software, kus ta tihtipeale kasutas versioonihaldustööriistana GitHub’i. Probleem oli aga selles, et GitHub’i pakutavad teenused olid mõneti jäigad ning teisalt ka kallid. Dmitriy sõnul pidid nad töötama aegunud tööriistadega või ostma sisse kallihinnalisi tööriistasid, mis pärssisid nende tööd ega lasknud neil keskenduda oma põhilistele tööülesannetele. Hiljem on ta öelnud, et see oligi peamine ajend GitLab’i kui kvaliteetse ja taskukohasema tööriista loomiseks. [23]

Edulugu

Kuna GitLab oli esialgu siiski pigem hobiprojekt, mis ei toonud rahalist tulu, jätkas Dmitriy palgalist tööd, et tulla toime igapäevaste kulutustega. GitLab’i kasutajate arv kasvas ning teiste hulgas hakkas seda kasutama ka tema enda tööandja. Vaatamata mitmele katsele raha teenida, mh pakkudes tasulist support-teenust kui kogudes annetusi, ei osutunud need kuigi edukaks. Oluliseks muutuse tõi hollandlasest ettevõtja Sid Sibrangy, kel oli tekkinud huvi GitLab’i vastu ning soovis seda oma ettevõttes kasutada. Mõni aeg hiljem oli Dmitriy jõudnud oma elus etappi, kus ta soovis end täielikult pühendada GitLab’i arendamisse. Saatuse sümbolina pakkus Sid Sibrangy, et võtab ta palgaliselt tööle tingimusel, et Dmitriy aitab Sid’i tema ettevõttes. Nii läkski ja umbes aasta hiljem, 2014. aastal registreeriti GitLab ettevõttena, seejärel võeti tööle rohkem inimesi ning 2016. aastaks töötas ettevõttes juba ligi 100 inimest. Täna on GitLab’is tööl ca 1100 töötajat ning ettevõtte väärtus on hinnanguliselt 2,7 miljardit USA dollarit. Ajapikku on osa GitLab’ist ümber kirjutatud Go’s ja Vue.js’is. [24]

Litsents, lähtekoodi avalikkus

GitLab on saadaval nii tasuta kui tasulise versioonina. Community Edition on avatud lähtekoodiga ning omab (litsentsimaailmas võrdlemisi pehmet) MIT-litsentsi, mis teeb temast kasuliku, vabalt ning laialdaselt kasutatava tööriista. Samuti on saadaval tasuline Enterprise Edition, mis ei vasta kõigile avatud lähtekoodiga tarkvara tingimustele (kuigi kood on kätte saadav, mis lihtsustab trial-versiooni pakkumist) ning on mõeldud tasulise teenusena, sisaldades Community Edition’iga võrreldes enam tööriistu, tuge ning muid võimalusi.

GitLab’i dokumentatsiooni, lähtekoodi ning juhenditega on võimalik tutvuta GitLab’i koduleheküljel. [25]

GitLab teenused

GitLab pakub erinevaid teenuseid, mis on seotud tarkvara arendusega. Nende peamine toode või toodepakett on DevOps lifecycle, mis sisaldab erinevaid teenuseid alustades arenduse planeerimisest kuni toode lansseerimiseni – kõik saab teostada GitLab’i vahendusel. Kõige paremini iseloomustab GitLab’i teenuseid nende endi kodulehel paiknev kirjeldus:

„With GitLab, you get a complete CI/CD toolchain in a single application. One interface. One conversation. One permission model. Thousands of features. You'll be amazed at everything GitLab can do today. And we're just getting started.“ - GitLab.

GitLab pakub 30-päeva pikkust trial-perioodi täisversioonile, mille möödudes on võimalik edasi kasutada free-ligipääsuga teenuseid. Alternatiivina saab osta ka tasulisi teenuseid – Bronze, Silver ja Gold-paketid, vastavalt 4$, 19$ ja 99$-kuutasuga. Teenuste paketipõhise varieeruvusega on võimalik tutvuda GitLab'i koduleheküljel. [26] Samuti on GitLab aktiivne sotsiaalmeedias, omades kontot YouTube keskkonnas [27]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

GitLab on täna selgelt väiksem kui tema „suurem vend“ GitHub, kuid toodete, teenuste ja võimaluste osas on nad teinud suurepärast tööd. GitLab’i kasutajamugavus on kõrgel tasemel. Tema juurutamine ning integratsioonivõimalused on tõenäoliselt paremad, kui GitHub’il. Näiteks on GitLab’il väga põhjalik dokumentatsioon selle kohta, mil viisil on võimalik kolida konkurentidest – GitHub’ist või Bitbucketist – GitLab’i platvormile. Võrdluseks – GitHub nii põhjalikku dokumentatsiooni ei paku.

GitLab’i kasutajatel on võimalik kasutada paralleelselt või koosmõjus ka teisi tööriistu, mille sarnaseid GitLab küll pakub, aga klient ei soovi osta, nt agiilses arenduses kasutatav Jira. Lisaks loovad kasutajamugavust ning pakuvad suurepärast integratsioonivõimalust erinevate plugin’ite näol - näiteks Jetbrains’i toodetele.

Bitbucket

Bitbucket on Git’il põhinev lähtekoodide ja arendusprojektide repostitooriumite hoidla ja koostöö tegemise tööriist tiimidele. Bitbucket kuulub Atlassian Corporation Plc’le. Suureks eeliseks on see, et Bitbucket integreerub lihtsalt teiste Atlassian’i tarkvaradega nagu Jira, HipChat, Confluence ja Bamboo. Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.

Ajalugu

Bitbucket oli varem iseseisev startup, mille asutas Jesper Nøhr. 29. septembril 2010 ostis Bitbucketi’i ära Atlassian Corporation Plc. [28] Algselt pakkus Bitbucket ainult Mercurial’i versioonihaldustarkvara tuge. 2011 alustati ametlikult Giti versioonihaldustarkvara toetamist. [29] 2017. aasta veebruaris teatas Bitbucket, et jõudis oma platvormil 6 miljoni arendaja ja miljoni meeskonnani. [30] 2018. aasta aprillis teatas Atlassian, et Bitbucket jõudis 10 miljoni registreeritud kasutaja ja üle 28 miljoni koodihoidlani. [31]

Lähtekoodi avalikkus

Bitbucket Serveri lähtekood on avalik kõigile litsentsi omanikele.[32]

Teenused

Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center. Bitbucketi Cloud on kirjutatud Pythonis, kasutades Django veebiraamistikku. Bitbucket Cloud asub Atlassiani serverites ja sellele pääseb ligi URL-i kaudu. Bitbucket Cloud’il on sisseehitatud plugin’ad, mis võimaldavad lihtsalt oma koodi arendada, testida ja juurutada otse Bitbucket’ist. Bitbucket Server (endise nimega Stash [33]) on Java-s kirjutatud ja Apache Maveniga loodud Git-serveri ja veebiliidese kombinatsioonitoode. [34] See võimaldab kasutajatel teha Giti põhitoiminguid ning pakub integratsiooni ka teiste Atlassiani tööriistadega. Bitbucket Server on kommertstarkvara toode. See annab suurema privaatsuse koodi repsitooriumite üle, kui ettevõttel on võimalus koodi hoiustada enda serverites. Bitbucket Data Center näeb kasutajatele välja nagu üksik Bitbucket Serveri eksemplar, kuid seda on võimalik kasutada erinevate serverite pealt ning sellel on mõned lisaeelised Bitbucket Serveri ees.

Bitbucket Cloud’il on kolm hinnataset: Tasuta, Standard ja Premium. Tasuta paketi kasutajatel võib olla piiramatu hulk avalikke ja privaatseid hoidlaid. See, kui palju kasutajaid saab avalikke andmehoidlaid redigeerida / lugeda, pole piiratud, privaathoidlad on aga piiratud 5 kasutajaga, mida saab suurendada tasulise paketi valimisega. Standard ja Premium paketi hind kujuneb vastavalt privaathoidlate kasutajate arvule. Bitbucket on õpilastele ja õpetajatele tasuta, kui nad registreeruvad akadeemilise e-posti aadressiga. Teenus on tasuta ka avatud lähtekoodiga projektide jaoks, kui see vastab Atlassian’i poolt antud nõuetele. [35] Bitbucket Serveri ja Bitbucket Data Center’i puhul kujuneb hind samuti vastavalt kasutajate arvule kuid nende puhul tasuta versiooni pole. Akadeemilistele asutustele on Bitbucket Serveri litsents 50% soodustusega.[36]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

Bitbucket’i eelis on erinevate integreerimisvõimaluste rohkus ja sisseehitatud ühilduvus. Bitbucket integreerub lihtsasti teiste Atlassiani poolt pakutud tarkvaratoodetega nagu näiteks JIRA, HipChat ja Bamboo. Kasutajatel on ka võimalus kasutada Atlassiani Marketplace’i, et täiustada nii Bitbucket’it kui ka teisi kasutusel olevaid Atlassiani tooteid. Lisaks on Bitbucket’il ka paindlik hinnapoliitika. Teenuse kasutamise hind kujuneb töötajate arvu pealt ning see aitab ettevõttel märkimisväärselt kokku hoida võrreldes näiteks GitHubi teenuse ostmisega. Miinuseks võiks olla aga asjaolu, et kogukonna suuruse poolest jääb Bitbucket tugevalt alla turuliider GitHub’ile.[37]

Kokkuvõte

Iga tõsisema tarkvaraprojekti loomisel tuleb projekti koodi jagada erinevate arendajate vahel. Lisaks tuleb erinevate arendajate poolt loodud, muudetud, parandatud ja täiendatud koodi hallata ning erinevatel etappidel kokku koondada ühtselt töötavaks tarkvaraks. Seda aitavad kõige paremini korraldada erinevad versioonihaldussüsteemid, millest kõige populaarsemaks on kujunenud jagatud süsteemil (Distributed Version Control System - DVCS) [38] baseeruv Git [39] [40], mille kasutamisel on versioonihaldus keskkondadest valida kolme peamise vahel mida eelpool on tutvustatud: Github, Bitbucket või Gitlab. Selleks, et valida nii enda projekt kui ka projektiga tegeleva tiimi jaoks kõige parem lahendus on oluline aru saada nende keskkondade peamistest erinevustest ja sarnasustest.

Peamised võrdlusmomendid

Kuigi tänaseks päevaks võib suures pildis öelda, et kõik eeltutvustatud vesrsioonihaldus keskkonnad võimaldavad teha praktiliselt sarnaseid asju toome siinkohal siiski välja mõningad erinevused ja olulised kriteeriumid, mis võivad saada määravaks, et vastata küsimusele: "Millist versioonihaldus keskkonda ja millisel juhul oleks siis ikkagi mõtekas kasutada?". Sellele küsimusele vastamist tuleks alustada eelkõige sellest, et tuleks täpselt enda jaoks määratleda milline on projekti sisu mida hakatakse arendama ja millised on projekti tiimi varasemad oskused ning kogemused teatud versioonihaldus keskkonna kasutamisel. Projekti sisu kohapealt tuleks selgeks teha kas saab kasutada avalike repositooriumeid (millel puuduvad piirangud) või tuleb kasutada privaatseid repositooriumeid (millel on peal erinevad piirangud olenevalt keskkonnast). Samuti kui suure tiimiga on tegemist sest olenevalt keskkonnast tekkivad piirangud alates teatud tiimi suurusest ja tasuliste teenusepakettide lõppmaksumus oleneb tiimi liikmete arvust. Tiimi puhul on oluline arvestada ka nende varasemat kogemust erinevate keskkondade kasutamisel kuna uue keskkonna kasutamise selgeks tegemise õppimiskõver võib olla üsna ajamahukas ja seda tuleb arvestada projekti tähtaegadesse. Kui ikka 90% tiimi liikmetest on harjunud kasutama näiteks Bitbucketit siis oleks mõtekas kasutada seda ka arutluse all oleva projekti puhul, et vältida ajakulu õppimisele ja võimalike vigadega tegelemisele mis tulenevad oskamatusest keskkonda kasutada. Järgnevalt on välja toodud peamised erinevused kolme versioonihaldus keskkonna vahel kuid põhjalikuma analüüsi jaoks leiab täiendavat infot järgnevatelt linkidelt: [41], [42], [43], [44].

GitHub - Kõige esimene versioonihaldus keskkond mis on kõige suurema kasutajaskonnaga, kõige töökindlam aga samas ka kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace [45], mis pakub nii tasuta kui tasulisi lisafunktsionaalsuste laiendamise võimalusi. Kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) [46] kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim [47] aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.

GitLab - Loodud GitHubi analoogina kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind [48] ja võimalikult suur paindlikus keskkonda vastavalt enda ja projekti vajadustele kohanda just selliseks, et kõige paremini täita püstitatud eesmärke. GitLab Community Edition puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav [49] ja enda serverites kasutamise puhul ka vabalt muudetav vastavalt tekkivatele vajadustele. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLabi on võimalik installida kasutades isegi Dockeri image -id [50]. See nõuab loomilikult vastava know-how olemasolu ja kogu tiimi teadlikust eriversiooni kasutamisel. Ka GitLab -il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused kuid tunduvalt väiksemas mahus kui GitHubil ja Bitbucketil [51]. Kuid kuna tegemist on avatud lähtekoodiga tarkvaraga siis on täiendavate integratsioonide loomine tehtud kõigile vabalt võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised [52]. GitLab -i eeliseks võib pidada näiteks seda, et siin on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.

Bitbucket - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega mille autoriks on Atlassian Corporation nagu näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad siis on versioonihalduse keskkonnana kindlasti heaks valikuks just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldus tarkvaraga. Ka Bitbucketit on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel [53]. Bitbucketi funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace [54] kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucketi miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5 -e tiimi liikmega [55]. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu [56], [57].


Lõpetuseks

Nagu juba eespool mainitud siis suures osas võimaldavad eeltutvustatud versioonihaldus keskkonnad teha suhteliselt sarnaseid asju. Ei saa otseselt öelda, et üks keskkond on parem kui teine. Valikute langetamisel saavad määravaks pigem subjektiivsed faktorid, mis sõltuvad konkreetsest projektist ning selle vajadustest ja projektiga seotud tiimi suurusest ning nende oskuste ja kogemuste tasemest versioonihaldus keskkondadega töötamisel. Seega lõpetuseks toome siinkohal välja loetelu omavahel seoses olevatest faktoritest, millele võiks otsuseid langetades tähelepanu pöörata sobiva versioonihaldus keskkonna valimisel oma projektide jaoks:

1. Hind

2. Paindlikus ja kohandatavus

3. Integratsiooni võimalused teiste toetavate tarkvaradega

4. Kasutusmugavus, harjumused ja õppimiskõver (kogu projekti tiimi jaoks)

5. "Cloud" või "Self Hosted" versiooni kasutamine

6. Online kogukondade olemasolu ja suurused ning ametlikult pakutavad toetussüsteemid

7. Vajalike õpetuste ja online info olemasolu

Loodame, et meie lühikene versioonihaldus keskkondade tutvustus andis Sulle piisavalt infot ja vajalike lisaallikaid, et natukene paremini orienteeruda selles maailmas ning ennast kiiremini kurssi viia vajaliku infoga otsuste langetamiseks. Meeldivat teekonna jätku ja õigeid otsuseid soovides versioonihaldus keskondadega tutvumisel.