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ä.

Tämä kirjoitus saattaa sisältää vanhentunutta tietoa, sillä se on julkaistu yli 3 vuotta sitten.

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 minkä voi, tulee julkaista open sourcena, avoimena tä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ä