Kuidas luua avatud lÀhtekoodiga projekti

Kuidas luua avatud lĂ€htekoodiga projektiJuba sel nĂ€dalal toimub Peterburis IT-festival TechTrain. Üheks esinejaks on Richard Stallman. Embox osalleb samuti festivalil, ja loomulikult ei saanud me tĂ€helepanuta jĂ€tta avatud lĂ€htekoodiga teemat. SeetĂ”ttu kannab ĂŒks meie ettekannetest pealkirja “ÜliĂ”pilase projektist avatud allika projektini. Emboxi kogemus”. See keskendub Emboxi arengule avatud lĂ€htekoodiga projektina. Selles artiklis tahan rÀÀkida peamistest ideedest, mis minu arvates mĂ”jutavad avatud lĂ€htekoodiga projektide arengut. Artikkel, nagu ka ettekande, pĂ”hineb isiklikul kogemusel.

Alustame lihtsast, avatud lĂ€htekoodi mĂ”iste mÀÀratlemisest. Ilmselgelt on avatud lĂ€htekoodiga projekt projekt, millel on ĂŒks litsentsidest, mis vĂ”imaldab juurdepÀÀsu projekti lĂ€htekoodile. Lisaks tĂ€hendab avatud projekt, et kolmandad arendajad saavad teha muudatusi. TeisisĂ”nu, kui mĂ”ni ettevĂ”te vĂ”i arendaja avaldab oma toote koodi osaliselt vĂ”i tĂ€ielikult, ei tĂ€henda see veel, et see toode on avatud lĂ€htekoodiga projekt. LĂ”puks peab iga projekti tegevus viima mingi tulemuse saavutamiseni, ning projekti avatus tĂ€hendab, et seda tulemust kasutavad mitte ainult arendajad endid.

Avatud litsentside probleemide kĂ€sitlemisega ei hakka me tegelema. See on liiga suur ja keeruline teema, mis vajab sĂŒvitsi minekut. Selle teema kohta on kirjutatud palju hĂ€id artikleid ja materjale. Kuid kuna ma ei ole autoriĂ”iguse valdkonna spetsialist, ĂŒtlen vaid, et litsents peab vastama projekti eesmĂ€rkidele. NĂ€iteks ei olnud Emboxi valik BSD, mitte GPL litsentsi, juhuslik.

TegurĂ”igus, et avatud projekt peaks andma vĂ”imaluse muudatusi teha ja avatud projekti arengule mĂ”ju avaldada, eeldab, et projekt on jaotatud. Selle haldamine, terviklikkuse ja toimivuse sĂ€ilitamine on palju keerulisem kui tsentraliseeritud juhtimisega projektide puhul. Tekib Ă”igustatud kĂŒsimus, miks ĂŒldse avatud projekte teha. Vastus peitub Ă€riotstarbes: teatud tĂŒĂŒpi projektide puhul ĂŒletavad sellise lĂ€henemise kasud kulud. See tĂ€hendab, et mitte kĂ”ikidele projektidele sobib avatud lĂ€henemine ja see on ĂŒldse lubatud. NĂ€iteks on keeruline ette kujutada avatud pĂ”himĂ”ttel pĂ”hineva elektrijaama vĂ”i lennuki juhtimissĂŒsteemi arendamist. Loomulikult tuleks sarnastes sĂŒsteemides kaasata mooduleid avatud projektide alusel, kuna see toob kaasa mitmeid eeliseid. Kuid lĂ”pp-produkti eest peab keegi vastutama. Isegi kui sĂŒsteem pĂ”hineb tĂ€ielikult avatud projektide koodil, sulgeb arendaja, kui ta kĂ”ik ĂŒheks sĂŒsteemiks paketib ja konkreetsed kogumid ja seaded loob, selle tegelikult. Kood vĂ”ib samas olla avalikult kĂ€ttesaadav.

