utvikling

Wikimedia velger Vue.js fremfor React når frontend-grense­snittet skal overhales

De tette båndene til Facebook er en ulempe, hevdes det.

Illustrasjonsfoto.
Illustrasjonsfoto.

Den ideelle organisasjonen Wikimedia Foundation har planer om en større frontend-oppgradering, og har nå valgt Javascript-rammeverket Vue.js når de nå skal modernisere brukergrensesnittet som brukes i blant annet Wikipedia. Det skriver The Register.

Beslutningen har ikke bare blitt mottatt med jubel, ettersom mange har ønsket seg React – det som for tiden er verdens mest populære frontend-rammeverk for Javascript. React er imidlertid laget av Facebook, og selv om Facebook allerede i 2017 endret lisensbetingelsene til en MIT-lisens, mener Wikimedia at det fortsatt er et problem at det er Facebook som står bak.

I dag bruker Wikipedia og andre nettsider fra Wikimedia ganske gammeldags teknologi til Mediawiki – plattformen som Wikimedia kjører på. De fleste elementene i brukergrensesnittet er bygget ved hjelp av PHP, i tillegg til jQuery og et egenutviklet rammeverk kalt OOJS og MobileFrontend, samt et UI-komponentbibliotek kalt OOUI.

Wikimedias Frontend Architecture Working Group (FAWG) publiserte i desember 2019 en RFC (Request For Comment) der de ba om innspill til valg av et moderne JS-rammeverk for Wikimedia.

Kun React og Vue.js med i siste runde

I RFC-en lister Wikimedia opp en rekke fordeler ved å gå over til et moderne JS-rammeverk. Blant annet er det en fordel å kunne bygge et brukergrensesnitt ved hjelp av deklarativ programmering fremfor imperativ. Med det menes at når man programmerer i et rammeverk som for eksempel React eller Vue.js, beskriver man hvordan grensesnittet skal se ut og hva det skal gjøre – fremfor å beskrive hvordan det skal bygges.

Muligheten til å dele opp koden i mindre komponenter som er lettere å håndtere, med det som på utviklerspråket kalles «separation of concerns» – altså at hver komponent er ansvarlig for bare én ting – fremheves også som en av fordelene med et moderne JS-rammeverk.

Blant kravene som ble stilt er også at UI-elementer som er laget i rammeverket skal være reaktive, som betyr at de oppdateres automatisk på skjermen ved endringer i tilstand (state) eller når en bruker legger inn data.

For at at rammeverk skal bli vurdert, må det også være åpen kildekode, ha stor utbredelse, og et stort og levende utviklerfellesskap. Og ytelsen må være god.

Det var til slutt bare to rammeverk som var med i innspurten; React og Vue.js. Rammeverk som Angular og Ember ble ikke ansett som fleksible nok til Wikimedias bruk, mens Svelte, Inferno og Preact hadde veldig god ytelse – men ikke stort nok utviklermiljø.

Derfor valgte de Vue.js

Wikimedia begrunner valget av Vue.js med at Vue.js har stor nok utbredelse, og et miljø som vokser såpass raskt at de regner det som et trygt valg. I tillegg mener de at rammeverket har enkelte fordeler når det gjelder fleksibilitet som gjør at det skiller seg fra React – i hvert fall innenfor deres bruksområde.

En av fordelene skal være at Vue.js har bedre støtte for å brukes uten Webpack, Babel og andre frontend-byggeverktøy. Vue.js gjør det også mulig å bygge løsninger med færre tredjeparts biblioteker (avhengigheter). Vue.js-biblioteket har for eksempel innebygget kraftige verktøy for animasjoner og overganger, mens man med React ville måttet legge inn dette som avhengigheter i prosjektet. Wikimedia ønsker å begrense denne typen avhengigheter så mye som mulig, av sikkerhetsmessige årsaker.

En annen viktig grunn som nevnes, er at utviklingen av Vue.js ikke ledes av én enkelt organisasjon med mål som avviker fra Wikimedias mål. Og da er det Facebook – selskapet bak React – de har i tankene.

React ble opprinnelig (i perioden 2014-2017) lisensiert på en måte som gjorde at mange åpen kildekode-baserte prosjekter ifølge Wikimedia vegret seg for å bruke det. Dette har imidlertid, som nevnt innledningsvis, endret seg – og Facebook endret i 2017 lisensbetingelsene til en MIT-lisens. Det innebærer at man i prinsippet står fritt til å gjøre hva man vil med kildekoden. Også Vue.js har MIT-lisens.

Problemet er ifølge Wikimedia at siden utviklingen av React drives fremover av Facebook, så vil rammeverket endre seg først og fremst for å tilpasses Facebooks behov. Det vil være mindre risiko for at retningen i utviklingen av Vue.js endrer seg plutselig, siden utviklingen ikke avhenger av ett enkelt stort og dominerende selskap.

Selv om enkelte argumenterte mot å velge Vue.js, og heller ønsket React, ble muligheten til å kommentere stengt onsdag 18. mars, og Wikimedia valgte å gå videre med Vue.js. Ifølge The Register har ikke alle slått seg til ro med dette, og ber om at avgjørelsen revurderes. Noen mener også at man bør benytte W3C-standarden Web Components i stedet. Du kan lese hele RFC-en, med kommentar, her.

Powered by Labrador CMS