Abstraktionerne stiger, vi kommer længere og længere væk fra hardwaren. Jeg sidder og skriver denne post i et miljø der benytter sig af et script-sprog der er eksekveret af en motor der så bliver eksekveret i et lettere virtualiseret miljø af et operativsystem der oven i købet bliver afviklet virtuelt af et andet operativsystem.
Der er åbenlyse ulemper; det bliver stadig sværere at resonere over hvilken ydelse vi præcist kan forvente eller hvor vi skal sætte ind for at forbedre den. Til gengæld bliver vores eksekveringsplatforme stadig smartere med funktioner som just-in-time kompilering, eksekveringsoptimeringer, garbagecollection osv.
På mange andre punkter bliver eksekveringsplatformene også stadig bedre – hvor det engang ikke var givet at platformen stillede redskaber til menneskelig interaktion til rådighed kan man i dag forvente hele økosystemer.
Vi kommer ikke uden om de mobile platforme. I dag starter de fleste applikationsoplevelser der, og måske kommer de ikke videre.
Da Apple oprindelig annoncerede iOS var der kun én måde at afvikle 3. parts programmer; via web. Idéen var god og, typisk Steve Jobs, fremsynet. Men teknologien var før sin tid – web-teknologierne var ikke modne nok til at kunne levere en oplevelse der kunne konkurrere med native applikationer. Ydermere var de indbyggede applikationer ikke begrænsede til samme sæt af API’er, så der var ingen dogfooding.
Et godt andet forsøg på denne tilgang til applikationsudvikling er Firefox OS – men denne gang er tiden med, teknologierne er på plads, og alt det medfølgende software på en FOS-telefon er skrevet i HTML, JavaScript og CSS.
Ydermere er iOS kommet med igen, denne gang i form af en wrapper (Phonegap) der gør at man kan pakke en web-app ind i en container der dermed fremstår som en native app. Med i Phonegap-pakken kommer også et bibliotek (Cordova) der gør udvikling mere ensartet på tværs af platformene Android, Blackberry, iOS, Windows Phone, Windows 8 og Tizen.
Phonegap is great for small conference apps or internal tools, but overall it just isn’t there yet.
Tim Bray, GOTO Århus 2014
Det virker dog stadig som om at de mobile platforme handler om native udvikling – facebook forsøgte sig i 2012 med at levere deres mobilapplikation som en HTML5 applikation – med en, sikkert egenudviklet, native wrapper. Fejlede, og forsøget endte med at blive et af nejsigernes fortrukne våben.
The native mobile SDK’s are really, really good.
Tim Bray, GOTO Århus 2014
Jeg har selv været web-udvikler siden 2001 og har i den tid set hvordan teknologier er blomstret op, levet et stykke tid – for derefter at dø igen. Fælles for disse teknologier er at de alle har været proprietære, mere eller mindre closed-source og sjældent særligt standardiserede. Eksempelvis med Java Applets; der var afviklingskompabilitet på tværs af mange platforme, men der har aldrig været et ordentlig fælles, standardiseret grænsfladeparadigme. Vi skal ikke ret langt for finde de problemer det har givet. NemID’s Java Applet til login hvor folk forventer at de kan begynde at skrive fordi at markøren står i feltet til brugernavn og blinker – det kan man bare ikke for vinduet skal først gøres aktivt med musen.
Andre eksempler er Adobe Flash, Microsoft Silverlight og Java MIDlet‘s der alle er bygget til at levere rige grænseflader på tværs af enheder, men pga. lukkethed og mangel på standarder har lidt en stille død.
Vil native apps og tilhørende teknologier dø?
Hvis man kigger på statistikken er der ikke noget der tyder på det ikke kommer til at ske, i juni rundede Apples appstore 1.2 mio apps. Og selvom dette tal, ifølge Ryan Salva på GOTO indeholder ca. 6% Phonegap baserede applikationer, er det stadig 100% udgivet på Apple’s vilkår.
Det tyder på at der kommer til at gå noget tid før at vi kommer videre. Udviklingsmiljøerne til de native mobile platforme vinder pt. fordi at de er nye og specialiserede. De giver præcist den oplevelse der skal til for at få en mobil app til at køre godt. Men hvad sker der når fragmenteringen stiger på disse platforme – hvad hvis den næste app skal køre på en brille eller på et armbåndsur? Kan vi forvente at én vendor kan blive ved med at lave alle disse devices godt?
I want an Internet where people can write beautiful software without asking anyone permission.
Tim Bray, GOTO Århus 2014
Tim Bray beskrev problemet med nutidens webudvikling som den tidlige evolution. Web-platformen er ved at finde sig selv, nye frameworks opstår nærmest dagligt, og dør ofte igen. Nogle få teknlogier og frameworks er så evolutionære stærke at de får lov at overleve og gøre platformen bedre og nemmere at arbejde med i fremtiden.
Things aren’t really that good to be brutally honest in the mobile web development world.
Tim Bray, GOTO Århus 2014
Der er andre problemer – det der er en af web-udviklings store styrker er også en af dens store svagheder – standardisering. Der går lang tid fra idéen om at give webapplikationer lov til kunne hente video via et web cam opstår til den rent faktisk findes på alle aktuelle platforme.
Med web som platform har vi frihed til at gøre som vi vil. Når det kommer til interaktion er der standarder på plads til at give brugerne en ensartet oplevelse på tværs af producenter og devices. I fremtiden vil der kun være endnu flere devices som vi skal nå – det bliver ikke ved med at gå at skulle starte forfra hver gang. En dag vil vi opfatte brugen af native apps som en smule akavet, lidt som det med Java Applets i dag. Og vi vil som bruger kræve at vi kan interagere, udveksle data, og linke på en standardiseret måde uden at skulle sætte os ind i hver producents egne paradigmer.