Firefox 3.6: Letvægtstemaer

Af Jesper Kristensen, 04-12-2009 23:06

Frem til udgivelsen af Firefox 3.6 vil jeg gerne skrive lidt om nyhederne i den her på bloggen. Jeg vil starte med de nye Personas eller letvægtstemaer. Nu er det jo altid farligt at love, at der kommer mere om andre nyheder senere, men jeg tager chancen. :)

Tilføjelser (udvidelser og temaer) har altid været et centralt element i Firefox, og er et område som ingen andre browsere har formået at matche endnu. Tilføjelser er en stor del af det, der gør Firefox til hvad den er.

Men Internet Explorer har jo også tilføjelser, og Google Chrome er i gang med at udvikle understøttelse af tilføjelser i form af både udvidelser og temaer. Så hvad er forskellen, og hvordan er tilføjelser til Firefox nødt til at udvikle sig for at følge med?

Igennem det sidste års tid er man i Mozilla begyndt at snakke en del om letvægtstilføjelser til Firefox, og udviklingen er godt på vej. De kendte tilføjelser til Firefox kan bogstaveligt talt alt med Firefox. Uanset hvilken dybt mystisk funktion Firefox indeholder, så kan en tilføjelse altid lave om på den som den lyster, eller en tilføjelse kan tilføje nye funktioner hvor som helst i browservinduet. Men der er også begrænsninger. Da tilføjelserne ofte integrerer meget dybt med de interne dele af Firefox for at opnå hvad de vil, skal mange af dem opdateres for hver ny udgivelse af Firefox, og denne opdateringsproces er en stor hovedpine ved hver ny version. At lave en tilføjelse kræver også stort kendskab til Firefox' virkemåde og teknologier brugt internt som fx XUL og XPCOM. Det gør det svært for udviklere, der ikke er vant til Mozillaplatformen, at lave tilføjelser til Firefox.

Udvikling af tilføjelser til Firefox kan altså opsummeres som: Svært at lære, tager lang tid at lave, men alt er muligt.

Letvægtstilføjelser, som består af letvægtsudvidelser i form af JetPacks og letvægtstemaer i form af Personas, har til hensigt at komplementere (ikke erstatte!) de velkendte tilføjelser til Firefox, ved at gøre det langt lettere at lære at lave dem, og gøre udviklingen af dem langt hurtigere, samtidigt med at der gives køb på så få af mulighederne som muligt.

Kigger vi på letvægtsudvidelserne, de såkaldte JetPacks, vil de i stedet for at bruge XUL, CSS, JavaScript og XPCOM, bruge ganske almindeligt HTML, CSS og JavaScript, som enhver webudvikler kender. Der vil blive lavet en masse brugervenlige API'er til JetPacks, som ikke kræver den samme store kendskab til de interne dele af Firefoxkoden. En begyndelse til disse API'er findes allerede i JetPack-udvidelsen idag. API'erne vil være stabile mellem Firefoxversioner, så der vil ikke blive de samme problemer med kompatibilitet ved hver opdatering af Firefox, som normale udvidelser har. JetPacks vil også køre med færre rettigheder, hvor almindelige udvidelser kører med samme rettigheder på den lokale computer, som brugeren der kører Firefox. Det skulle forhåbentligt give mere sikre og mere stabile udvidelser.

Men det er alt sammen meget godt. Hvad er så ulempen? Jo, for at opnå disse fordele er man nødt til at begrænse handlefriheden af JetPacks til de API'er, som Firefox stiller til rådighed. Det betyder at JetPacks ikke har helt de samme muligheder som de gode gamle udvidelser.

Men er det nu også et minus? Er der overhovedet noget letvægts over letvægtsudvidelser? Overhovedet ikke. Den simplere udvikling giver udviklere, som ellers aldrig ville være sprunget ud i at lave udvidelser til Firefox, muligheden for rent faktisk at gøre noget, og det vil give en sand eksplosion i udvalget af udvidelser, som Firefoxbrugere har tilgængelige. JetPacks åbner hermed helt nye muligheder, som de nuværende udvidelser ikke kan give.

Det er målet at indlæring og udvikling af en JetPack skal tage ned til mellem 10 og 20 % af den tid det ville have taget at lave en tilsvarende tilføjelse som en almindelig udvidelse. Samtidigt skal 80 til 90 % af alle de eksisterende udvidelser kunne laves som JetPacks. Udvidelser som må undvære fordelene ved JetPacks er de helt tunge som fx Firebug, som nok altid vil kræve mere end hvad JetPack API'et vil kunne tilbyde.

JetPacks, som letvægtsudvidelserne i øjeblikket hedder, kommer ikke med i Firefox 3.6. Det er systemet langt fra færdigudviklet nok til. Til gengæld kommer letvægttemaer, Personas, med i Firefox 3.6.

Personas er temaer til Firefox, som består af to baggrundsbilleder og en tekstfarve: Et baggrundsbillede til browserens menu og værktøjslinjer, og et baggrundsbillede til statusbaren, samt en farve til teksten på menuerne. Se det er meget nemmere for en designer at lave end de hundredvis af ikoner, knapper, dialogbokse og CSS koder, som designere af de gammeldags temaer skal lave for at have et færdigt tema.

Og hvis du ikke tror på min påstand om at JetPacks i Firefox vil få udvalget af udvidelser til at eksplodere, så se bare på Personas. På addons.mozilla.org er der lige nu 36.535 Personas til Firefox, mens der af de old-school temaer er 410 styks, og Firefox 3.6 med understøttelse af Personas er ikke engang udgivet i en færdig version endnu!

Til slut lige lidt om hvor det placerer Firefox i forhold til de andre browsere på markedet.

Kort sagt er udvidelser til Firefox svære at lave, men kan alt. Tilføjelser til Internet Explorer er ca. endnu sværere at lave, men kan i modsætning til Firefoxudvidelser ikke alt. IE's tilføjelser er begrænset til det API, som IE stiller til rådighed, lidt lige som det vil blive med JetPacks. IE udvidelser kræver kodning i C/C++, hvilket gør dem noget mere besværlige. Med hensyn til Google Chrome, er deres udvidelser og temaer ufatteligt lig JetPacks og Personas. Ikke bare hvad angår hvor nemme de er at lave og hvilke begrænsninger de har, men også måden de laves på med almindeligt HTML, CSS og JavaScript. Man skulle tro den ene havde kigget den anden over skulderen. Men selvom Chrome nu også får gode tilføjelser, så er der stadig lang udsigt til den slags tilføjelser, som Firefox understøtter i dag. Alle tilføjelser i Chrome vil være begrænsede til det givne API. Måden Firefox er skruet sammen på med XUL, CSS og JavaScript i stedet for C/C++ er hel unik og grunden til at tilføjelser til Firefox kan hvad de kan. Og det er der ingen browser der kan kopiere, med mindre de stort set skriver hele deres kode forfra fra bunden. Men de er da velkommen til at prøve.

Det blev så en alt for lang post, og den må stoppe nu. Håber du har fået lyst til at kaste dig ud i at udvikle din egen JetPack eller designe din egen Persona.