poniedziałek, 23 marca 2009

Nowa wiosna dla technologii internetowych

Michał siedział przy komputerze. Serce mu biło coraz szybciej. Daria zauważyła że Michał siedział bardzo podniecony.
-- Michałku czym się tak bardzo, podniecasz?
Daria spojrzała ma stronę z wynikami testów wydajnościowych JavaScriptu.
-- Dusiu zobacz jaki wyścig technologiczny o to czy JavaScript nadaje się do budowy efektywnych gier, i rozbudowanych aplikacji internetowych. Po prostu programiści piszą testy wydajnościowe aby sprawdzić ile razy w określonym czasie coś się wykona. Okazuje się trzeba było coś wymyślić, żeby kod skryptów coraz szybciej wykonał się.
-- Dlatego, że mamy coraz szybsze komputery i karty graficzne?
-- I dobrą rywalizację, pomiędzy zespołami programistów, którzy chcą pokazać że ich przeglądarka jest najlepsza. Trzeba zrozumieć jak rozwijały się przeglądarki internetowe. Najpierw była rywalizacja pomiędzy firma Nescape a Microsoftem o to która przeglądarka jest lepsza. W 2000 gdy miałem internet uważałem, że Nescape Navigator jest gorszą przeglądarką bo nie obsługiwał ActiveX. Była wtedy wojna przeglądarek. Wtedy używałem Internet Explorera 5 i bardzo cieszyłem się niestandardowymi możliwościami tej przeglądarki. Skończyło się to na tym że myślałem, że Microsoft będzie wymyślał kolejne standardy dla internetu. Ale organizacja standaryzacyjna nie chciała się podporządkować pomysłom Microsoftu. Na przykład zamiast proponowanych VML i HTML+TIME przyjęto standard SVG i SMIL, podobnie było też z innymi inicjatywami MS takimi jak HTML Compoments. Skończyło się to na tym, że Microsoft zniechęcił się do rozwoju swojej przeglądarki. Wersje Internet Explorer 6 i jak Internet Explorer 7 tak naprawdę usuwały to co było "problematyczne" pod kątem bezpieczeństwa - filtry DirectShow, DirectAnimation. Dominację Internet Explorera nie sprzyjała rozwojowi standardów. W tej sytuacji firmy które chętnie współpracowały ze sobą przy ustalaniu standardów, postanowiły rozwijać swoje przeglądarki internetowe. Są to Firefox ( na silniku Gecko ), Opera (na silniku Presto ), Safari, Adobe AIR, QtWeb, Google Chrome (na silniku WebKit). Z drugiej strony "odkrycie" w 2005 roku technologii Ajax sprawiło że zaczęto zwracać uwagę na wydajność wykonywania skryptów JavaScript a także na właściwą interpretację standardów W3C. W 2005 roku powstał test ACID2 który miał sprawdzić jak przeglądarki internetowe interpretują standard CSS2. Najdłużej opierał się temu testowi Internet Explorer dopiero wersja 8 tj tak która niedawno wyszła, natomiast silnik WebKit już ten test przeszedł w 2005 roku. Twórcy testu ACID2 wprowadzili kolejną wersje testu ACID, który miał sprawdzać jak przeglądarki zaimplementują kolejne standardy SVG, DOM a także CSS font i CSS selectors. Od momentu publikacji testu ACID3 prace nad silnikami przebiegły bardzo sprawnie. W praktyce tylko programiści Opery pracujący nad silnikiem Presto i programiści silnika WebKit potrafili wzajemnie dążyć do osiągnięcia celów jakie postawiono przed testem acid3, a także dążyć do implementacji części standardu HTML5 (obsługa znaczników video, canvas, webforms, storage). Trzeba też, że równocześnie zauważyć, że intensywnie trwała praca nad unowocześnianiem silników JavaScript. Motywacją były takie testy wydajnościowe jak Dromae, SunSpider, testy V8, co sprawiło, że coraz bardziej zwracano uwagę nad tym który framework JavaScript jest bardziej optymalizowany pod katem szybkości co pokazywał test SlickSpeed. W takich sytuacjach w silniku Webkit systematycznie poprawiano kod silnika JavaScript, wdrażając SqurielFish (od maja 2008) SquirrelFish Extreme (od września 2008). Google wprowadziło własny silnik JavaScript V8 do silnika WebKit w Chrome. Apple w Safari 4 marketingowo nowy silnik JavaScript nazwała Nitro. Programiści Opery też zauważyli zmiany w tworzeniu wydajnych silników JavaScript tworząc nową wersję silnika JS o nazwie Carakan. Programiści pracujący nad silnikiem Gecko - dodali też nowe cechy do silnika JavaScript SpiderMonkey nową funkcjonalność nazwaną TraceMonkey, która polega kompilacji w locie kodu JavaScript w pamięci do postaci asemblera. Właśnie ewolucja silników JavaScript polega na tym jak wykonywany jest kod JavaScript począwszy interpretacji czyli analizie kodu linia po linii, potem poprzez przekształcanie tego do bajtkodu w pamięci, aż po kompilację do postaci asemblera w pamięci, bazując na rozkazach procesora.
-- Wyścig szczurów, zamiast połączyć siły i zrobić jedną dobrą przeglądarkę internetową dla świata, każda z korporacji chce wykorzystać ten efekt dla uzyskania przewagi konkurencyjnej. Dziwne, że Microsoft nie bierze w tym udziału, a jak wiele ludzi używa ich przeglądarki internetowej.
-- Bo Microsoft nastawił się na rywalizację z Adobe. Tworzy konkurenta dla Flash Playera czyli Silverlight. Ponieważ doszli do wniosku że łatwiej rozwijać wtyczki do przeglądarki niż samą przeglądarkę. Zobaczymy czy menadżerom Microsoftu wystarczy wytrwałości w rozwijaniu technologii Silverlight. Na razie Silverlight jest traktowany jako ciekawostka, podobnie jak to było z początkami Adobe Flex 2.
-- Jaka to ma być ciekawostka?
-- Brakuje wizji na czym mieliby programiści i developerzy oraz graficy zarabiać na tworzeniu zawartości w tej technologii. Jak nie będzie efektywnego narzędzia dla grafików do tworzenia zawartości w Silverlight, to ta technologia nie uzyska popularności. Ironicznie jeżeli coś jest przyjażne dla grafików to oznacza, że każdy może tym się zajmować. Jeżeli robi się kolejną zabawkę dla programistów to trzeba im dostarczyć świetny edytor w którym grafik zrobi interfejs graficzny użytkownika, a programista to oprogramuje. Co oznacza że programistom trzeba też dostarczyć takie środowisko programistyczne które byłoby dość przyjazne dla grafika. Flash IDE zaczynał jako pakiet do animacji. Natomiast coraz więcej programistów szukając jakiegoś rozwiązania dla interfejsu użytkownika wybiera Adobe Flex do tworzenia graficznego interfejsu użytkownika co sprawia trudniej będzie Microsftowi przekonać programistów żeby wybrali Silverlight i platformę .NET zamiast platformy Flash.
-- Może to Adobe jest już monopolistą w grafice dla internetu. Dobrze że Microsoft chce zrobić alternatywę dla Flash Playera. Ludzie będą mieli wybór.
-- Dusiu, żyjemy w czasach, w których ludzie woleliby, żeby ktoś za nich wybrał. Operator wybierze model komórki dla ciebie, zainstalujesz system operacyjny masz już dokonany wybór przeglądarki internetowej. Kogo tam obchodzi czy strona w witrynie spełnia standardy W3C istotne jest to, że działa nawet w najgorszej przeglądarce.
-- Uważam że raczej to kwestia mody Michałku i gustów użytkowników. Chcesz być modny to kup i używaj iPhona od Apple. Chcesz czymś zaimponować pokaż się z laptopem z Apple. Jak sobie to sprawisz to będziesz dla mnie snobem. Wśród programistów też są różne dziwne gusta.
-- Mógłbym twierdzić, że teraz nie potrzeba jest matką wynalazków, lecz gusta i kaprysy menadżerów branży medialnej nadają tempo rozwoju technologii. Przeglądarki robią się tak szybkie, że są w stanie przetwarzać coraz bardziej zaawansowane skrypty JavaScript obsługujące efekty graficzne takie jak Processing.js czy przykłady stworzone dla Google Chrome. Zresztą Japończycy lobią wymyślać zastosowania dla tych nowych technologii i im to szybko idzie.
Trzeba zwrócić uwagę że implementacja takich efektów wymaga zastosowania odpowiednich bibliotek renderujących grafikę 2D. Google używa do tego biblioteki Skia, (warto przyjrzeć sie opinii czym jest ta biblioteka). Opera natomiast biblioteki Vega, Mozilla używa Cairo, natomiast dla QtWeb Internet Browser używa QPaintera. Jak można by się spodziewać, będzie trend aby dodać wsparcie kart grafiki do wyświetlania efektów graficznych na stronach internetowych, a szczególnie pod katem wykorzystania tego do implementowania efektów SVG. Idąc w tą stronę w W3C grupy zajmujące się standardami CSS i SVG chcą dodać trzeci wymiar do obsługi stron internetowych. Pomimo szybkiego tempa rozwoju te rzeczy wolno się przyjmują z tego powodu że większość ludzi używa przeglądarki Internet Explorer i Mozilla Firefox, które nie są wydajne jeżeli chodzi o wykorzystanie nowych technologii. Pewnym rozwiązaniem byłoby zaimplementowanie Google Gears obsługi znacznika canvas, wtedy ludzie obsługiwaliby wtyczkę która tak naprawdę osadzała w Internet Explorerze, zamiast szukać półśrodków w postaci emulacji ze strony VML, Silverlight czy Flash Playera.
-- Michałku, bardzo interesująco potrafisz mi przedstawić. A co będzie dalej?
-- Przypuszczam że może dojść do sytuacji w której Internet Explorer zacznie być marginalizowany. Na przykład zrobią pełną obsługę SVG i CSS3 oraz znaczników HTML5. Programiści tworzący silniki przeglądarek zaczną znowu rywalizować. Drugi trend to próba implementacji przez silniki graficzne obsługi możliwości jakie dają karty grafiki (GPU). Trochę to komplikuje tworzenie takiej przeglądarki, bo pojawi się sytuacja w której zawartość strony będzie preztwarzana przez procesor karty graficznej GPU w jednym wątku dla znacznika video, czy canvas a resztę procesor CPU. Zresztą obliczenia tego typu to żadna nowość NVidia oferuje CUDA natomiast AMD oferuje ATI Stream. Gdyby coś takiego wdrażać, to trzeba będzie robić wersje przeglądarek dla tych którzy mają GPU i tych którzy nie mają GPU, a także dawać użytkownikowi wybór biblioteki 3D z której przeglądarka będzie korzystać: DirectX czy OpenGL. Sam miałem niezbyt interesujące doświadczenia z taka wtyczką InDuality tworzoną w oparciu o silnik Ogre. Najlepszym przykładem wykorzystania grafiki 3D ze wsparcia ze strony kart grafiki jest wtyczka Unity3D Web Player. Czy przeglądarki do tego dorosną? Trudno powiedzieć. Prawdopodobnie w najbliższym czasie powstaną biblioteki JavaScript, będące odpowiednikami bibliotek ActionScript takich jak Papervision3D czy Away3D.
-- Fajnie jak ludzie by przeglądali witryny przez internet w trzecim wymiarze.
-- Było już sporo inicjatyw tego typu, ale rzadko się przyjmuje. Google Lively upadło, InDuality przeżywa recesję, Technologiami Unity3D i jak Adobe Director zajmują się pasjonaci, którzy robią gierki internetowe dla wymagających klientów. SecondLife ma tendencje spadkową, natomiast to co interesuje ludzi to rozwój silników 3D odtwarzanych w Flash Playerze i gier MMORPG, a standardami VRML/X3D interesuje się coraz mniej ludzi.
-- Michałku, kiedyś mi wspomniałeś o tym, że Adobe miało technologię do realizacji światów 3D, ale z powodów prawnych nie mogli dalej tego rozwijać.
-- Świetnie pamiętam tą technologię - Adobe Atmosphere. Prawdopodobnie problem polegał na tym jak budować model rozwoju technologii w oparciu o opłaty licencyjne ze strony Havok (firma która stworzyła silnik od fizyki w trzecim wymiarze) i twórców silnika 3D Viewpoint Platform. Drugi powód wycofania się był banalny: brak oczekiwanego wzrostu sprzedaży i popularności. Na to też mogło mieć wpływ fakt, że zespół tworzący tą technologię był dość mały. Jest tylko pewna szansa, że za rozwój technologii trójwymiarowych dla przeglądarek internetowych będzie odpowiadać grupa Khronos czyli twórcy takich technologii jak OpenGL ES czy OpenVG, bądź formatu COLLADA. Wsparcie ze strony fundacji Mozilla i jak Google sprawi, że na nowo zacznie się kolejny etap rozwoju przeglądarek o wsparcie API do Canvas3D
-- Trochę to smutne, że duże korporacje po pewnym czasie inwestowania w dana technologię nagle zaprzestają jej rozwoju Michałku. Czy masz jakieś wnioski dla twórców przeglądarek?
-- Liczyć się z tym, że jak ktoś zrobił witrynę, która dobrze chodzi pod starszymi wersjami to niech dalej dobrze chodzi, a nie "zabierać" kolejne technologie które są użyte. W tym króluje Microsoft. W Internet Explorer 5 pododawał mnóstwo technologii do przegladarki, to jednak nie potrafił utrzymać tempa rozwoju technologii i przeglądarki. W kolejnych wydaniach przeglądarki już "wyrzucał" to co dodał z prostego powodu tego, że łatanie luk i problemów z bezpieczeństwem użytkowników jest kosztowne. Niechaj biorą przykład z ewolucji Flash Playera, kluczowa jest zgodność wstecz. Drugi powód to uruchomianie przeglądarki na najwolniejszym sprzętowo komputerze. Trzeci powód to "dać czas" na odpoczynek twórcom przeglądarek a stopniowo przestawiać użytkowników na nowe technologie. Przemawia za tym inercja żadna agencja interaktywna nie zrobi serwisu używając CSS3 i Canvas skoro to wszystko można zrobić przy uzyciu Flash Platform.. Jest wyjątek od tej reguły - iPhone, stąd to prawdopodobnie na Apple zależało na takim szybkim rozwoju silnika WebKit, żeby pokazać że przeglądarka internetowa może realizować te same rzeczy co FlashPlayer.
-- Ale Ty widzisz szansę w rozwoju przeglądarek na urządzenia mobilne?
-- Oczywiście. Programistom udało na bazie silnika WebKit zrobić jedną z lepszych przeglądarek na urządzenia mobilne - Iris Browser pod Windows Mobile. Ale na Symbiana tez tworzy się nowe przeglądarki. Przykładem takiej jest Skyfire oparta prawdopodobnie na silniku Gecko. Dla UIQ 3 wprowadzono wersję Digia@Web w oparciu o silnik WebKit. Tak naprawdę warto sprawdzić testy W3C dla urządzeń mobilnych. Z moich obserwacji wynika że za przeglądarki w Symbianie 9 odpowiada tylko jedna przeglądarka S60 Web Browser. Jako UserAgent prawie wszystkie przeglądarki pod S60 przedstawiają się że są oparte na AppleWebKit/413. Jak zajrzałem do kodów źródłowych tej przeglądarki to stwierdziłem że jej rozwój jest zamrożony (od 3 lat). Czyli jak wypuszczali ją wraz pierwszymi modelami komórek S60 3 wersji to było jednak jedna z najlepszych wtedy przeglądarek. Teraz tworząc witrynę internetową mobilną trzeba tworzyć ją pod kątem S60 Web Browser, bo liczy się wspólny najmniejszy mianownik technologii. Z jednej strony Nokia mogłaby aktualizować S60 o kolejne wydania silnika WebKit. Ale jednak lepiej nie zamartwiać developerów i użytkowników szybkimi zmianami silnika - bo trudniej dokonywać aktualizacji w starszych modelach komórek. W tej sytuacji w wygodnej sytuacji są użytkownicy Opery Mobile, albo Opery Mini. Ponieważ ich oprogramowanie nie jest tak silne zintegrowane z Symbianem jak S60 Web Browser, to jednak sprawia że użytkownicy mają komórek jakiś wybór. Jeszcze jeden powód dla którego nie zmienia się silnika w S60 jest to że ta przeglądarka może być używana przy tworzeniu aplikacji Symbiana wykorzystujących osadzanie stron HTML i skryptów w aplikacji. Przypuszczam, że Nokia wypuści kolejną przeglądarkę na S60 opartą na Qt a szczególnie na module QtWebKit

1 komentarz:

Reinmar pisze...

Wszystko spoko, wpis na pewno jest ciekawy, ale jest jeden problem - tego się NIE DA czytać. Tekst jest jednym litym blokiem, bez podziału na akapity i w za szerokiej kolumnie.

Z chęcią bym przeczytał co napisałeś, ale niestety nie mogę. Nie dam rady.