Intervju z našim razvijalcem Petrom, upraviteljem izdaje PHP 7.4

Peter, one of the release managers of PHP 7.4, working at his desk with elePHPant

Naš razvijalec Peter je eden od dveh upraviteljev prihajajoče izdaje PHP 7.4. V tem intervjuju nam je predstavil novosti nove verzije in odgovornosti upravitelja izdaje, na kratko pa je tudi opisal proces internega glasovanja v PHP skupnosti.

 

1. Kako in kdaj si se začel ukvarjati s programiranjem ter bolj natančno s PHP-jem?

S programiranjem sem se začel ukvarjati že v času faksa, vedno so me zanimali računalniki in programerske zadeve. S PHP-jem sem se srečal zelo kmalu, saj je bil zelo razširjen na razvijalski sceni, in hitro sem začel z njim delati spletne strani.

Takrat smo delali še v raznih začetnih sistemih in ogrodjih, npr. s sistemom Mambo (ki se je kasneje razcepil in postal Joomla!), potem pa smo prešli na odprtokodna ogrodja, tako da smo s PHP-jem začeli v času verzije 4. Potem sem se vedno bolj začel ukvarjati z njim - in zdaj sem tukaj.

Nato pa me je zelo pritegnila odprta koda, sploh zaradi vpliva GitHuba, ki je omogočil, da so se ljudje začeli povezovati na čisto drugem nivoju in posledično lažje sodelovali z drugimi razvijalci. GitHub je razširjen po celem svetu, tako da lahko ljudje s celega planeta pomagajo in prispevajo popravke; na tak način sem tudi jaz začel prispevati k veliko skupnostim, vključno s PHP-jem.

Vse to je bilo povsem samoiniciativno, vse me je zelo zanimalo; začel sem se ukvarjati z odprtokodnim PHP ogrodjem Symfony, ki je naredilo kar velik preskok v PHP-ju in znatno izboljšalo celoten ekosistem PHP-ja. Kasneje me je začel zanimati tudi specifično PHP, torej, jedro, kaj se dogaja v ozadju v PHP-ju, in tako sem tudi tam začel pomagati s popravki hroščev.

 

2. Kako si prišel do položaja upravitelja izdaje te verzije? Si se sam javil ali te je izbrala skupnost?

Ne, za ta položaj se nisem sam javil, temveč so me imenovali člani PHP skupnosti v internih glasovanjih. Mi je pa seveda všeč. Zdaj sem prvič v tej vlogi, tako da sem še čisto svež oz. “newbie”. Nekateri člani skupnosti mi tudi v šali pravijo “novinec”.

Projekt je zelo zahteven, obstajajo ustaljene ekipe, potrebuješ veliko znanja, če se želiš vključiti; poleg tega pa se moraš ujeti z ljudmi in z njihovim potekom dela. Ne ujamejo se vsi, večinoma je od tebe odvisno, koliko se uspeš prilagoditi ekipam oz. potekom dela. Ker pa gre za odprtokodno skupnost, ti vedno lahko kdo priskoči na pomoč. 

 

3. Kaj so naloge in odgovornosti upravitelja izdaje?

Gre za to, da na vsakih 14 dni sestaviš skupaj in zapakiraš pakete predrazličice in stabilne verzije PHP-ja. Pri vsaki izdaji je treba preveriti, če opravi vse teste in če so dnevniki sprememb posodobljeni ter zgenerirati določene datoteke, potrebne za nadaljnje prevajanje s strani končnih uporabnikov. Poleg tega je za vsako izdajo potrebno na dopisne sezname poslati objave o novi izdaji. Gre za zelo maratonsko zadevo, saj traja več let (vsaj tri leta za določeno vejo PHP različice).

Tukaj moram poudariti, da sem v bistvu eden izmed dveh upraviteljev te izdaje - drugi je Derick Rethans, avtor razširitve Xdebug, ki bolje pozna interno glasovanje PHP-ja. Ta teden sva imela prvi sestanek, kjer sva dorekla in uskladila najine poteke dela.

