Ste na svoju programátorsku prácu hrdí? Radi by ste sa o svoj kód podelili s ostatnými? Ak máte pocit, že z vašej dobre odvedenej práce by mohli ťažiť aj ostatní v komunite, sprístupnite svoje dielo ako otvorený software. Pomôžete tak ostatným, vybudujete si dobré meno a otvoríte si nové možnosti pri hľadaní práce.

V tomto článku nájdete niekoľko tipov, ako tvoriť moderný a pre komunitu ľahko prístupný open source. I keď v článku budem opisovať nástroje zo sveta PHP, tieto princípy sa dajú uplatniť v každom modernom programovacom jazyku.

Verejne dostupný verziovací systém

Už len zo samotnej definície toho, čo slobodný software vlastne je, mal by byť váš kód verejne dostupný. Môžete ho samozrejme dať len na svoju webovú stránku, no v posledných rokoch získal v tomto celkom dominantnú pozíciu github (ako centrálne úložisko slobodného software), nakoľko ponúka jednoduchý spôsob prispievania ostatných programátorov do vášho kódu, pomocou issues, forkov a merge requestov.

Github profil s kvalitnými projektami navyše začína byť niečím, na čo HR-isti hľadia čoraz viac a viac, ako píše naša kolegyňa Mirka z Inhiro.

Preferujte viac malých knižníc, než budovanie vlastného frameworku

Každý programátor si zažije obdobie, kedy chce vytvoriť vlastný, plne funkčný a možnosťami preplnený framework. To je ale beh na extra dlhé trate a tí, ktorí sa do toho reálne pustili už zistili, že lepšie je robiť viacero malých knižníc, ktoré si môžu koncoví programátori ľubovoľne kombinovať a vo výsledku vytvárať nekonečno vlastných kombinácií.

Navyše trendom začína byť práve opak, rozbíjanie veľkých monolitických frameworkov na malé, jednoúčelové knižnice, (napr. Symfony alebo Nette). V konečnom dôsledku to autora open source učí tvoriť samostatné funkčné celky s tou správnou mierou abstrakcie.

Využívanie balíčkovacích systémov

Drvivá väčšina dnes rozšírených programovacích jazykov má vlastný alebo komunitou vytvorený balíčkovací mechanizmus. V praxi ide o to, že do vašej knižnice pridáte zopár meta dát, ktoré obsahujú základné údaje o vašom balíčku (ako napr. názov, popis, …), no hlavne závislosti od iných knižníc a to, ako sa má váš kód funkčne integrovať do cudzieho prostredia. Vo výsledku tak cieľovému programátorovi stačí spustiť jeden jednoduchý príkaz a už môže vašu knižnicu využívať vo svojom codebase bez ďalších zbytočných starostí s integráciou.

Vo svete php je rozšírený composer, pri ktorom stačí, aby ste vo svojom repozitári zadefinovali composer.json súbor a následne po registrácií na packagist, prepojili svoj git repozitár s vytvoreným balíčkom.

Sémantické verziovanie

Nepriamou výhodou balíčkovacích systémov je to, že udržujú používaný open source kód aktuálny, samozrejme za predpokladu, že koncový programátor má o to snahu. Aby sa však nestávalo to, že najnovšia verzia nejakej knižnice rozbije funkčnosť vašej aplikácie, vznikla iniciatíva sémantického verziovania. Svoj open source kód tak vydávate vo verziách, kde každá je pomenovaná trojúrovňovým názvom x.y.z, pričom platí, že:

  • z sa zvyšuje vtedy, ak nová verzia len opravuje chyby, alebo pridáva len drobné zmeny.
  • y sa zvyšuje vtedy, ak nová verzia pridáva podstatné novinky, no zároveň je spätne kompatibilná s predošlou verziou. Zvýšenie y rady vynuluje z radu (napríklad 1.0.5 sa zmení na 1.1.0).
  • x sa zvyšuje vtedy, ak pridané zmeny pôsobia inkompatibilitu/nefunkčnosť v porovnaní s predošlou verziou. Zvýšenie x rady vynuluje y aj z radu (napríklad 1.2.8 sa zmení na 2.0.0).

Sémantické verziovanie pri php/composer kombinácií funguje jednoducho pomocou git tag-ov. Stačí ľubovoľný commit označiť tagom, napríklad v1.0.0 (alebo iba 1.0.0) a už ste urobili svoj prvé vydanie verzie. Viac informácií o tom, ako definovať závislosť na inej knižnici a jej povolených verziách nájdete priamo v dokumentácií composeru.

Unifikované formátovanie kódu

Každý programátor má samozrejme svoj spôsob písania kódu, no ak by sme všetci mali formátovať kód po svojom, čítanie cudzieho kódu by pre nás mohlo byť zakaždým neprirodzené. Preto vznikla PSR iniciatíva, ktorá sa snaží formátovanie zjednotiť a mnoho veľkých frameworkov ju už etablovalo. Odporúčam vám používať nástroj CodeSniffer, ktorý vám bez väčšej námahy, pomôže udržiavať kód správne naformátovaný.

Komentáre a dokumentácia

Jedným z hlavných princípov open source je to, že to nie je kód písaný pre stroje, ani pre autora, ale pre všetkých ostatných programátorov. Práve kvôli tomu by ste si mali dať záležať na spisovaní komentárov priamo v kóde. Hlavnou formou je tzv. phpdoc, teda polo technické komentáre opisujúce hlavnú funkcionalitu daných metód, očakávané vstupné argumenty a očakávaný výstup. V rámci samotnej metódy by už mnoho komentárov nemalo by,  ak máte potrebu nejakú časť kódu bližšie opísať, lepšou praktikou je osamostatniť daný kód do samostatnej metódy.

Samostatnou a ešte dôležitejšou časťou je dokumentácia v podobe README súboru a wiki. Väčšina programátorov, ktorí aj chcú používať váš kód, doň v skutočnosti nikdy nenahliadne. Niekedy písanie dokumentácie dá viac práce ako programovanie samotné, no výsledok určite stojí za to.

Pokrytie validnými testami

Pokiaľ chce niekto vo vašom kóde urobiť zmenu, nemal by mať (a ani vy) strach z toho, že táto zmena spôsobí nefunkčnosť na inom mieste. Práve na to slúžia testy. Tých je viacero druhov, no pri open source sú najviac využívané tzv. unit testy. V praxi tak svoj kód rozdelíte na malé celky (triedy a ich metódy), ktoré následne testujete štýlom “dostanem pri určitom vstupe očakávaný výsledok” alebo “dostanem pri určitom vstupe očakávanú chybu”. Vo svete php sú k tomuto účelu využívané phpunit a travis, ktorý používa väčšina php repozitárov.

 

Toto je zopár základných tipov, pomocou ktorých môžete začať budovať otvorený software a získať si rešpekt v komunite. Spôsobov pre zvýšenie renomé svojho repozitára existuje mnoho, no ak sme na niečo dôležité zabudli, budeme vďační, ak tento článok plynule doplníte v komentároch.

[mc4wp_form]

Komentáre