Nende sĂŒsteemide jaoks on samuti palju eeliseid avatud projektide loomisel vĂ”i nendes osalemisel. Nagu ma juba ĂŒtlesin, vĂ”ib lĂ”pp-sĂŒsteemi kood jÀÀda avalikuks. Miks, sest on selge, et tĂ”enĂ€oliselt ei leia keegi sama lennukit sĂŒsteemi testimiseks. See on tĂ”si, kuid kindlasti vĂ”ib leiduda keegi, kes soovib kontrollida teatud koodijuppe, vĂ”i nĂ€iteks vĂ”ib keegi avastada, et kasutatav teek ei ole tĂ€iesti korrektselt konfigureeritud.

Suurenev kasu ilmneb, kui ettevĂ”te eraldab osa sĂŒsteemist eraldi projektiks. NĂ€iteks andmevahetuse protokolli toe raamatukogu. Sellisel juhul, isegi kui protokoll on spetsiifiline konkreetse valdkonna jaoks, saab selle osa sĂŒsteemi sĂ€ilitamise kulusid jagada teiste valdkonna ettevĂ”tetega. Lisaks kulub spetsialistidele, kellel on vĂ”imalus tutvuda selle sĂŒsteemi osaga avatud juurdepÀÀsu kaudu, tĂ”husaks kasutamiseks oluliselt vĂ€hem aega. Ja lĂ”puks, osa eraldamine iseseisvaks entiteediks, mida kasutavad kolmandad arendajad, vĂ”imaldab selle osa kvaliteeti parandada, kuna tuleb pakkuda tĂ”husaid API-sid, luua dokumentatsioon, ma ei mainigi testimise katvuse parandamist.

EttevÔte vÔib kaubanduslikku kasu saada, luues mitte avatud projekte; piisab, kui tema spetsialistid osalevad ettevÔttes rakendatavates kolmanda osapoole projektides. Nimelt jÀÀvad kÔik eelised alles: töötajad tunnevad projekti paremini, seega kasutavad nad seda tÔhusamalt, ettevÔte saab mÔjutada projekti arendamise suundi ning valmis ja testitud koodi kasutamine vÀhendab selgelt ettevÔtte kulusid.

Avatud lÀhtekoodiga projektide loomise eelised ei piirdu sellega. Vaatame sellist olulist Àrikomponenti nagu turundus. Selle jaoks on see vÀga hea mÀnguvÀljak, mis vÔimaldab tÔhusalt hinnata turu nÔudmisi.

Ja muidugi, ei tohi unustada, et avatud lĂ€htekoodiga projekt on tĂ”hus viis end spetsialiseerumise kandjana tutvustada. MĂ”nel juhul on see ainus viis turule pÀÀsemiseks. NĂ€iteks alustas Embox operatsioonisĂŒsteemi loomise projektina. Ilmselt pole vajalik selgitada, et konkurente on hulganisti. Ilma kogukonna loomata ei oleks meil lihtsalt piisavalt ressursse projekti lĂ”pptarbijani viimiseks, st et projekti hakkaksid kasutama kolmandad arendajad.

Kogukond on avatud lĂ€htekoodiga projekti jooksul vĂ”tmetĂ€htsusega. See vĂ”imaldab oluliselt vĂ€hendada projekti halduskulusid, arendab ja toetab projekti. VĂ”ib öelda, et ilma kogukonnata ei eksisteeri avatud lĂ€htekoodiga projekti ĂŒldse.

Avatud koodiga projekti kogukonna loomise ja haldamise kohta on kirjutatud palju materjale. Et mitte korduda juba tuntud faktidega, pĂŒĂŒan keskenduda Emboxi kogemusele. NĂ€iteks on selle protsessi loomine vĂ€ga huvitav teema. Paljud rÀÀgivad, kuidas hallata juba olemasolevat kogukonda, kuid selle loomise hetked jÀÀvad sageli tĂ€helepanuta, kuna neid peetakse enesestmĂ”istetavaks.

