Web on ottanut maailman haltuunsa hämmentävällä voimalla, mutta tarkemmin ajateltuna sen kehitysnopeus ei ole ollut erityisen vauhdikasta. Webin ikä on nimittäin huomattava, kohta 30 vuotta [SHO]. Sen teknologia on hyvinkin kypsää, mutta se ei kuitenkaan tarkoita sitä, etteikö uusi mullistus voisi horjuttaa sen asemaa, oikeastaan päinvastoin. Myös asennettavat sovellukset ovat tulleet takaisin varteenotettavaksi kilpailijaksi.
Muutokset saapuivat vähitellen
Web on mullistanut tietojärjestelmät etenkin siinä suhteessa että tavalliset ihmiset ovat alkaneet käyttämään tietojärjestelmiä huomattavissa määrin. Webin perustana olevat asiat ovat kuitenkin monelta osin vanhoja sekä jo monesti kokeiltuja asioita. Sun Microsystemsin motto oli jo 80-luvulla ”The network is the computer” eli vapaasti suomennettuna ”Tietoverkko on tietokone” ja yrityksessä oli jo silloin selvä visio verkottumisen hyödyistä ja vankka tarkoitus yhdistää tietokoneet ja niiden käyttäjät, tosin ei ehkä aivan samassa mittaluokassa kuin mitä web tuli olemaan. Hypertekstistä on ollut luonnosteluja jo 40-luvulta lähtien. Ajatuksena siis web ei ollut erityisen uusi idea, mutta koska ideat ovat ilmaisia, niin kaikki kunnia Berners-Leelle siitä että hän ideoinnin lisäksi rakensi webin.
Webin syntyessä 90-luvun alkupuolella sen käyttöliittymät olivat hyvin alkeellisia verrattuna muihin ratkaisuihin, mutta se oli riittävän hyvä alkaakseen viedä markkinaosuutta asennettavilta sovelluksilta. Logistisestihan web on ylivertainen, sillä jakelu on naurettavan helppoa, loppukäyttäjäasennusta ei tarvita ollenkaan tai se on vähintäänkin helppoa, selaimet auttavat paljon verkkoyhteyksien hallinnassa jne.
Web-ohjelmat olivat alussa kirjeenvaihdon kaltaisia eli niissä täytettiin lomake mikä lähetettiin palvelimelle ja sieltä tuli vastauksena listauksia, lomakkeita, dokumentteja yms. Vähitellen parannettiin tätä toiminnallisuutta, esim. lomakekenttiin täytettiin automaattisesti asioita sen mukaan, mitä käyttäjä oli tehnyt muualla (ns. Dynaaminen HTML). Pian saatiin aikaan yhteyksiä palvelimelle ilman että piti lähettää koko lomake, mikä taas mahdollisti sen, että käyttäjän syöttämät tiedot pysyivät sivulla vaikka palvelimelta haettiin lisää tietoa (ns. AJAX eli Asynchronic JavaScript and XML). Nykyään on jo oletus että sivustot ovat jatkuvassa yhteydessä palvelimeen, ja usein lomakkeita ei enää edes lähetetä alkuperäisellä tavalla. Nykytrendinä onkin tällaiset sovellukset joissa suurin osa prosessoinnista tapahtuu selaimessa ja palvelimelta haetaan tietoa niin ettei käyttäjä välttämättä edes huomaa sitä (ns. SPA, Single Page Application). Tässä ollaan menty takaisin 90-luvun tyyliseen rich client -kehitykseen sillä vaikka sovellusta ajetaan selaimessa, niin asiakaskoneella tapahtuu enemmän asioita kuin palvelinkoneella. Eroja asennettuihin sovelluksiin yleensäkin on jo hyvin hankala huomata, mutta toisaalta aika pitkään sitä eroa on jo kurottu umpeen.
Tietoturva on myös kehittynyt, esim. pankkiasiointiin käytetään verkkopankkia kivijalan sijaan, joko webin kautta tai asennettavalla sovelluksella. Webin tietoturvassa on kuitenkin edelleen ongelmia johtuen suurelta osin webin avoimuudesta ja joustavuudesta. Vaikka tietoturva kehittyy jatkuvasti, niin uudet ominaisuudet selaimissa ja uudet innovaatiot web-sovelluksissa luovat myös uusia tietoturva-aukkoja, joten tietoturvan kannalta kehityksen nettovoitto ei vaikuta suurelta, ainakaan 2000-luvun alun jälkeen.
Videoita on jaettu jo pitkään webin kautta ja alussa ne olivat laadultaan heikkoja. Tämä on tasaisesti parantunut yhteyksien nopeuksien, ohjelmistojen toimintakykyjen ja laitteiden tehojen kasvaessa. Äänitiedostoja jaettiin myös jo ajat sitten. Sekä videoissa että äänitiedostoissa jakamisen ja toistamisen käyttöliittymät ovat muuttuneet helppokäyttöisemmiksi ja palvelut ovat tehneet suurille massoille mahdollisuuksia jakaa niitä, mutta mullistavaa teknistä kehitystä ei kuitenkaan ole tapahtunut. Suurin kehitys näissä on kenties ollut se, että on luotu liiketoimintamalleja, joilla tekijänoikeudellista sisältöä voidaan jakaa.
Useita työkaluja on siirtynyt webiin ja jopa sellaisia joita ei voitu kuvitellakaan käytettäviksi selaimilla vielä viisitoista vuotta sitten. Sähköpostiohjelma, tiedostonhallinta, tekstinkäsittely, taulukkolaskenta ja musiikkisoitin mennä hujahtivat sinne ja jopa kuvankäsittelyohjelmia sekä videoeditointiohjelmia on ollut jo pitkään webissä. Käyttäjälle on tuonut runsaasti mielihyvää se ettei tarvitse asentaa mitään, vaan miltä tahansa ja kenen tahansa laitteelta pääsee palveluun ja tietojen jakaminen muille on helppoa.
Puhelimiin web tuli myös vähitellen. Alkuvaiheissa mobiiliselailu oli vielä alkeellista kun nokialaisen nuolinäppäimillä selailtiin hieman hankalasti linkkejä mutta kosketusnäytöllisten puhelinten myötä selaaminen onnistui jo paremmin ja näytöiltä alkoi jo nähdä useammankin lauseen kerralla. Puhelimille tehtiin erillisiä mobiilisivustoja, jotka ovat alkaneet ajan myötä muistuttamaan enemmän ja enemmän tavallisia sivustoja. 2010-luvun alussa alkoi olla normaalia että monia työhön liittyviä asioita pystyi tekemään suhteellisen järkevästi puhelimellaan reissun päältä web-sovelluksilla, esim. web-sovellusten ylläpitäminen on ollut mahdollista hätätilanteessa puhelimen kautta.
Yksi merkittävä kehityskulku on ollut webin soluttautuminen eri laitteisiin. Monet televisiot, pelikonsolit, älykellot, e-lukijat, kamerat ja monet muut laitteet omaavat selaimia, joilla voi saada yhteyksiä muuhun maailmaan. Reitittimet, valvontakamerat ja monet kodinkoneet pitävät usein sisällään web-palvelimia, joiden kautta niiden asetuksia voi muuttaa.
Selaimet kehittyvät jatkuvasti ja varsinkin viime vuosina vauhti on ollut nopeaa. Niihin on tullut tukea mm. paikkatiedolle, kiihtyvyysanturitiedolle, värinätoiminnoille ja jonkin verran jopa lisätylle ja virtuaalitodellisuudelle. Nykyisin puhelimen tärinää havaitsevan yksinkertaisen web-sovelluksen saa koodattua alle puolessa tunnissa, vaikka käyttäisi ohjelmoinnissa ja palvelinkoneena pelkkää samaista puhelinta.
Sovellusten kehittämisen muutostahti
Sovellusten kehittäjien kannalta web on ollut ensisijaisesti jakelullisesti mullistava, mutta työkalujen vähitellen siirtyessä webin kautta käytettäviksi on kehitystyökin muuttunut merkittävästi. Jossain vaiheessa oli vielä normaalia että yksityishenkilöillä ja organisaatioilla oli oikeita tietokoneita kotonaan, organisaation tiloissa tai konesaleissa joihin web-palvelimet olivat asennettuina. Suuntaus palveluna ostettaviin palvelimiin ja sittemmin virtuaalipalvelimiin on ollut kiihtyvä. Yhä suurempi osa palvelimella tapahtuvista asioista on saatu ostettua palveluna ja monet palvelut kuten Heroku yksinkertaistivat sovellusten asennuksen ja palvelinylläpidon äärimmäisen helpoksi. Vastaavia on tullut runsasti lisää, mm. Netlify, Vercel, Platform.sh, ja näiden yksinkertaisten palveluiden lisäksi ollaan siirrytty kohti suuria räätälöitäviä pilvialustoja kuten Googlen GCP, Amazonin AWS ja Microsoftin Azure, joista voi ottaa omaan palveluunsa satoja erilaisia komponentteja ja joilla voi tehdä hyvinkin monimutkaisia ratkaisuja.
Infran kannalta kehitys on nopeuttanut palvelujen ylläpitoa ja varsinkin mahdollistanut nopean resurssien lisäämisen tarpeen vaatiessa. Vuosikymmeniä sitten tarvittiin oikeita palvelinkoneita jotka piti asentaa käyttöjärjestelmineen, konfiguroida, asentaa sovellukset, kehitystyökalut ja valvontaohjelmistot yms. Tänä päivänä pienen sivuston saa pystytettyä varttitunnissa pilvipalveluun ja suuremmankin sovelluksen saa tuotantoon murto-osassa siitä ajasta mitä aikaisemmin.
Varsinaisen koodaamisen suhteen web on periaatteessa yksinkertainen alusta, mutta monessa suhteessa sen rajapinnat eivät ole olleet erityisen yksinkertaisia käyttää. Esimerkiksi JavaScriptin DOM-rajapinnalla kehittäminen oli webin ensimmäisen puoliskon aikana monille hyvin tuskaista, mutta nykyisin kehitys on suhteellisen helppoa. CSS on mahdollistanut todella joustavasti eri käyttöliittymien tekemistä, mutta vastapainona oppimiskynnys on siinä suurempi kuin mitä “vain” käyttöliittymäteknologiassa voisi kuvitella olevan.
Jotkut asiat voivat olla vaikeampia tehdä, esimerkiksi webissä käyttöliittymäelementtejä joudutaan tekemään monelta osin käsin ja monilla eri tavoilla. Vaikkapa painikkeen lisääminen ruudulle voi vaatia kymmeniä rivejä koodia jotta sille saadaan tietynlaiset tyylit, kun taas asennetussa ohjelmassa pari riviä voi riittää. Tällöin webissä kylläkin painikkeesta saadaan juuri sellainen kuin halutaan eli joustavuus on ollut myös webin vahvuus.
Erilaisia tapoja kehittää on nykyisin hyvin monenlaisia. Monet samat temput toimivat yhä kuin mitä oli 90-luvulla, mutta suurimmalta osin kehityksessä käytetään paljon erilaisia ohjelmistokehyksiä, kirjastoja ja valmiita komponentteja. Vaikkapa yksinkertaisen taulukkolaskentasovelluksen tekeminen webiin onnistuu nykyisin hyvin lyhyessä ajassa valmiita komponentteja käyttämällä. Kehittämiseen kuluva aika on laskenut huomattavasti hyvin hoidetuissa projekteissa, tosin joillekin työkalujen runsaus ja tarve käyttää kaikkea olemassaolevaa aiheuttaa liian monimutkaisia ja äärimmäisen kalliita toteutuksia. Tehokkaat työkalut tuovat mukanaan paljon vastuuta ja vaativat kykyä vastustaa kiusauksia.
Myös viestinnällinen ja työtä tukeva vaikutus kehitykseen on ollut mittava. Tehtävänhallinta-, projektinhallinta- ja dokumentaatio-ohjelmia alettiin käyttämään 90-luvun lopun liepeillä web-palveluina ja myöhemmin esimerkiksi sovelluksia tarkastavia ja testaavia palveluita alkoi olemaan saatavilla webin kautta. 2010-luvulla koodin versionhallintakin alkoi siirtymään web-palvelujen kautta käytettäväksi ja erilaisia kehitysprosesseja tuli mahdollisiksi, esim. pull/merge request-tyylinen kehitys, jossa yksi kehittäjä tekee järjestelmän kautta ehdotuksen että hänen eristyksessä tekemänsä muutokset liitetään koodipohjaan ja joku muu katselmoi muutokset ja hyväksyy tai hylkää ehdotuksen. Näistä näkökulmista web on muuttanut toimintaa niin, että tieto on nykyisin keskitetyssä paikassa ja on helposti saatavilla sen sijaan, että se vaatisi sovelluksien asennuksia ja ylläpitoa jokaisen koneille.
Asennettavien sovellusten paluu
Web tulee aina hieman jäljessä varsinaisten laitteiden omiin ohjelmointiympäristöihin verrattuna. Esimerkiksi uusia toiminnallisuuksia tai sensoridataa varten joudutaan odottamaan selainten ylläpitäjien rakentamaa tukea ja yleensä standardisointiakin. Web-sovellukset eivät välttämättä myöskään sulaudu laitteen käyttöjärjestelmään yhtä sulavasti kuin asennettavat ohjelmat ja jälkimmäiset mahdolliset suuremman tiedonkeruun käyttäjistä. Niissäkin toki voi olla taustalla joitain web-teknologioita, mutta web ei ole aivan niin oleellinen osa niitä eikä etenkään erottamaton.
Asennettavien sovellusten uutta nousua voi selittää myös se, että nykyisin ihmisillä on enenevissä määrin oma tehokas puhelin, joka on sekä korostetusti yksityinen laite että jatkuvasti mukana kulkeva, joten siihen jaksetaan asentaa sovelluksia. Tätä asennusrumbaa on välillä outoa katsella, sillä muistan vielä 2000-luvun alkupuolella valloilla olleen vahvan asenteen: ”Standalonea? Eihän kukaan enää tee sellaista!”.
Mobiililaitteisiin asennettavat ohjelmat ovat viime vuosina lisänneet markkinaosuuttaan eli tässäkin ollaan palattu tietyllä tavalla 90-luvun tapaan tehdä rich client-tyylisesti ohjelmia. Näinhän ne muotivillitykset menevät, kaikki tämä on tapahtunut jo aiemmin ja kaikki tämä tulee tapahtumaan uudelleen.
Web-sovelluksen ja asennettavan sovelluksen raja kuitenkin hämärtyy, sillä viime vuosina ns. Progressive Web Application-suuntaus, lyhennettynä PWA, on kasvattanut suosiotaan. Se käytännössä tarkoittaa web-sovellusta, mikä asennetaan kuten tavallinen ohjelma ja se myös näyttää sellaiselta. Sen taustalla on kuitenkin käytännössä kevyt selainprosessi, mikä näyttää samaa tai lähes samaa web-käyttöliittymää kuin selainkin näyttäisi.
Kilpailu jatkuu kireänä ja joidenkin vertailujen mukaan ihmiset käyttävät puhelimiin asennettujen sovellusten parissa enemmän aikaa kuin mobiiliselailuun. Jos asennettavat ohjelmat tulevat hallitsemaan, niin erotuksena 90-lukuun ne ovat kuitenkin voimakkaasti yhteydessä muihin käyttäjiin ja muihin palveluihin.
Milloin se mullistus tulee?
Web on kehittynyt todella paljon ja nykyisin selaimessa ajettavia pelejä tai virtuaalitodellisuusdemoja katsoessa 90-luvun web tuntuu äärimmäisen alkeelliselta. Mutta siitä on tosiaan kulunut todella pitkä aika, joten miten kehitys on ollut loppujen lopuksi näin vähäistä? Kehityksen kehittymisenhän pitäisi kehittyä. Sama aika kului siinä kun tietojärjestelmät kehittyivät 60-luvulta 90-luvulle ja silloin tapahtui esimerkiksi siirtyminen suurtietokoneista minitietokoneiden kautta mikrotietokoneisiin, Internetin syntyminen, relaatiotietokantojen maailmanvalloitus ja hiirivetoisten graafisten käyttöliittymien yleistyminen. Tietokoneiden käytön näkökulmasta sinä aikana oli enemmän mullistavia muutoksia kuin web-aikana, mutta tietysti jälkimmäisen sisällä uusia tietokoneen käyttäjiä on tullut huomattavasti enemmän lisää.
Peter Thiel kirjoitti Zero To One-kirjassaan[THI], että 70-luvulta lähtien läntisessä maailmassa kunnianhimoisia projekteja ei enää olla suunniteltu. Voiko olla että tällainen jatkumo on myös webin kehityksen taustalla, eli eteneminen tapahtuu enää vain pienin askelin? Vai tuleeko kohta mullistus aivan kuten se on tullut niin monille muille aikansa valtaapitäville järjestelmille?
On täysin mahdollista että yhtäkkiä tapahtuu jotain mitä kukaan ei odota, nykyisin tuntemamme järjestelmät laitetaan ylläpitoon ja uudet sovellukset tehdään aivan jonnekin muualle. Tähän asti vuosikymmenten ajan laitteet ovat pienentyneet ja niiden siirtäminen on tullut helpommaksi, joten voisi kuvitella että sama kehitys jatkuu. Webin syrjäyttävä mullistus voisi olla jokin puhe- ja äänikäyttöliittymä mikä olisi oikeasti kätevä. Kenties jokin tuntoaistin kautta toimiva liittymä? Tai jokin uusi läpimurto lisätyn todellisuuden teknologiassa kuten silmillä pidettävä laite, tosin sellainen mitä ihmiset suostuisivat käyttämään. Löisikö heijastava käyttöliittymä läpi, ehkäpä jopa hologrammina tai muuten kolmiulotteisena toteutettu? Yleistyvätkö kvanttitietokoneet tai keinoälyrobotit, mikä siirtäisi sovellukset aivan eri tasolle? Vai viekö yksi nykyisistä alustoista, esim. Facebook, niin suuren osan käyttäjistä, että sovelluksia aletaan kehittämään lähinnä sen päälle ja sen ehdoilla? Todennäköisesti alussa sillä ei saisi tehtyä läheskään kaikkea mitä nykyisillä käyttöliittymillä, mutta ehkä se ratkoisi sen verran joitain polttavia ongelmia niin hyvin, että sille kehitetään yhä enemmän ratkaisuja. Aivan kuten web aikoinaan.
Nykyinen tilanne tuntuu todella vakaalta, mutta se ei ole tae mistään, eikä rakentamisen vaikeus tai käytetty aika tai raha tarkoita pysyvyyttä. Jättiläisiä on kaatunut joka puolella, mm. IBM:n legendaarinen käyttöjärjestelmä S/360 maksoi nykyrahaksi muutettuna 40 miljardia dollaria[S36] ja oli aikanaan kyllä merkittävä järjestelmä, mutta sekin hävisi sittemmin.
Kehittäjän näkökulmasta huolettaa se, että kun mullistuksia tapahtuu, niin kehitystyökaluja ei ole käytössä läheskään siinä määrin kuin kypsän teknologian kanssa. Vuonna 1966, kyllä, 1966, oli jo olemassa visuaalisia vianselvitysmenetelmiä (debuggereita) jotka tekivät lähdekoodista vuokaavioita[STO]. Kehitysmenetelmät ovat monessa vaiheessa olleet hyvinkin kehittyneitä, mutta mullistusten myötä ne joudutaan rakentamaan uudelleen jotta ne toimisivat uuden teknologian kanssa. Web-kehittäminen oli erittäin alkeellista vielä 2000-luvun alussa ja nyt se on kehittynyt sellaiseen tilaan jossa 2000-luvun alussa olivat asennettavien ohjelmien kehittäjät. Voi olla, että kun suuri mullistus tulee, niin ensimmäiset vuodet kehittäminen on taas hidasta ja sovellukset heikkotasoisia.
Tuleeko webille käymään kuin niin monille muille tietojenkäsittelyn historian teknologioille, eli järkyttävä mullistus tulee puskista yhtäkkiä ja valtaa markkinat?
Sitä tuumaillessa voi käydä katsomassa mitä tänään web-sovelluksilla voi tehdä mm. näiltä sivustoilta:
Terminologiaa
- Web: web-selaimella HTTP-protokollaperheen kautta käytettävät HTML/JavaScript/CSS-sovellukset sekä niitä tuottavat ohjelmat
- Asennettava sovellus: työpöytäsovellus, desktop-ohjelma, standalone, natiivisovellus, puhelinappi, mobiiliapplikaatio
Lähteet
- [SHO] https://home.cern/science/computing/birth-web/short-history-web
- [THI] Thiel, Peter, 2014, Zero to One: Notes on Startups, or How to Build the Future, s68 “Indefinite Optimism”
- [S36] https://spectrum.ieee.org/tech-history/silicon-revolution/building-the-system360-mainframe-nearly-destroyed-ibm
- [STO] Stockman, Some Methods of Graphical Debugging, IBM Scientific Computing Symposium Man-Machine Communication 1966, s.57 https://archive.org/details/bitsavers_ibmproceedmputingSymposiumManMachineCommunication1_10784460/page/n77/mode/2up
Heikki Naski on viettänyt webin parissa aikaansa lähes koko sen olemassaolon ajan ja hän on kehittänyt web-sovelluksia 2000-luvun alusta lähtien. Toimeentulonsa hän hankkii freelance-ohjelmistokehittäjänä.