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 osalevad samuti festivalil ning loomulikult ei saanud me mööda vaadata avatud lĂ€htekoodiga tarkvara teemast. SeetĂ”ttu kannab ĂŒks meie ettekannetest nime “ÜliĂ”pilasprojektist avatud lĂ€htekoodiga projektina. Emboksi kogemus”. See keskendub Emboxi arengu ajaloole avatud lĂ€htekoodiga projektina. KĂ€esolevas artiklis tahan ma rÀÀkida peaideedest, mis minu arvates mĂ”jutavad avatud lĂ€htekoodiga projektide arengut. Artikkel, nagu ka ettekande, pĂ”hineb isiklikul kogemusel.

Alustame lihtsast: avatud lĂ€htekoodiga projekti mĂ”istest. On ilmselge, et avatud lĂ€htekoodiga projekt on projekt, mis on varustatud ĂŒhe sellise litsentsiga, mis vĂ”imaldab juurdepÀÀsu projekti allikale. Lisaks tĂ€hendab avatud projekt, et kolmandad arendajad saavad teha muudatusi. Seega, kui mĂ”ni ettevĂ”te vĂ”i arendaja avaldab oma toote koodi osaliselt vĂ”i tĂ€ielikult, ei muuda see veel seda toodet avatud lĂ€htekoodiga projektiks. Ja lĂ”puks, iga projekti tegevus peaks tooma mingisuguse tulemuse ning projekti avatus tĂ€hendab, et seda tulemust kasutavad mitte ainult arendajad.

Avatud litsentside probleeme ei puuduta. See on liiga suur ja keeruline teema, mis nĂ”uab sĂŒgavat arusaamist. Selle teema kohta on kirjutatud ĂŒsna palju hĂ€id artikleid ja materjale. Kuna ma ei ole Ă”iguste spetsialist, ĂŒtlen ainult, et litsents peab vastama projekti eesmĂ€rkidele. NĂ€iteks ei olnud Emboxi puhul BSD litsentsi valik juhuslik, mitte GPL litsents.

TĂ”siasi, et avatud projekt peab vĂ”imaldama muudatusi ja mĂ”jutama avatud projekti arengut, eeldab, et projekt on jaotatud. Selle haldamine, terviklikkuse ja töökindluse sĂ€ilitamine on palju keerulisem vĂ”rreldes keskjuhtimisega projektiga. Tekib mĂ”istlik kĂŒsimus, miks ĂŒldse teha avatud projekte. Vastus peitub Ă€rilises otstarbekuses: teatud klassi projektide puhul kaaluvad eelised sellisest lĂ€henemisest ĂŒles kulud. See tĂ€hendab, et mitte kĂ”ikide projektide jaoks ei sobi avatud lĂ€henemine ja see pole alati lubatud. NĂ€iteks on keeruline ette kujutada avatud pĂ”himĂ”ttel pĂ”hineva elektrijaama vĂ”i lennuki juhtimissĂŒsteemi arendamist. Jah, sellistesse sĂŒsteemidesse tuleks lisada mooduleid avatud projektide baasil, kuna see toob kaasa mitmeid eeliseid. Kuid keegi peab vastutama lĂ”pprodukti eest. Isegi kui sĂŒsteem pĂ”hineb tĂ€ielikult avatud projektide koodil, sulgeb arendaja, pakkides kĂ”ik ĂŒhte sĂŒsteemi ja tehes konkreetsed kogumid ja seadistused, selle sisuliselt. Kood vĂ”ib samas olla avalikus juurdepÀÀsus.

Nende sĂŒsteemide puhul on hulgaliselt eeliseid avatud projektide loomisest vĂ”i neis osalemisest. Nagu ma juba mainisin, vĂ”ib lĂ”pp-sĂŒsteemi kood jÀÀda avalikuks. Miks, kuna on ilmselge, et pigem on raske leida kedagi, kellel oleks sama lennuk, et sĂŒsteemi testida. See on tĂ”si, kuid keegi vĂ”ib siiski soovida kontrollida ĂŒksikuid koodijuppe, vĂ”i nĂ€iteks vĂ”ib keegi avastada, et kasutatav teek ei ole pĂ€ris Ă”igesti konfigureeritud.

Veel suurem kasu tuleb siis, kui ettevĂ”te eraldab sĂŒsteemi teatud pĂ”hisektor eraldi projektiks. NĂ€iteks andmevahetuse protokolli toetava teegi. Sellisel juhul, isegi kui protokoll on konkreetse valdkonna jaoks spetsiifiline, saab sellel sĂŒsteemi osal jagada kulusid teiste selle valdkonna ettevĂ”tetega. Lisaks vajavad spetsialistid, kes saavad avatud juurdepÀÀsu kaudu uurida selle sĂŒsteemi osa, selle tĂ”husaks kasutamiseks oluliselt vĂ€hem aega. LĂ”puks, osa eraldamine iseseisvaks ĂŒksuseks, mida kasutavad kolmandad arendajad, vĂ”imaldab selle osa kvaliteeti parandada, kuna on vajadus pakkuda tĂ”husat API-d, koostada dokumentatsioon ning ma ei hakka isegi rÀÀkima testimise katte suurendamisest.

