Przeglądarka Edge nie przechodzi w całości na Chromium. To trochę potrwa
Wiadomość o przejściu przeglądarki Edge na otwarty silnik rysujący z aplikacji Chromium okazała się hitem i wywołała szereg komentarzy. Przeważają dwie opinie: poparcie dla zaniechania rozwoju niepopularnego silnika oraz obawa o przyszłość sieci WWW w świetle nadchodzącej monokultury Chromium.
16.12.2018 01:38
Oba poglądy mają szeroki zestaw uzasadnień. Szczególnie interesujący jest ten pierwszy – aprobata dla wstrzymania prac nad Edge nie wynika z filozoficznego sprzeciwu wobec tworzenia bytów zbędnych, a z powszechnego rozczarowania jakością Windows 10. Innymi słowy, wiele osób liczy na to, że jeżeli Microsoft przestanie rozwijać kosztowny komponent systemu, z którego ewidentnie nie ma zbyt wiele korzyści rynkowej, zacznie w ten sposób dysponować wolnymi mocami do spożytkowania na polepszenie jakości „Dziesiątki”. Niestety, przejście na Chromium doprowadzi raczej do odwrotnego efektu. Między innymi dlatego, że Microsoft Edge wcale nie zostanie wyrzucony z Windows 10. Jest to bowiem obecnie niemożliwe.
Aby zrozumieć dziwną relację Edge’a z systemem Windows 10, należy przyjrzeć się temu, jaką rolę pełnią dziś przeglądarki internetowe w systemach operacyjnych. Poza byciem oknem na świat i oddzielną aplikacją, w której wielu użytkowników spędza niemal cały swój czas przed ekranem, przeglądarki internetowe dostarczają też komponent potocznie zwany WebView, możliwy do osadzenia w innych aplikacjach. Programy mogą więc oferować interfejs stworzony za pomocą języków internetowych, jak HTML, CSS i JS, a nie z użyciem specyficznych dla systemu kontrolek, jak Windows Forms. Takie podejście, poza stosem wad, ma wiele zalet: pozwala zatrudnić tych samych programistów do stworzenia wersji pulpitowej i webowej. Ułatwia przeniesienie aplikacji na inne systemy operacyjne. I pozwala mniej się przejmować zgodnością z systemem. Dzisiejsze aplikacje UWP oraz APK (Android) bardzo często polegają na rysowaniu swoich komponentów właśnie w kontrolce WebView. W systemie Windows, silnik rysujący zapewnia Edge, na Androidzie – Blink. Pomysł na wykorzystanie przeglądarki internetowej do rysowania interfejsu, dziś naturalny i powszechny, był źródłem pozwów dwie dekady temu. Pionierem owego podejścia (po niespełnionych przez Netscape obietnicach własnego rozwiązania) był Microsoft, który rozpoczął rysowanie wielu elementów systemu za pomocą silnika Internet Explorer w 1997 roku.
Silnik Trident
Wlanie przeglądarki internetowej tak głęboko w system oznacza, że mimo oddzielnej nazwy, przestaje ona być oddzielnym produktem. Wspomniany przed chwilą Internet Explorer, znajduje się w katalogu „Program Files”, wraz z innymi aplikacjami zainstalowanymi przez użytkownika. Ale tak naprawdę jest to tylko opakowanie dla samego silnika przeglądarki, który jest odpowiedzialny za znacznie więcej rzeczy, niż tylko wyświetlanie stron internetowych. Właściwe serce Internet Explorera, czyli silnik Trident, zaszyty w pliku MSHTML.DLL, znajduje się już w katalogu „System32” i jego usunięcie jest bardzo utrudnione. Odinstalowanie Explorera zakończy się więc usunięciem wrappera i niczego więcej. Jest on bowiem nie tylko aplikacją, ale i platformą. Bez której nie działa część interfejsu Windows oraz niezliczone ilości aplikacji budowanych przez ostatnie dwadzieścia lat.
Silnik EdgeHTML
Edge, mimo niezliczonego zbioru ulepszeń, kroczy tą samą drogą. Jest (a raczej był) reklamowany jako nowoczesna aplikacja typu UWP, ale jej przynależność do owej kategorii ma miejsce na dość specjalnych warunkach. Jest bowiem skonteneryzowana jako nowoczesna aplikacja, ale znajduje się w katalogu „SystemApps” (dawniej InfusedApps, znacznie trafniejsza nazwa), a nie „WindowsApps”. Różnica polega na tym, że te pierwsze aplikacje są dostarczane i aktualizowane razem z systemem, a te drugie – przez Sklep. Edge jest więc nieco oszukaną aplikacją UWP, w dalszym ciągu korzysta jednak z zalet infrastruktury, jak konteneryzacja, ochrona binariów, rysowanie za pomocą nowego silnika DWM-1 (proszę zwrócić uwagę, jaki użytkownik jest właścicielem procesu z oknem przeglądarki!) i tak dalej. Również to jednak w pewnym momencie się kończy.
Podobnie jak niegdyś Internet Explorer, część Edge’a jest wydzielona, by dostarczać silnik rysujący dla innych aplikacji, w tym przypadku dla wszystkich pozostałych sklepowych pakietów APPX. Ponawiając zatem znany nam już schemat, silnik EdgeHTML znajduje się w katalogu „System32”, mając za swojego sąsiada stary dobry Trident, zrodzony ponad dwadzieścia lat temu. Obie biblioteki stosują w dodatku tę samą konwencję wersjonowania…
Silnik Chromium
Teraz spróbujmy do tego obrazka w jakiś sposób dorzucić Chromium. Aplikacje wrapujące silniki Chromium muszą być obecnie czystymi aplikacjami Win32, a nie paczkami z „koszernym” WinRT – budulcem prawdziwych aplikacji UWP. Teoretycznie nie jest to problem: od kilku lat możliwe jest spakowanie całej klasycznej aplikacji w kontener APPX i choć traci się w ten sposób szereg zalet dostarczanych przez infrastrukturę Modern, w dalszym ciągu tak spakowana aplikacja jest bezpieczniejsza i łatwiejsza w aktualizacji oraz wdrażaniu.
Powiedzmy zatem, że możemy zastąpić systemową aplikację Edge nową przeglądarką. Ale będzie to podmiana niekompletna: do nowego kontenera wsypanoby zarówno interfejs jak i sam silnik rysujący. Tak dostarczane Chromium nie zostanie nową „platformą”, a jedynie kolejną przeglądarką której nikt nie użyje. Uczynienie z niej platformy wymagałoby podmiany silnika EdgeHTML, a więc komponentu systemu operacyjnego. A to nie takie proste.
Przede wszystkim, z silnikiem EdgeHTML, czyli obiektem WebView Edge’a, zrośnięte jest wiele mechanizmów zabezpieczeń, zaprojektowanych właśnie pod kątem Edge’a i niczego innego. Po drugie, wszystkie sklepowe aplikacje rysujące się za pomocą silnika Edge mogą mieć nagle dziwne problemy z wiernością odwzorowania swojego interfejsu. Teoretycznie wszystko powinno być OK, ale na pewno znalazłoby się coś, co nagle zaczyna wyglądać niepoprawnie. Poza tym, Chromium jest mordercą baterii. Sam Microsoft rozpętał niekoniecznie etyczną wojnę z Google Chrome, wyświetlając przeznaczone specjalnie dla tej aplikacji dymki z powiadomieniem, że jej dalsze użycie doprowadzi do zjedzenia akumulatora znacznie prędzej, niż podczas pracy z Edge. Apetyt Chromium na energię zdecydowanie nie zmienił się od czasu owej pamiętnej kampanii informacyjnej.
Wreszcie, Edge jest platformą również z powodu rzeczywistej przewagi funkcjonalnej na niektórych polach (w co zapewne trudno będzie niektórym uwierzyć). Dzisiejszy Edge jest jedyną przeglądarką która potrafi udźwignąć i obsłużyć niektóre protokoły komunikacji RTC oraz strumieniowania multimediów. Sklepowa aplikacja Netflix wykorzystuje obiekt Edge WebView właśnie dlatego: żadna inna infrastruktura nie potrafi dostarczyć obsługi strumieniowania multimediów w rozdzielczości 4K. Gdyby aplikacja Netfliksa nagle zaczęła być rysowana za pomocą Chromium, straciłaby dość istotną część swoich możliwości.
Chromium nie jest gotowe na zintegrowanie z kodem Windows, bo jest zupełnym ciałem obcym, w dodatku funkcjonalnie odstającym od wymagań funkcjonalnych Windows 10, które po naszej krótkiej inspekcji okazują się być jednak całkiem wysokie. Dlatego zanim zastąpi ono Edge’a w ramach platformy do rysowania interfejsów, miną lata. Przez ten czas nastąpi rozjazd: w systemie będą znajdować się trzy przeglądarki: starzejący się Internet Explorer, wstydliwie ukryty silnik EdgeHTML oraz spakowana jako aplikacja Win32 nowa wersja Edge’a, niewykorzystująca żadnych zalet UWP. Równie dobrze będzie można zainstalować Chrome’a od razu, skoro system w ramach swojej oferty sugeruje to samo, ale w innym opakowaniu.
Czy to pomoże?
Taki scenariusz oznacza w praktyce więcej, a nie mniej pracy. Jest bowiem więcej linii i scenariuszy do utrzymania. W świat idzie również informacja, że Microsoft nie potrafi dostarczyć platformy programistycznej: robi krok wstecz dostarczając zwykłą aplikację Win32 zamiast UWP, w dodatku od firmy będącej na wielu polach konkurentem. Co gorsza, to kolejna poszlaka wskazująca na przekonanie w samym Redmond, że UWP się do niczego nie nadaje, a .NET na pulpicie jest martwy. Nowe wersje Skype’a i Teams oraz edytor Visual Studio Code to aplikacje wykorzystujące framework Electron. Electron.js to środowisko rysujące aplikacje z webowym interfejsem, w ramach widoku WebView dostarczanego przez… Chromium. Tak jest. Pisząc aplikacje .NET w programie Visual Studio Code (niedostępnym zresztą, nota bene, w Sklepie), pod spodem pracuje program CHROME.EXE. Cóż za obraz nędzy i rozpaczy.
Oczywiście, Microsoft uzyskałby wiele korzyści, gdyby udało mu się zaoferować coś, co skłoni ludzi do niepakowania swoich programów w Electron (oraz Chromium Embedded) i dostarczanie ich jako PWA rysowane przez „prawdziwe” Edge. Stworzenie takiej platformy znacząco zmniejszyłoby liczbę uruchomionych Chrome’ów na dzisiejszych komputerach, dźwigających setki megabajtów RAMu dla prostych przecież programów Slack, Discord, Skype, Teams, Spotify i VS Code (to jest edytor tekstu, na litość boską!). Niestety, taka platforma nigdy nie powstanie. A nowy Edge oparty o Chromium też raczej nie odniesie sukcesu. Po co używać imitacji, gdy można pobrać oryginał?
Upada zatem kolejny z filarów „nowoczesnego systemu Windows”. Ubicie wersji Mobile, wpuszczenie zwykłych aplikacji do Sklepu, rezygnacja z rozwoju mobilnego Office’a, zmniejszenie liczby wbudowanych aplikacji kafelkowych i wstrzymanie rozwoju nowej przeglądarki. Co następnego czeka w kolejce do ścięcia? Dajcie nam znać w komentarzach!