Peamine reegel avatud lÀhtekoodiga projekti kogukonna loomisel on see, et mingeid reegleid ei ole. TÔesed universaalsed reeglid puuduvad, just nagu hÔbedast kuul. PÔhjuseks on see, et projektid on vÀga erinevad. On ebatÔenÀoline, et saab kasutada samu reegleid kogukonna loomisel nÀiteks JavaScripti logimisraamatukogu ja kitsalt spetsialiseeritud draiveri puhul. Veelgi enam, projekti (ja seega ka kogukonna) erinevatel arenguetappidel reeglid muutuvad.

Embox alustas ĂŒliĂ”pilasprojektina, kuna olid juurdepÀÀsud sĂŒsteemse programmeerimise osakonna ĂŒliĂ”pilastele. Sisuliselt astusime me teise kogukonda. Selle kogukonna liikmeid, ĂŒliĂ”pilasi, suutsime me huvitada korraliku tööstusliku praktikaga vastava eriala jĂ€rgi, teaduslike tööde ja kursuste ning diplomitega sĂŒsteemse programmeerimise alal. See tĂ€hendab, et tĂ€itsime ĂŒhte olulisemat reeglit kogukonna korraldamisel: kogukonna liikmed peavad midagi saama, ning see hind peab vastama osaluse sisule.

JÀrgmine etapp Emboxi jaoks oli vÀlistarbijate otsimine. On vÀga oluline mÔista, et kasutajad on avatud lÀhtekoodiga kogukonna tÀielikud liikmed. Kasutajaid on tavaliselt rohkem kui arendajaid. Ja et soovida saada projekti kaasautoriks, tuleb seda esmalt kuidagi kasutada.

Emboxi esimesed kasutajad olid Teoreetilise KĂŒberneetika osakond. Nad pakkusid vĂ€lja luua alternatiivse tarkvaraversiooni Lego Mindstormile. Ja kuigi need olid ikka veel kohalikud kasutajad (me vĂ”isime nendega isiklikult kohtuda ja arutada, mida nad soovivad), oli see siiski vĂ€ga hea kogemus. NĂ€iteks töötasime vĂ€lja demo, mida saime teistele nĂ€idata, kuna robotid on lĂ”busad ja köidavad tĂ€helepanu. LĂ”ppkokkuvĂ”ttes tekkisid meil tĂ”eliselt vĂ€list kasutajad, kes hakkasid kĂŒsima, mis on Embox ja kuidas seda kasutada.

Selles etapis pidime mĂ”tlema dokumentatsioonile ja suhtlemisvahenditele kasutajatega. Jah, me olime neid olulisi asju mĂ”elnud varem, kuid see oli liiga vara ja ei andnud positiivset mĂ”ju. Efekt oli pigem negatiivne. Toome vĂ€lja paar nĂ€idet. Kasutasime Googlecode'i, mille wikit toetas mitmekeelsus. Meie lehed olid mitmes keeles, sealhulgas mitte ainult inglise ja vene, millega suudaksime kuidagi suhelda, vaid ka saksa ja hispaania keeles. Tulemuseks nĂ€gi see vĂ€ga naljakas vĂ€lja, kui kĂŒsiti nendes keeltes, aga me ei suutnud ĂŒldse vastata. VĂ”i kehtestasime reegleid dokumentatsioonide kirjutamiseks ja kommentaaride jaoks, kuid kuna API muutus ĂŒsna sageli ja oluliselt, selgus, et meie dokumentatsioon oli aegunud ja segadusse ajav rohkem kui abistav.

LĂ”ppkokkuvĂ”ttes viisid kĂ”ik meie jĂ”upingutused, isegi mitte Ă”iged, selle tulemuseni, et tekkisid vĂ€list kasutajad. Ja isegi tekkis kommertstootja, kes soovis, et temale arendataks kohandatud OSRVi. Me arendasime seda, kuna meil oli kogemusi ja teatud eelteadmisi. Siin tuleb rÀÀkida nii headest kui halbadest momentidest. Alustan halbadest. Kuna paljusid arendajaid kaasati sellesse projekti Ă€ri alusel, oli juba niigi ebastabiilne kogukond jagunenud, mis ei saanud kindlasti olla edasise projekti arengu jaoks kasulik. TĂ€iendavaks teguriks oli see, et projekti suunda mÀÀras ĂŒks kommertstootja, kelle eesmĂ€rk ei olnud projekti edasine arendamine. VĂ€hemalt see eesmĂ€rk ei olnud peamine.

Teisest kĂŒljest oli mitmeid positiivseid aspekte. Saime tĂ”eliselt kolmandaid kasutajaid. Need ei olnud ainult kliendid, vaid ka need, kellele see sĂŒsteem oli mĂ”eldud. Osalemismotivatsioon projektis kasvas. Kui huvitava tegevuse juures on ka vĂ”imalik teenida, on see alati meeldiv. Ja mis peamine, kuulasime ĂŒht kliendi soov, mis tookord tundus meile jaburana, kuid mis on nĂŒĂŒd Emboxi peamine idee, nimelt kasutada sĂŒsteemis juba vĂ€lja töötatud koodi. TĂ€na on Emboxi pĂ”hiteema Linuxi tarkvara kasutamine ilma Linuxita. Siis oli peamine positiivne aspekt, mis aitas projekti edasist arengut, arusaamine, et projekti kasutavad kolmandad kasutajad ja see peab lahendama nende probleeme.

Tollal oli Embox juba ĂŒletanud ĂŒliĂ”pilasprojekti piire. Projekti arengu peamine pidurdustegur ĂŒliĂ”pilasmudeli kohaselt on osalejate motivatsioon. ÜliĂ”pilased osalevad seni, kuni nad Ă”pivad, ja kui nad lĂ”petavad, peab tekkima uus motivatsioon. Kui motivatsiooni ei teki, lĂ”petab ĂŒliĂ”pilane lihtsalt projekti osalemise. Kui arvestada, et ĂŒliĂ”pilasi tuleb esmalt koolitada, siis selgub, et nad saavad headeks spetsialistideks lĂ”petamise ajaks, kuid nende panus projekti, tĂ€nu kogemuse puudumisele, pole kuigi suur.

KokkuvĂ”ttes liigume sujuvalt pĂ”hiteema juurde, mis vĂ”imaldab rÀÀkida avatud koodiga projekti loomisest — toote loomine, mis lahendab selle kasutajate probleeme. Nagu ma juba eelnevalt selgitasin, on avatud koodiga projekti peamine omadus selle kogukond. Ja kogukonna liikmed on kĂ”igepealt kasutajad. Aga kust nad tulevad, kui neil pole millegagi kasutada? Nii on nagu mitte-avatud koodiga projektiga — tuleb keskenduda MVP (minimaalne elujĂ”uline toode) loomisele, ja kui see huvitab kasutajaid, siis tekib projekti ĂŒmber kogukond. Kui aga tegeleda kogukonna loomisega ainult lĂ€bi kogukonna reklaami, kirjutades vikipeedia igas maailma keeles vĂ”i Ă”igesti git workflow'ga githubis, siis kahtlemata ei oma see projekte algfaasis suurt tĂ€htsust. Muidugi, vastavatel etappidel on need mitte ainult olulised, vaid ka vajalikud asjad.

KokkuvÔtteks tahan tuua kommentaar, minu arvates peegeldab see kasutaja ootusi avatud lÀhtekoodiga projekti suhtes:

MĂ”tlen tĂ”siselt selle operatsioonisĂŒsteemi kasutusele vĂ”tmisest (vĂ€hemalt proovida. Seda arendatakse vĂ€ga aktiivselt ja sellel on palju lahedaid funktsioone).

P. S. Meil TechTrain on lausa kolm ettekannet. Üks avatud lĂ€htekoodiga ja kaks sisseehitatud (lisaks ĂŒks praktiline). Meie stendil viime lĂ€bi mikrocontrolleride programmeerimise meistriklassi, kasutades Embox. Traditsiooniliselt toome kaasa riistvara ja anname neid proovida programmeerida. Olemas on ka mĂ€ng ja teised tegevused. Tulge festivalile ja meie stendile, seal on lĂ”bus.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster