Photoshop er kommet til browseren

Illustration: Adobe/Google
Selv store programmer i C++ kan afvikles i en browser med Webassembly-teknologien.

I den seneste triumf for Webassembly-teknologien er billedbehandlingsprogrammet Photoshop ankommet til browseren.

Indtil videre er der tale om en beta-version, og der er endnu ikke adgang for alle.

Adobe, der er firmaet bag Photoshop, har tidligere skabt webudgaver af programmer som Spark og Lightroom. Det har været med udgangspunkt i Javascript.

Men Photoshop er et stort program med mange linjers kode, skrevet i C++. Webassembly-teknologien og værktøjet Emscripten har været nøglen til få Photoshop i browseren. Det skriver Nabeel Al-Shamma fra Adobe og Thomas Nattestad fra Google i et blogindlæg.

Webassembly er en browserstandard for bytekode og en tilhørende virtuel maskine, som kan afvikles lige godt i alle de fire store browsere. Værktøjet Emscripten benytter compileren LLVM til at oversætte C++ til Webassembly-kode.

Disse muligheder betød, at Adobe ikke skulle starte fra bunden, men kunne udnytte den eksisterende Photoshop-kodebase.

Emscripten kan også oversætte POSIX api-kald, som er en standard for styresystemer, til tilsvarende web-api’er. Værktøjet oversætter tillige grafikkode skrevet til standarden Opengl til browserens Webgl. Det er også muligt at flytte programmer, der benytter et lokalt filsystem. Emscripten skaber ganske simpelt emuleret filsystem, så funktionaliteten bibeholdes.

Flaskehalse

Der var dog nogle knaster på vejen. Den kode, Emscripten producerede, var ikke hurtig nok, så Google samarbejde med Adobe om at fjerne flaskehalse, samt introduktion af dynamiske tråde, som er et kritisk krav i Photoshop.

Håndtering af exceptions i C++ var heller ikke godt understøttet i Webassembly, og her har parterne arbejdet med Webassembly Community Group, som er en gruppe under World Wide Web-konsortiet, for at få denne mulighed med i standarden.

Webassembly har dog også nogle tricks til at øge ydelsen, så som SIMD-instruktioner. SIMD (Single Instruction Multiple Data) giver mulighed for at enkelte tal i en vektor alle kan beregnes med samme operationer sideløbende i såkaldte hardwaredefinerede vektorbaner på CPU’en. Det benytter Adobe i grafiksproget Halide, som indlejres i C++ og giver mulighed for ydelsesforbedringer på en faktor tre til fire i de fleste tilfælde, og i nogle tilfælde helt op til en faktor 160.

Adgang til det lokale filsystem

Photoshop-filer kan være kæmpestore i omfang, og derfor er det kritisk, at programmet kan flytte data fra disk til hukommelse, mens brugeren panorerer rundt i billedet. På de sædvanlige platforme gøres det med ‘hukommelsesmapping’, hvor styresystemet håndterer korrespondancen mellem disk og hukommelse, så programkoden ikke skal tænke på det, men kan spole vilkårligt frem og tilbage i filen.

Det har ikke tidligere været muligt på web, men nu kan webapps tilgå filer på brugerens lokale system med et nyt api.

Farver på webbet har traditionelt benyttet modellen Srgb, men Photoshop på nettet benytter Display P3 Canvas, som skulle mere troværdig farvegengivelse. På sigt skal api’et udvides til også at håndtere HDR-skærme.

Brugerflade-komponenterne i webversionen af Photoshop benytter biblioteket Lit, som bygger oven på standarden Web Components, sammen med et par ‘øer’ af React-komponenter.

I forbindelse med projektet har holdet bag Chrome udviklet fuld understøttelse af Webassembly-debugging, med trinvis gennemløb af koden, breakpoints og evaluering af udtryk.

Adobe har ikke tænkt sig at stoppe ved Photoshop. Firmaets ambition er at bringe hele porteføljen af programmer til webbet, skriver de to udviklere.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (3)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Pernille Tranberg

desværre kun til chrome og edge. Som sædvanlig udvikles til datamonopolets browser. abobe lover godt nok at det osse kommer til firefox.......