Je pa zelo stresna naloga, saj ljudje za delo na odprtokodnem projektu od tebe pričakujejo ogromno. Vse je odvisno od prostega časa, saj imajo večinoma vsi tudi vsakdanje življenje s službo in morajo posledično zelo dobro uskladiti svoj čas. Seveda pa skupnost pričakuje, da bo nova verzija izšla na točno določen datum, vse pa mora delati brez problemov, da lahko Drupal in drugi PHP projekti delujejo karseda brezhibno.

Vloga upravitelja izdaje torej zajema tako tehnični kot tudi bolj marketinški aspekt.

 

4. Ste naleteli na kakšne izzive oz. probleme pri razvoju te manjše verzije? Kaj pa pri razvoju verzije 8.0, ki pride naslednje leto?

Verzija 7.4 je manjša izdaja, manj pomembna in dokaj dolgočasna verzija, kar je dobro, saj bodo posodobitve s prejšnjih verzij PHP 7 zelo enostavne. Naslednja večja izdaja, PHP 8.0, bo bolj prelomna, vendar pa se še ne ve točno, katere funkcionalnosti bo imela, saj je zanjo načrtovanih tudi veliko stvari, ki jih skupnost še ne pozna dobro.

V PHP 7.4 pa je kar veliko novih stvari, npr. vključitev razširitve FFI (Foreign Function Interface) - čisto nova razširitev. FFI odpre nek nov, širši svet PHP-ju onkraj spletnega razvoja, npr. strojno učenje in podobno. Je pa še kar nekaj hroščev, tako da je zaenkrat še zelo eksperimentalna zadeva. Do izdaje PHP 8 pa bo sčasoma postala stabilna funkcionalnost.

Trenutni plan je, da bo prva alfa verzija PHP 7.4 izšla 13. junija. To še ne bo “feature freeze” verzija - ta je planirana za 23. julija. Do takrat imamo čas vključiti novosti, ne samo odpravljanje hroščev, temveč tudi dodatke novih funkcionalnosti. 

Tu pridejo v poštev RFC-ji (Requests for Changes/Comments oz. zahtevki za spremembe). RFC je poseben dokument za predlaganje sprememb v jeziku PHP.

RFC mora biti najprej nekaj časa v razpravi na dopisnem seznamu, nato pa gre za dva tedna v fazo glasovanja, če je prvotni odziv skupnosti obetaven. Manj kot dva tedna pred “feature freeze” izdajo torej ne moremo več pričakovati, da bo RFC izšel v tej verziji, v tem primeru v PHP 7.4., temveč bo potem kandidat za verzijo 8.0.

Sicer gre pri PHP-ju tu za uraden proces, še vedno pa lahko nekdo, ki je v projektu že zelo dolgo časa, na nek RFC da veto in ga tako zavrne. To se sicer zgodi zelo redko, se pa je zgodilo z enim od RFC-jev, ki so bili načrtovani za verzijo 7.4 (deprecation of short opening tags oz. opuščanje kratkih odprtih značk - “<?”); skupnost ni čisto zadovoljna s tem, ampak bomo videli, kako se bo obneslo. Še vedno bodo morda na voljo drugi načini za reševanje tega, npr. z drugačnim načinom opuščanja in s spremembami v prihodnosti.

 

5. Poleg stvari, ki so bile že omenjene, kakšne novosti lahko še pričakujemo naslednji mesec v PHP 7.4? Kaj pa naslednje leto v verziji 8.0?

Verzija 7.4 ima kar veliko novih funkcionalnosti; so tudi naštete tukaj. Nekatere spremembe malo podrejo združljivost za nazaj, kar pomeni, da je v določenih primerih treba dodelati kodo. Načeloma se to ne bi smelo dogajati pri manjših izdajah, temveč samo v večji izdaji. Vendar pa PHP občasno dovoljuje manjše prelome v združljivosti za nazaj, da lahko jezik napreduje. 

