Åben HTML5 Video med WebM

maj 19th, 2010 af Jesper Kristensen med Comments Closed

Rygtebørsen har været i gang i lang tid siden Google købte On2, men i dag blev WebM endeligt annonceret. WebM består af:

  • Video-codec’et VP8, som Google fik da de købte On2, og som Google nu har givet helt frit.
  • Audio-codec’et Vorbis, som også er åbent og som allerede i dag er understøttet af fx Firefox 3.6.
  • Et container-formatet, som er et subsæt af formatet Matroska.

WebM vil blive understøttet i browserne Firefox, Opera og Google Chrome, samt i Flash-pluginnet. Desuden bliver alle YouTube videoer tilgængelig i WebM-formatet, og en række andre store spillere inden for video har meldt deres støtte til formatet.

Dette er en stor dag for åben og tilgængelig video på nettet, som frit kan produceres og afspilles af alle.

Præsentation: Planer for Firefox 4

maj 11th, 2010 af Jesper Kristensen med 1 Comment »

I går holdt Mike Beltzner, Mozillas Director of Firefox, en præsentation af planerne for den næste version af Firefox, kaldet Firefox 4.

Om de vigtigste mål for Firefox 4 skriver Beltzner:

  • Fast: making Firefox super-duper fast
  • Powerful: enabling new open, standard Web technologies (HTML5 and beyond!),
  • Empowering: putting users in full control of their browser, data, and Web experience.

Hele præsentationen kan ses i en browser, som understøtter åben video på adressen http://videos.mozilla.org/serv/air_mozilla/firefox4.ogg

Privatliv med :visited

april 3rd, 2010 af Jesper Kristensen med 1 Comment »

Du kender det godt: Lige siden internettets barndom har ubesøgte links været blå mens besøgte links har været lilla, med mindre hjemmesiden har valgt andre farver til at repræsentere forskellen. Fx på denne side er begge typer links blå, den ene er bare lidt mørkere end den anden. Det kan være meget praktisk, så man kan se hvor man allerede har været. Problemet er bare, at det kan hjemmesiderne også, som det fx kan ses på startpanic.com.

Dette har været kendt i meget lang tid. Problemet er at det er meget svært at løse uden enten at ødelægge eksisterende hjemmesider eller helt fjerne muligheden for at både du og hjemmesiden kan se om du har besøgt siden før. Den sidste af mulighederne findes allerede i Firefox i dag, men er ikke slået til som standard.

Farv ikke besøgte vs. ikke-besøgte sider

Siden Firefox 3.5 har du kunnet undgå problemet ved at gøre følgende:

  1. Skriv about:config i din adresselinje og tast Enter
  2. Find layout.css.visited_links_enabled og dobbeltklik på den, så værdien bliver false.

Det giver så problemet, at du heller ikke selv kan se hvilke sider du har besøgt eller ej.

Lyv over for hjemmesiden

En anden mulighed ville være at farve links som normalt, men lyve over for hjemmesiden, så den tror alle links er blå. Problemet er bare at hjemmesiden kan (lige som denne blog gør det) ændre på hvordan besøgte vs. ikke-besøgte links skal se ud ved hjælp af CSS-koderne :link og :visited. Den kan fx ændre størrelsen på linket, således at hele sidens layout rykker sig. Det giver problemer, heriblandt:

  • Det gør browseren langsommere og bruger mere hukommelse at vedligeholde to modeller af sidens udseende. En som den faktisk ser ud og en som den ville se ud hvis ingen links var besøgt.
  • Hvis siden tror den ser anderledes ud end den faktisk gør, kan det få siden til at gøre noget forkert så den slet ikke virker.

Mozillas løsning

Mozilla har som den første browser meldt ud, at de vil løse problemet og hvordan de vil gøre det. Løsningen er en mellemting af de to scenarier:

  • Tillad kun ændringer af farver i :visited. Alle andre ændringer ignoreres.
  • Lyv over for hjemmesiden, så den altid vil se farverne som hvis ingen links var besøgte.
  • Tillad kun visse elementer at ændre farve baseret på :visited.