ÄriettevĂ”te vĂ”ib teenida kasu ka ilma avatud projektide loomata, piisab, kui tema spetsialistid osalevad ettevĂ”ttes rakendatavates kolmandate osapoolte projektides. LĂ”ppude lĂ”puks jÀÀvad kĂ”ik eelised alles: töötajad tunnevad paremini projekti, mis tĂ€hendab, et nad kasutavad seda tĂ”husamalt, ettevĂ”te saab mĂ”jutada projekti arengusuunda, ja valmis testitud koodi kasutamine vĂ€hendab ilmselgelt ettevĂ”tte kulusid.

Avatud lÀhtekoodiga projektide loomise eelised ei piirdu sellega. VÔtame nÀiteks sellise olulise Àriosa nagu turundus. See on vÀga hea liivakast, mis vÔimaldab tÔhusalt hinnata turu nÔudmisi.

Ja loomulikult ei tohi unustada, et avatud lĂ€htekoodiga projekt on tĂ”hus viis enda erialasuse propageerimiseks. MĂ”nel juhul on see isegi ainus vĂ”imalus turule pÀÀseda. NĂ€iteks alustas Embox operatsioonisĂŒsteemi projekti loomisega. Ilmselt ei pea ma selgitama, et konkurente on kĂŒllaga. Ilma kogukonna loomata ei oleks meil lihtsalt ressursse projekti lĂ”puks kasutajani viimiseks, st et projektist hakkaksid kasu saama vĂ€lised arendajad.

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

Kuidas luua ja hallata avatud lĂ€htekoodiga projekti kogukonda on kirjutatud palju materjale. Et mitte korduda juba tuntud faktidega, pĂŒĂŒan keskenduda Emboxi kogemusele. NĂ€iteks on vĂ€ga huvitav kĂŒsimus kogukonna loomise protsess. Paljud rÀÀgivad, kuidas olemasolevat kogukonda hallata, kuid selle loomise hetked jĂ€etakse tihti tĂ€helepanuta, kuna neid peetakse iseenesestmĂ”istetavaks.

Peamine reegel avatud lÀhtekoodiga projekti kogukonna loomisel on see, et reegleid pole. Ma mÔtlen, et universaalseid reegleid ei eksisteeri, just nagu ei ole ka hÔbedast kuuli, vÀhemalt seetÔttu, et projektid on ÀÀrmiselt erinevad. TÔenÀoliselt ei saa sama reeglit kasutada nii nÀiteks JavaScripti logimisraamatukogu kogukonna loomisel kui ka kitsalt spetsialiseeritud draiveri loomisel. Veelgi enam, projekti (ja seega ka kogukonna) arengu erinevatel etappidel muutuvad reeglid.

Embox algas ĂŒliĂ”pilasprojektina, kuna meil oli juurdepÀÀs sĂŒsteemse programmeerimise osakonna ĂŒliĂ”pilastele. Tegelikult astusime me mingisse teise kogukonda. Me suutisime huvitada selle kogukonna liikmeid, ĂŒliĂ”pilasi, hea tööstushariduse ja teaduslike töödega sĂŒsteemses programmeerimises, kursuste ja lĂ”putöödega. TeisisĂ”nu jĂ€rgime me ĂŒht kogukonna korraldamise pĂ”hireeglit: kogukonna liikmed peavad saama midagi, samas peab see hind vastama liikme panusele.

Emboxi jÀrgmine etapp oli kolmandate osaliste kasutajate otsimine. On vÀga oluline mÔista, et kasutajad on tÀieÔiguslikud avatud lÀhtekoodiga kogukonna liikmed. Kasutajaid on tavaliselt rohkem kui arendajaid. Ja et soovida muutuda projekti kaasautoriks, tuleb esmalt mingil moel hakata seda kasutama.

Esimeste kasutajatena said Emboxi jaoks Teoreetilise KĂŒberneetika osakond. Nad pakkusid vĂ€lja luua alternatiivse tarkvara Lego Mindstormile. Ja kuigi need olid ikka veel kohalikud kasutajad (me saime nendega isiklikult kohtuda ja arutada, mida nad soovivad). See oli siiski vĂ€ga hea kogemus. NĂ€iteks arendasime demo, mida saime teistele nĂ€idata, sest robotid on lĂ”busad ja köidavad tĂ€helepanu. LĂ”puks meil olid tĂ”eliselt kolmandate osaliste kasutajad, kes hakkasid kĂŒsima, mis on Embox ja kuidas seda kasutada.