Poleg že omenjene razširitve FFI je zanimiva novost tudi preloading oz. prednalaganje. Tu gre za to, da se lahko PHP razrede oz. funkcije naloži neposredno v spomin. Ko program nato zaženeš, vse poteka hitreje kot s tradicionalnim pristopom avtomatskega nalaganja (autoloading). To je dokaj majhna, ampak hkrati pomembna lastnost, saj ima na dolgi rok potencial, da v nekaterih primerih nadomesti avtomatsko nalaganje. 

Novih lastnosti je ogromno, nekaj razširitev pa je bilo tudi odstranjenih, ker niso več ustrezno vzdrževane. Še ena velika zadeva je Typed Properties, zelo uporabno za objektno programiranje. 

Ena najbolj zanimivih funkcionalnosti v naslednji večji izdaji PHP 8.0 bo gotovo JIT - “just-in-time compiling”. Planirano je bilo, da se to vključi že v prihajajoči 7.4 verziji, vendar pa se je na podlagi glasovanja na RFC-ju določilo, da je še prezgodaj za izdajo te funkcionalnosti, saj je potrebno več časa za podrobno testiranje. Gre za precej drugačen koncept internega prevajanja PHP kode; v kombinaciji s prej omenjeno razširitvijo FFI omogoča res zanimive stvari, saj PHP-ju odpre nov svet možnosti izven zgolj spleta. 

 

6. Kaj pa tebi pomeni, da si bil s strani skupnosti izbran za upravitelja izdaje?

Zelo zanimiva vloga - nikoli še nisem bil v takšni vlogi, tako da je zanimivo tudi z vidika izkušenj, da vidim, kako potekajo odprtokodni projekti, in predvsem da lahko po najboljših močeh pomagam neposredno PHP-ju. 

Seveda sem vesel, da so me izbrali. V bistvu moram priznati, da so bili na začetku večinoma ostali bolj ponosni kot jaz, a sem hitro dojel, da gre za res veliko zadevo. Veliko dela je treba vložiti v to. Opravljati neko nalogo na točno določena obdobja v mesecu je zelo zelo zelo izčrpajoče; na srečo je veliko ljudi, ki znajo to zelo dobro delati, in torej lahko pomagajo oz. celo nadomeščajo. Nekdo, ki ima stvar v malem prstu, lahko vskoči, torej lahko na primer upravitelj izdaje 7.0 pomaga pri izdaji 7.2, če gre nekdo na dopust ali kaj podobnega. 

Nova verzija mora biti izdana, seveda pa se pojavljajo človeške napake, potrebno je veliko usklajevanja in dobre komunikacije, pa tudi, da se dobro razumeš z ostalimi, ki delajo na projektu - če se ne razumeš dobro, ne moreš učinkovito sodelovati.

 

7. Zdaj ko si prebil led, misliš, da te bo skupnost še kdaj imenovala za upravitelja izdaje, morda celo večje izdaje? Mogoče celo razmišljaš, da bi se sam javil?

Vsekakor bom po svojih močeh še naprej pomagal PHP-ju. Jaz njegov razvoj vidim bolj preko razširitev in PHP knjižnic, ki jih prispeva skupnost, ne toliko preko jedra. Po mojem mnenju je cela skupnost ključen del PHP-ja, da deluje, tako kot mora, in da bo tudi v prihodnosti uspešen programski jezik. 

Drugače pa naslednji teden v naših ljubljanskih pisarnah gostimo PHP meetup, kjer bom tudi predstavil zanimivo PHP temo, torej prihajajočo verzijo 7.4 - verjetno tega ni bilo težko uganiti, kajne? :) V bistvu bo kratka predstavitev novosti v PHP 7.4, kako posodobiti in kaj še lahko pričakujemo. Na kratko bom tudi razložil, kako prek internega glasovanja potekajo zadeve. Potrudili se bomo, da nekaj dobrega sestavimo. :)

 

Herd of elePHPants in Agiledrop offices