Med denne løsning vil langt den største brug af :visited stadig virke samtidigt med at du stadig selv kan se hvilke links du har besøgt og ikke besøgt. Læs den fulde beskrivelse samt begrundelsen for netop denne løsning i Mozillas beskrivelse.

Er det slut med tilføjelser?

januar 11th, 2010 af Jesper Kristensen med Comments Closed

Der har i de seneste dage været en del diskussion om JetPack og Personas, som er to projekter, der har til formål at skabe et bedre alternativ til udvidelser og temaer til Firefox og andre Mozillaprogrammer. Begge projekter har samme formål på hver deres område (udvidelser vs. temaer). Formålene afhænger af hvem du spørger, men de er generelt:

  • Gør udvikling af tilføjelser til Firefox nemmere at lære, ved at bruge HTML i stedet for XUL og lave simplere API’er
  • Gør det hurtigere at udvikle tilføjelser, igen ved simplere API’er
  • Gør tilføjelser mere sikre, ved at køre dem mere isoleret og kun give dem adgang til sikre API’er
  • Gør det muligt at installere tilføjelser uden genstart af Firefox, igen ved kun at give dem adgang til API’er, som kan tages i brug uden genstart
  • Gør det muligt at lave tilføjelser, som automatisk er fremadkompatible og ikke skal opdateres for hver ny version af Firefox, ved kun at give dem adgang til API’er, som er stabile på tværs af Firefoxversioner
  • Sikre at disse API’er er nok til at 80-90% af de nuværende tilføjelser kan nøjes med dem

Diskussionen startede i en tråd i nyhedsgruppen mozilla.dev.apps.firefox, omhandlende at linket til at finde temaer i Firefox var fjernet til fordel for et link til de nye Personas. Diskussionen startede ud med temaer vs. Personas, men udvidelser vs. JetPack blev hurtigt draget ind i billedet. En blog post fra Mike Connor så ud til at beskrive planer om at fjerne understøttelse af eksisterende udvidelser og temaer til fordel for det nye reducerede system meget lig det i fx Google Chrome.

Det gav selvsagt en del røre, også blandt nøglepersoner i Mozillaverdenen, blandt andet fra Daniel Glazman, som beskrev hvordan den nuværende implementering af JetPack ikke just er noget at råbe hurra for. Han fortæller blandt andet hvordan to vindere i en nyligt afsluttet JetPack konkurrence viser, at JetPack langt fra er klar, og er på vej i en farlig kurs. Mange var hurtige til at slutte op om Daniels kommentar, heriblandt Mike Kaply, som beskriver hvordan Personas knap nok kan kaldes temaer, hvilket straks er mere alvorligt. Mens JetPack stadig ligger en del ude i fremtiden, så er Personas allerede en del af Firefox, og vil blive udgivet med Firefox 3.6, som allerede nu er i RC.

Heldigvis skrev Mike Beltzner et svar i den oprindelige nyhedsgruppetråd, som sagde at han på ingen måde havde til hensigt at fjerne de eksisterende muligheder for tilføjelser i øjeblikket. Det skal her siges Mike Connor og Mike Beltzner er de to hovedansvarlige for Firefox, og at disse to er uenige, er ikke unormalt. Heller ikke i offentlighede, da alt vedrørende Mozilla jo foregår i offentligheden.

Så tilføjelser til Firefox som vi kender dem skulle gerne være sikret, hvert fald lidt endnu.

I denne diskussion er en ting dog klart. Alle er enige om at JetPack og Personas som koncept er en god ide og er nødvendigt for Firefox for at tiltrække nye udviklere af tilføjelser, for at være på forkant med den nye konkurrence fra blandt andet Chrome, og for at udviklingen af Firefox kan gå hurtigere.

Der er ingen grund til at de 80% af udvidelser, der ikke berører Firefox’ inderste indre, skal slås med komplicerede strukturer internt i Firefox, der er ingen grund til at Firefox skal genstartes ved installation af selv den simpleste tilføjelse, og vi er nødt til at gøre noget radikalt for at tiltrække endnu flere udviklere der ikke kender platformen, på samme måde som Personas har tiltrukket hundreder gange flere designs selv før første udgivelsesdag, end de gamle temaer har tiltrukket gennem deres mangeårige levetid. Det er detaljerne i hvordan det skal gøres, der er vigtige her.