Selles etapis pidime mĂ”tlema dokumentatsioonile ja kommunikatsioonivahenditele kasutajatega. Jah, me muidugi mĂ”tlesime nendele olulistele asjadele ka varem, kuid see tundus toona enneaegne ja ei andnud positiivset efekti. Tulemuseks oli pigem negatiivne. Toon mĂ”ned nĂ€ited. Kasutasime googlecode'i, mille wiki toetas mitmekeelsust. Looime lehti mitmes keeles, mitte ainult inglise ja vene keeles, millega suutsime enam-vĂ€hem suhelda, vaid ka saksa ja hispaania keeles. Tulemuseks oli vĂ€ga kohatu olukord, kui keegi kĂŒsis nendes keeltes, aga meie ei saanud ĂŒldse vastata. VĂ”i kehtestasime reeglid, kuidas dokumentatsiooni kirjutada ja kommenteerida, kuid kuna API muutus sageli ja oluliselt, siis osutus, et meie dokumentatsioon muutus vananenuks ja eksitas rohkem kui aitas.

KokkuvĂ”ttes tĂ”id kĂ”ik meie pingutused, isegi need, mis ei olnud Ă”iged, kaasa vĂ€liste kasutajate tekkimise. Ilmus isegi Ă€rikliendiks hakkaja, kes soovis, et me arendaksime talle oma OSRVi. Me arendasime, kuna meil on kogemus ja mingid arengud. Siin tuleb rÀÀkida nii headest kui halbade asjadest. Alustan halbadega. Kuna paljusid arendajaid kaasati sellesse projekti Ă€rilistel alustel, oli kogukond ĂŒsna ebastabiilne, jagunedes, mis mĂ”jutamata ei saanud projekt arengu kĂ€iku. TĂ€iendavaks faktoriks oli see, et projekti suuna mÀÀras ĂŒks Ă€riline klient, kelle eesmĂ€rk ei olnud projekti edasine arendamine. KĂ”ige vĂ€hem oli see eesmĂ€rk peamine.

Teiselt poolt oli mitmeid positiivseid aspekte. Saime tĂ”eliselt vĂ€liseid kasutajaid. Need ei olnud mitte ainult tellijad, vaid ka need, kelle jaoks see sĂŒsteem oli mĂ”eldud. Motivatsioon osaleda projektis kasvas. LĂ”ppude lĂ”puks on alati tore, kui huvitava tegevuse juures on ka vĂ”imalus teenida. Ja mis peamine, kuulsime ĂŒhte tellijate soovi, mis tookord tundus meile absurdne, kuid mis nĂŒĂŒd on Emboxi peamine idee, nimelt kasutada sĂŒsteemis juba arendatud koodi. Praegu on Emboxi peamine idee kasutada Linuxi tarkvara ilma Linuxita. Seega oli peamine positiivne aspekt, mis toetas projekti edasist arengut, teadlikkus, et projekti kasutavad vĂ€lised kasutajad ja see peab lahendama nende probleeme.

Sel hetkel oli Embox juba ĂŒletanud tudengite projekti piirid. Projekti arengu peamine takistus tudengimudeli jĂ€rgi on osalejate motivatsioon. Tudengid osalevad seni, kuni nad Ă”pivad, ja kui nad lĂ”petavad, peab tulema uus motivatsioon. Kui motivatsiooni ei teki, lĂ”petab tudeng lihtsalt projekti eest koosolekutele tuleku. Kui arvestada, et tudengeid tuleb esmalt koolitada, selgub, et nad saavad headeks spetsialistideks lĂ”petamise ajaks, kuid nende panus projekti on alguses, tĂ€nu kogemuste puudumisele, ĂŒsna vĂ€ike.

Üldiselt liigume sujuvalt pĂ”hiteema juurde, mis vĂ”imaldab rÀÀkida avatud lĂ€htekoodiga projekti loomisest — toote loomine, mis lahendab kasutajate probleeme. Nagu ma juba eespool selgitasin, on avatud lĂ€htekoodiga projekti peamine omadus selle kogukond. Samuti on kogukonna liikmed eelkĂ”ige kasutajad. Kuid kust nad tulevad, kui pole midagi kasutamiseks? Nii ongi, et nagu mitte-avatud lĂ€htekoodiga projektiga, tuleb keskenduda MVP (minimaalselt elujĂ”ulise toote) loomisele, ja kui see huvitab kasutajaid, siis tekib projekti ĂŒmber kogukond. Kui aga tegeleda kogukonna loomisega ainult lĂ€bi PR-i, kirjutades vikipeediat kĂ”ikides maailma keeltes vĂ”i Ă”igesti korraldades git töövoogu GitHubis, siis on see varajastes etappides tĂ”enĂ€oliselt mĂ”ttetu. Loomulikult on hilisematel etappidel need asjad mitte ainult olulised, vaid ka vajalikud.

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

MĂ”tlen tĂ”siselt selle operatsioonisĂŒsteemi peale ĂŒleminekule (vĂ€hemalt proovima. Nad töötavad selle kallal tĂ”eliselt aktiivselt ja teevad Ă€gedaid asju).

P. S. Sa TechTrain Meil on lausa kolm ettekannet. Üks avatud allikast ja kaks sisseehitatud teemadest (sealjuures ĂŒks praktiline). Messil korraldame mikroprotsessorite programmeerimise töötoa Embox. Traditsiooniliselt toome kaasa riistvara ja laseme seda programmeerida. Ootame veel ka mĂ€ngu ja muid tegevusi. Tulge festivalile ja meie stendile, kindlasti lĂ€heb lĂ”busaks.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster