Keskiviikkona, 3.11.2021

Avoin lähdekoodi osana web-kehitystä

Avoin lähdekoodi on Dudelle elinehto. Julkaisemme asiakasprojekteja lukuunottamatta kaiken avoimena netissä. Lue alta miksi avoimen lähdekoodin periaatteista on pelkästään hyötyä.

Nyt seuraa hieman teknistä höttöä. Avoin lähdekoodi (engl. open source) tarkoittaa lyhyesti sitä, että koodia julkaistaan kaiken nähtävillä netissä, täysin avoimesti niin että riviäkään ei lukita tai suljeta tunnusten tai salasanojen taakse. Avoin lähdekoodi mahdollistaa muiden koodista oppimisen, yhdessä Internetin kanssakoodareiden kanssa kehittämisen ja myös todennäköisesti sinunkin verkkosivusi. Kyllä, maailman suosituin sisällönhallintajärjestelmä WordPress on myös avointa lähdekoodia, voit selata sen koodia vapaasti suoraan esimerkiksi GitHubissa.

Kirjoitin open sourcesta tänne Duden blogiin jo ensimmäisen kerran vuonna 2015 aiheella Avoimen ja sosiaalisen koodaamisen aikakausi. Maailma on jonkin verran muuttunut noista ajoista, esimerkiksi Dudella siirryimme jossain vaiheessa käytännön syistä Bitbucketista GitHubiin.

Dude on aidosti avoin GitHubissa

GitHubissa näkee harmillisen vähän suomalaisia digitoimistoja tai kehittäjiä, joilla on päivittäin päivittyviä dev-repoja. Allekirjoittanut on julkaissut GitHubissa noin kymmenen vuotta ja GitHub-profiilini alla onkin jo 169 avointa repositoriota. Julkaisen tavaraa meko matalalla kynnyksellä, koska altistan tahallani itseni, jotta mahdollisesti myös oppisin jotain koodini nähdessä päivänvalon. Usein koodareilla on täydellisyysharha, jossa kaiken pitää olla mintissä ennen kuin mitään voi julkaista. Olen koittanut karsia tällaista haitallista perfektionistista ajattelua, jotta saa joskus jotain uloskin.

Ote kontribuutioistani, eli osallistumisestani avoimen lähdekoodin projekteihin tilin ronilaukkarinen alla.

Koen että edellä mainitut muine epävarmuuksineen ovat isoimpia syitä miksi moni ei kehtaa julkaista avoimen lähdekoodin lisenssillä tuotoksiaan, vaikka avoimen lähdekoodin periaatteet ovat juuri päinvastaisia. Avoimen lähdekoodin ideana on nimittäin julkaista koodia muiden nähtäville, kehittyä, parannella koodia (parhaimmillaan muiden avustuksella), varmistaa jatkokehitettävyys jne.

Dudelle on ollut sen perustamisesta lähtien tärkeää avoimuus myös avoimen lähdekoodin saralla. Tämä on avattu auki myös yrityksemme manuaalissa kohdissa 1.1 Avoimuus ja 4.1 Git & open source, jossa lukee seuraavasti:

Kaikki minkaŐą voi, tulee julkaista open sourcena, avoimena taŐąysin julkisena Duden GitHub-tilin alla.

Dude Handbook: Git & open source

Tämä tarkoittaa sitä että julkaisemme avoimena

  1. Käytössämme olevat työkalut
  2. Tekemämme lisäosat (paitsi asiakkaalle räätälöidyt)
  3. Tekemämme firman sisäiset projektit (paitsi asiakasprojektit), kuten esimerkiksi tämä sivusto dude.fi
  4. Dokumentaatiot (kuten esimerkiksi Dude Handbook)

Tätä sääntöä olemme noudattaneet ja voimme ylpeästi todeta, että GitHub-tilimme alla on 55 julkista repositorya Рja lisää on tulossa koko ajan.

Duden GitHub-repot

Avoin lähdekoodi laittaa hyvän kiertämään

Avoimessa lähdekoodissa on aidosti toisten ajattelemisen periaate mukana. Vastakohtana voisi pitää suljettua softaa, johon ei pääse kuin tietty taho tai firma käsiksi lisenssimaksuja vastaan ja silloinkaan välttämättä koodia ei pysty suoraan näkemään ilman kikkailua.

Koska WordPress ja sen lisäosat ovat lähtökohtaisesti kaikki GPLv2:sta eli GNU Public Licensella lisensoituja, on järkeenkäypää että myös näillä toteutetut projektit ovat. Itse asiassa WordPress myös edellyttää, että kaikki heidän teemakirjastossaan tai lisäosakirjastossaan olevat julkaisut noudattavat samaa avointa lisenssiä.

Tuntuisi hieman irvokkaalta syödä koko kermakakku jakamatta palaakaan muille. Avoimen lähdekoodin lisenssillä tai avoimena GitHub-repona julkaiseminen kertoo suoraan siitä, miten arvostaa muita.

Täydellinen vapaus

Avoin lähdekoodi mahdollistaa koodin selaamisen, muokkaamisen, jatkokehittämisen, kommentoinnin vapaasti ilman rajoitteita.

Avoin lähdekoodi takaa jatkuvuuden

Kun k√§ytt√§jill√§ tulee koodiin paranteluja, he saattavat l√§hett√§√§ ”issueita” eli ilmoituksia bugeista tai ideoita uusista ominaisuuksista. Parhaimmillaan muut k√§ytt√§j√§t maailmalla saattavat l√§hte√§ jatkokehitt√§m√§√§n projektia suoraan l√§hett√§m√§ll√§ Pull Requestin.

Olemme saaneet kehitystä ulkopuolelta myös omiin projekteihimme, mainittavimpina mm. kanadalaisen kehittäjän Michael Bournen parantelut ja onpa koodiamme ehostanut jopa turkulainen joskus.

Issueita parempi tapa antaa takaisin on Pull Requestit. Pyrin päivittäisessä työssäni auttamaan pyyteittä ja tämä on siihen paras tapa. Isoimpina tekoina olen ottanut mm. haltuun kokonaisia repositoryja niiden kehittäjän lähtiessä muille maille. Näistä esimerkkeinä toimikoon tässä vaikkapa koodiparanteluja automaattisesti tekevä stylefmt-työkalu, Visual Studio Coden lisäosa vscode-stylefmt sekä uusimpana gulp-stylelint.

Avoimessa l√§hdekoodissa on my√∂s miinuspuolia, jotka tosin plussat korvaavat saman tien. Tyypillisin on tilanne, jossa ty√∂kalun, paketin tai softan ”maintainer” eli p√§√§asiallinen yll√§pit√§j√§ h√§vi√§√§ kuin tuhka tuuleen, eik√§ kukaan ole en√§√§ ottamassa k√§ytt√∂√∂n muiden paranteluja. K√§ytt√§j√§t l√§hett√§v√§t lis√§√§ korjauksia ja issueita, eik√§ huutoihin vastata ja repo t√§yttyy ”onko projekti en√§√§ elossa” tai ”voiko t√§m√§n nyt vaan merget√§” -issueista, kuten t√§ss√§ tai t√§ss√§. Jos projekti kuolee kasaan, joku aina synnytt√§√§ sitten uuden projektin. Itsell√§ni on pari aktiivista toiseen projektiin pohjautuvaa projektia (eli forkkia) juuri t√§st√§ syyst√§.

T√§rkeint√§ on, ett√§ kehitys jatkuu. Avoin l√§hdekoodi mahdollistaa jatkuvuuden t√§ydellisesti. Suljetussa projektissa kehitt√§jien l√§htiess√§ projekti saa niskalaukauksen, ellei konkurssin tehnyt yritys tai projektin mukanaan vienyt kehitt√§j√§ p√§√§t√§ julkaista projektia avoimena l√§hdekoodina ”hyv√§ntekev√§isyyteen” muiden k√§ytett√§v√§ksi. Harmillisen monesti n√§iss√§ tapauksissa koodi on kuitenkin jo ehtinyt vanhentua kun julkaisun kanssa on jahkailtu, ty√∂kalut ja riippuvuudet ovat p√§ivittyneet liian uusiin versioihin, eik√§ kukaan ole kehitt√§nyt projektia v√§liss√§ eteenp√§in. K√§ytt√∂√∂notto n√§iss√§ tilanteissa on silloin liian iso ty√∂ ja projekti j√§√§ l√§hinn√§ muistoksi aateekoo-intternettiin.

Duden suosituimmat avoimen lähdekoodin projektit

Suosituimpia projektejamme olemme listanneet Yhteisö & koodi -sivulla, mutta kaikista ajan tasaisimman listan näet kun selaat niitä suoraan GitHub-profiilistamme lajiteltuna tähtimäärän mukaan.

Air-light

Air-light (lyhyesti Air) on kruununjalokivemme, kehittäjille suunnattu WordPress-aloitusteemamme, johon kaikki projektimme pohjautuu. Huhupuheiden mukaan teemaa käyttää jotkin muutkin ja teema on listattu varteenotettavaksi vaihtoehdoksi ainakin viidessä alan verkkolehdessä.