Vi må vente og se hvordan historien ender.

Firefox 3.6: Stabilitet og sikkerhed med plugins

december 15th, 2009 af Jesper Kristensen med Comments Closed

Som lovet, vil jeg fortælle lidt mere om nyhederne i Firefox 3.6. Denne gang handler det om plugins. Plugins er en utrolig vigtig del af webben, hvilket irriterer mig at sige, da jeg hader dem som pesten. Men sandheden er, at uden Flash, Java, en PDF-læser og en videoafspiller, er der alt for mange hjemmesider, der står af.

Mozilla gør meget for at rette op på det problem med indbygget understøttelse af Ogg Theora video, Ogg Vorbis lyd, hardwareaccelereret 3D-grafik med WebGL, brugbare filuploads og en masse andre nyheder, som førhen var henvist til plugin-land. Men så længe hjemmesiderne stadig bruger plugin-teknologierne, er vi som brugere stadig nødt til at have de sataner installeret.

En vigtig ting med software og sikkerhed, og især software som interagerer med internettet, er, at softwaren holdes opdateret konstant med sikkerhedsopdateringer. Firefox er ret sikker i denne sammenhæng, da den automatisk søger efter opdateringer en gang i døgnet og henter og installerer dem automatisk uden at indblande brugeren. Man ser som regel først en Firefoxopdatering efter den er installeret, når en startside popper op med beskeden “Firefox er opdateret”.

Men situationen er langt fra lige så god når det gælder plugins. Mange plugins har enten ingen automatisk opdatering, de opdaterer meget sjældent, eller processen er måske kun delvist automatiseret, hvor man skal klikke på “Næste” en hel masse gange med lang ventetid imellem. Det gør at man måske ikke altid lige har sine plugins opdateret, men her kan Firefox 3.6 hjælpe. Den kontrollerer nemlig selv om dine plugins er up-to-date, eller om de indeholder alvorlige sikkerhedshulder, som kompromitterer din sikkerhed online, endda selvom din Firefox er fuldt opdateret. Finder Firefox 3.6 et usikkert plugin, giver den dig besked, så du kan få det opdateret. Den kan desværre ikke opdatere pluginnet automatisk, da det ville kræve en del hjælp fra pluginnet selv. Sidder du med Firefox 3.5 eller ældre, kan du alligevel allerede tjekke om dine plugins er opdaterede på Mozillas Plugin Check side.

Et andet problem Firefoxudviklerne har set på i 3.6 er stabilitet. Man er gået hårdt til værks i forsøget på at finde og rette så mange fejl i Firefox som muligt, der kunne få Firefox til at gå ned. Desværre viser statistikken dog, at over en tredjedel af alle Firefoxnedbrud ikke skyldes Firefox, men derimod direkte skyldes programmer, der forsøger at interagere med Firefox, som fx tilføjelser eller plugins. Hvis man kunne lave en mede detaljeret statistik og finde de nedbrud som indirekte skyldes andre programmer, ville tallet sikkert være meget højere.

Derfor har Firefox 3.6 to nyheder på denne front. Den ene er at et smuthul til at installere udvidelser til Firefox er lukket. Normalt installeres udvidelser af brugeren eller af et program ved at skrive i en bestemt konfigurationsfil i Linux eller i registreringsdatabasen i Windows. En anden mulighed var før Firefox 3.6 at lægge en dll-fil i Firefox’ installationsmappe. Når Firefox startede og skulle indlæse alle sine forskellige komponenter, indlæste den bare alle dll-filer i installationsmappen, da det var nemmest. Men visse programmer, der gerne ville installere udvidelser til Firefox sammen med installationen af programmerne selv, syntes det var smart at installere sine udvidelser, ved at placere sine dll-filer blandt Firefox’ egne filer. Sådan har Skype, Google Desktop og diverse antivirusprogrammer fx gjort, når de ville integrere deres funktionalitet med Firefox.