ps er det ikke rigtig forstået at edge er en version af chrome da Microsoft har droppet sin egen browser? og at edge dermed gør det samme som chrome; tracking by default via 3. part cookies? (modsat safari, firefox og brave). Nogen der kan bekræfte/afkræfte det?

  • 0
  • 1
#2 Bjarne Nielsen

Webassembly er en interessant platform, og det er bestemt bemærkelsesværdigt, at det kan skalere til Photoshop.

ps er det ikke rigtig forstået at edge er en version af chrome da Microsoft har droppet sin egen browser?

Ja og nej. Google frigiver en ret stor del af den platform, som Chrome er bygget på, som open source under navnet Chromium. Den platform har flere andre browsere så også valgt at bygge videre på, herunder nu også i et stykke tid Microsofts Edge, men f.eks. også Brave. Men ikke netop Firefox.

Jeg tror hurtigt at man kan få et gult kort her i debatten, hvis man laver bil-analogier, men jeg vover alligevel det ene øje: det svarer i et eller andet omfang til, når biler som f.eks. VW ID.4 og Skoda Enyaq begge bygger på VW gruppens MEB platform - der er mange grundlæggende valg, som er truffet, men der er også plads til mange meningsfulde og interessante forskelle. Og ligesom MEB platformen ikke er en bil, så er Chromium heller ikke en browser.

På samme måde så har Edge ikke den omdiskuterede FLoC teknologi som Chrome har (faktisk er Chrome nok den eneste Chromium baserede browser, som inkluderer FLoC). Det er vist ikke forkert at sige, at FLoC har været både diskuteret og kritiseret.

Microsoft kan derfor både bygge Edge på Chromium og i vid udstrækning gå sine egne veje - ligesom så mange andre browsere kan.

Så Chromium som sådan er ikke i sig selv problematisk, men det er problematisk, at vi er ved at ende med en monokultur kontrolleret af en enkelt aktøt. For der er stor magt forbundet ved at Google med Chrome/Chromium de facto sætter standarden for browsere, og det ses f.eks. af diskussionen om Manifest V3: det, som noget anonymt kaldes for "Manifest" er definitionen af, hvordan web extensions skal bygges - det kunne f.eks. være uBlock Origin, NoScript eller Privacy Badger. Den nuværende v2 udgave bruges både af Chrome/Chromium og Firefox, hvad gør det meget nemmere at skrive udvidelser til browsere.

Men nu har Google lavet en v3 udgave, som bl.a. gør det meget sværere for browserudvidelser at håndtere brugerens webrequests ... et træk, som på den ene side gør det meget sværere at skrive maligne udvidelser, men på den anden side sandsynligvis gøre det umuligt at have udvidelser som netop uBlock Origin, NoScript eller Privacy Badger.

Og hvis Google som annonceret deprecater Manifest v2 til fordel for Manifest v3 i Chrome/Chromium i 2023, så bliver det meget vanskeligt for Firefox at blive på v2 - det bliver et valg imellem at blive efterladt alene på perronen eller tage med et tog, som kører i en kedelig retning. Et valg, som Firefox nok i praktisk må træffe før den tid, hvis de som laver browserudvidelser stille og rolig begynder og sive over på v3, hvad de nok vil gøre inden skæringsdatoen.

Det er ikke nemt, og er endnu et eksempel på tech-giganternes store magt.

  • 0
  • 0
#3 Bjarne Nielsen

...og måske skulle jeg lige tilføje, at selskabet bag Firefox, Mozilla, får langt hovedparten af sine indtægter som royalties fra de søgemaskiner, som foreslås i Firefox ... og lagt hovedparten af disse royalties kommer fra en aftale med Google om at gøre Googles søgemaskine til default valget. Se f.eks. https://www.theregister.com/2020/08/14/mozilla_google_search/

Mozillas aftale med Google løber til ... 2023.

Så det er ikke helt forkert at sige, at det hovedsageligt er Google, som står bag Firefox ... for now, at least.

  • 0
  • 0
Log ind eller Opret konto for at kommentere