Teemaa on kehitetty lähes päivittäin viiden vuoden ajan. Uusin versio julkaistiin eilen ja voit odottaa, että seuraava tulee ihan kohta. Emme yleensä hirveän pitkään hilloa asioita, jotka voi tehdä heti.

Airin perusperiaatteena on olla mahdollisimman kevyt (alle 20 KB), mutta silti sen verran kattava, että perustyylittelyjä ei tarvitse tehdä nollista. Teeman demo löytyy täältä ja koodi luonnollisesti GitHubista.

Air-light -teeman markkinointisivusto löytyy osoitteesta airwptheme.com.

Dudestack

Dudestack on käytännössä käyttämämme kehitysympäristö WordPress-lisäosa- ja -teemakehitykseen, siis ilman sitä palvelinta. Dudestack pohjautuu amerikkalaisen digitoimisto Rootsin bedrock stackiin, mutta on käytännössä tullut vuosien saatossa kauas heidän käyttämistä toimintaperiaatteistaan. Dudestack sisältää modernit tavat kehittää WordPressiä, mainituimpana

  1. Tietoturvallisempi dotenv tunnareiden ja avaimien hallintaan (perinteisesti nämä ovat WordPressissä wp-config.php -tiedostossa julkisessa hakemistossa, dudestack ohittaa wp-configin)
  2. Tuki kehitysympäristöille development, staging, production (perinteisessä WordPress-instanssissa näitä ei erotella)
  3. Mediakirjaston kuvat ovat media/ -kansion alla juuressa (perinteisesti hankalahko wp-content/uploads)
  4. Teemat, lisäosat ja kielitiedostot majailevat content-kansiossa (perinteisesti wp-content)
  5. WordPress tulee ainoastaan riippuvuutena, ei kiinteänä osana
  6. PHP-riippuvuuksia hallintaan composerin kautta
  7. Mukana muitakin moderneja työkaluja ympätty startissa mukaan, kuten aloituskomennot, npm, gem, capistrano, jne. (nämä löytyy meillä devpackages -repon alta)

MacOS LEMP setup

Macos-lemp-stack on Duden kehityspalvelin. Tämän saa pyörimään mille tahansa Macille ja tätä palvelinta käytämme Macbookeillamme. Tällä paketilla pystyt kehittämään WordPress-saitteja omalla koneellasi vaikka ilman nettiyhteyttä.

Sama setti toimii myös kokeellisena versiona Windows 10 alustalla. Jos haluat viritellä tämän käyttöön PC:lle, joudut hieman lueskelemaan ohjetta.

Avoin lähdekoodi on tulevaisuutta

Yhä useampi firma on siirtynyt pysyvästi avoimen lähdekoodin maailmaan. Hyvänä esimerkkinä tästä on esimerkiksi Microsoft, joka on pitkään tunnettu suljetusta softastaan. Viimeistään GitHubin oston myötä hekin ovat lähteneet julkaisemaan roppakaupalla open sourcea ihan Windows-ohjelmistosta lähtien, hyvinä esimerkkeinä mm. PowerToys ja VSCode.

Ei muuta kuin committeja sisään! Meillä meininki jatkuu avoimena jatkossakin.

Lue myös nämä

20 suomalaista digialan vaikuttajaa, joita kannattaa seurata Twitterissä

Fuel Digital listasi 11 seuraamisen arvoista Twitter-vaikuttajaa mutta jonkin verran on hämmästelty outoja nimiä sekä kyseenalaistettu miksi näitä henkilöitä pitäisi seurata. Myös minä olin listattuna ja totta kai otettu saamastani huomiosta.

Duden WordPress-teema Air esillä Speckyboy ja Hongkiat -verkkolehdissä

Dude on ollut alusta asti avoin firma niin tekniikan kuin yrityskulttuurinkin osalta. Teemakehitys lähti käyntiin vuonna 2013 projektinimellä dudestarter, mutta pahasti spagettiin mennyt paletti laitettiin uusiksi tammikuussa 2016 РWordPress-aloitusteema nimeltä air oli syntynyt (linkki teeman esikatseluversioon, linkki lähdekoodiin).

Avoimen ja sosiaalisen koodaamisen aikakausi

Ennen koodattiin yksin kopeissaan tai työpaikalla tiimeissä, nykyään voi koodata itsekseen, mutta silti sosiaalisesti netissä. Avoin lähdekoodi on mullistanut kehitystyön ja vaikka olisi fyysisesti yksin, voi silti koodata koko maailman kanssa.