Der er dog nogle problemer med denne installationsmetode. For det første kan brugeren ikke se at udvidelsen er installeret i menuen Funktioner -> Tilføjelser, og udvidelsen kan heller ikke deaktiveres, hvis noget går galt – ikke engang i fejlsikret tilstand. For det andet indeholder denne installationsform ikke kompatibilitetsinformation som almindelige installationer gør. Det betyder at hvis Firefox opdateres og udvidelsen ikke længere er kompatibel med den nye version, så vil Firefox ikke kunne starte. Ved almindelige udvidelser  deaktiveres udvidelsen indtil en opdatering er klar. Smuthullet er rettet i Firefox 3.6, således at dll-filer i installationsmappen kun indlæses, hvis de er på en speciel godkendt liste over dll-filer i Firefox. Det vil forhåbentligt komme en del af problemerne til livs med antivirusprogrammer, Skype, Google Desktop og andre programmer, der får Firefox til at gå ned. Det betyder også at alle programmer der har benyttet denne teknik med at proppe dll-filer ind i Firefox, nu skal opdateres til at bruge almindelige Firefoxudvidelser, hvis de skal virke i Firefox 3.6.

Og hvis det ikke skulle være nok, så indeholder Firefox 3.6 også en mulighed for at blokere for specifikke fejlbehæftede dll-filer, også selvom de indlæses via en normal og korrekt installeret udvidelse. Sammen med påmindelsen om at opdatere plugins skulle det forhåbentligt give en meget mere stabil Firefox 3.6.

Men det stopper ikke i Firefox 3.6. Mozilla er også i gang med at implementere separering af faneblade og plugins i processer. Separate plugins kommer forhåbentligt i Firefox 3.7, mens separate faneblade må vente noget længere. Men set i lyset af at en tredjedel af nedbrudene kommer fra tredjepartssoftware, vil separering af plugins alene nok betyde en del.

Firefox 3.6: Letvægtstemaer

december 4th, 2009 af Jesper Kristensen med 1 Comment »

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.

Resource Packages: En teknologi til at loade hjemmesider hurtigere

november 17th, 2009 af Jesper Kristensen med Comments Closed

Mozilla har lige offentliggjort deres første udkast til Resource Packages, en teknologi, der skal gøre indlæsning af hjemmesider hurtigere. Den fungerer ganske enkelt ved at alle de statiske filer, som alligevel skal hentes ved hver eneste sidevisning, pakkes ned i en simpel zip-fil og sendes på en gang. Man indsætter bare en kode som fx

<link rel="resource-package"
      type="application/zip"
      href="/static/site-resources.zip" />

Browseren sørger så for, at hvis et billede fx har adressen /static/header/left.png, så kigger browseren først i zip-filen efter header/left.png før den forsøger at hente billedet separat.

Fordelen er at der kun fortages et HTTP Request i alt i stedet for et HTTP Request pr. style sheet, script og billede. Derved spares en masse ligegyldige HTTP headers, som ikke behøves at sendes frem og tilbage, og en masse venten på svar fra serveren kan spares væk.

Jeg synes det er smart, og tror på det hurtigt vil blive udbredt. Specielt fordi man som hjemmesideudvikler kan starte med at bruge teknikken med det samme, så snart bare en enkelt browser har understøttelse for det. Alle andre browsere kan nemlig bare downloade de enkelte filer separat som de plejer.

I dag har man mulighed for at kombinere flere js og css filer i en, og man har mulighed for at lave sprites til baggrundsbilleder. Men denne nye teknik giver mulighed for at kombinere alle forskellige slags ressourcer på en side, ikke kun ressourcer af samme type, og så er det også meget nemmere at arbejde med end fx en sprite.

Mozilla forventer at Resource Packages kommer med i Firefox 3.7 som forventes udgivet om trekvart år.

Konference i København

maj 5th, 2009 af Jesper Kristensen med Comments Closed

Maemo og Mozilla holder en gratis konference om mobiludvikling den 30. og 31. maj 2009 i København (ITU). Læs hele nyheden…