Podstawy#
Wstęp#
Językiem znacznikowym dla sieci WWW zawsze był HTML. HTML został zaprojektowany przede wszystkim jako język semantycznego opisu dokumentów naukowych, ale na przestrzeni lat zaadoptowany został do opisu różnych typów dokumentów.
Głównym obszarem, który nigdy nie został adekwatnie otoczony opieką i należycie rozwinięty przez HTML były aplikacje internetowe (Web Applications). Nowa odsłona w postaci HTML5 ma naprawić sytuację, ponadto dołożono wszelkich starań, by rozwiązać kilka innych, ważnych kwestii poruszanych na przestrzeni ostatnich lat.
Rys historyczny#
Szczegóły rozwoju HTML-a do wersji 4.01 oraz XHTML 1.x opisałem w rozdziale "Historia HTML-a". W dużym skrócie można powiedzieć, że na przestrzeni lat 1990-1995 HTML przeszedł szereg zmian i doświadczył wielu rozszerzeń, najpierw pod nadzorem CERN, a następnie w IETF.
Wraz z utworzeniem W3C kierunek rozwoju HTML przybrał na sile. Pierwszą nieudaną próbą wdrożenia nowego standardu był HTML 3.0 w 1995 roku, który ostatecznie został zastąpiony w 1997 roku wersją 3.2. HTML4 pojawił się jeszcze tego samego roku, następnie opublikowano wersję 4.01 (nanoszącą wiele poprawek).
W kolejnym roku członkowie W3C postanowili wstrzymać rozwój HTML-a, i rozpoczęli pracę nad jego XML-owym odpowiednikiem, nazwanym XHTML. Pierwszym krokiem było przeformułowanie HTML4 na wersję XML, znanym jako XHTML 1.0, gdzie nie wprowadzono żadnych nowych funkcji, z wyjątkiem nowej serializacji. Całość ukończona została w roku 2000. Po wydaniu XHTML 1.0 członkowie W3C skupili się na rozszerzaniu XHTML-a, wprowadzając tzw. modularyzację (dostępną w XHTML 1.1). Równolegle z tym, W3C pracowało nad nowym językiem, który nie był kompatybilny (zgodny) z wcześniejszymi językami HTML oraz XHTML, nazywając go XHTML2.
Mimo że rozwój HTML został wstrzymany na 1998 roku, część API dla przeglądarek zostało określonych i opublikowanych pod nazwą DOM Level 1 (1998 rok), oraz DOM Level 2 Core i DOM Level 2 HTML (począwszy od 2000 roku a skończywszy w latach 2003). Wysiłki standaryzacyjne zostały zakończone wraz z wydaniem specyfikacji DOM Level 3 (2004 rok).
W 2003 roku opracowano XForms, czyli następną generację formularzy internetowych, która wywołała ponowne zainteresowanie rozwojem HTML-a. Wdrażanie XML-a jako technologii webowej zostało ograniczone jedynie do nowych technologii (takich jak RSS i późniejszy Atom), a nie jako zamiennik istniejącego języka HTML.
Szybko zdano sobie sprawę, że XHTML był martwy, a wprowadzenie XHTML 2.0 z góry skazano na porażkę (niechęć ze strony twórców oprogramowania). Niestety, W3C z uporem maniaka obstawała dalej przy koncepcji XHTML2. Impas nie mógł trwać długo. Mozilla Fundation oraz Opera Software przedstawiły swoje stanowisko na warsztatach W3C (czerwiec 2004 rok), skupiając się na rozwoju technologii, które są wstecznie kompatybilne z istniejącymi przeglądarkami, wraz ze wstępną specyfikacją Web Forms 2.0. Na nieszczęście (a raczej szczęście), propozycja została odrzucona (8 głosów za, 14 przeciw dalszemu rozwojowi HTML-a).
Pod koniec miesiąca tego samego roku powołano do życia grupę WHATWG (Web Hypertext Application Technology Working Group). Nowym silnym sprzymierzeńcem ledwo co powstałej ekipy została firma Apple. Grupa szybko ogłosiła draft kolejnej specyfikacji Web Applications 1.0. Oba dokumenty (propozycje) zostały połączone w całość pod nazwą HTML5. WHATWG został oparty na kilku podstawowych zasadach, w szczególności, że technologie muszą być kompatybilne wstecz, że specyfikacje i implementacje muszą sprostać nawet jeśli oznacza to zmianę specyfikacji, a nie implementacji, oraz że specyfikacje muszą być na tyle szczegółowe, żeby implementacje mogły osiągnąć pełną interoperacyjność bez tzw. inżynierii wstecznej (reverse-engineering) w każdej z nich.
Więcej ciekawych informacji na temat WHATWG można znaleźć w anglojęzycznym FAQ. Istnieje polski odpowiednik, niestety od dawna nie jest aktualizowany.
Prace WHATWG trwały szybko, ostateczne decyzje podejmowała jedna osoba - przewodniczący (Ian Hickson, jeden z twórców Opery, obecnie pracuje w Google), w przeciwieństwie do modelu głosowania przyjętego przez W3C. Co więcej, efekty pracy były ciepło przyjmowane przez społeczność. Nowości szybko pojawiały się w przeglądarkach (Firefox, Opera, Safari), także Google, będące nowym graczem na rynku przeglądarek od razu nastawiało się na obsługę HTML5. Szerokopasmowy dostęp do internetu spopularyzował usługi audio oraz wideo, pojawiły się smartfony i tablety, które w największym stopniu nastawione są na aplikacje webowe. Dynamiczny rozwój branży niejako wymusił przyjęcie szybszego modelu rozwoju technologii WWW (w tym języków znacznikowych).
Widząc takie zainteresowanie nowym pomysłem, W3C ostatecznie poległo, nie miało innego wyjścia jak przyjęcie obecnej wersji HTML5 jako punktu wyjścia dla nowej grupy roboczej (W3C HTML WG), powołanej w 2007 roku. W styczniu 2008 roku grupa opublikowała pierwszy draft specyfikacji, której znaczna część była już obsługiwana przez przeglądarki, mimo że dokument nie uzyskał statusu rekomendacji.
Z końcem 2009 roku grupa pracująca nad standardem XHTML2 została rozwiązana, a obecnie obowiązujące specyfikacje XHTML 1.0 i 1.1 zamrożone w aktualnej postaci. Celem organizacji było przyśpieszenie prac nad HTML5, aby jak najszybciej wdrożyć standard w życie.
Bardzo fajny przegląd historyczny dotyczący HTML-a znajduje się na stronie W3C. Zawarto w nim wszystkie istotne wydarzenia, które nastąpiły od 1997 roku.
Rekomendacja W3C (zakończenie prac)#
Szacuje się, że standard zostanie ostatecznie zamrożony w 2014 roku. Aby dokument stał się rekomendacją W3C muszą powstać co najmniej dwie jego pełne implementacje. W wywiadzie dla TechRepublic Ian Hickson wspomniał, że może to nastąpić około 2022 roku, a nawet nieco później. Tą drugą datą nie należy się zbytnio przejmować, niektóre z cech HTML 4.01 nie są obsługiwane przez wszystkie przeglądarki po dziś dzień. W przypadku HTML5 implementacje idą naprawdę szybko, już teraz spora części specyfikacji jest stabilna i może być stosowana w nowoczesnych projektach.
Taki stan rzeczy jest bardzo ciekawy, ponieważ specyfikacja nie może osiągnąć statusu rekomendacji, dopóki nie będzie poprawnie wdrożona przynajmniej w dwóch programach. Dlatego przeglądarki internetowe systematycznie implementują wiele nowości już teraz, tak by cały proces standaryzacyjny został jak najbardziej skrócony.
Samo potwierdzenie zgodności implementacji ze specyfikacją odbędzie się poprzez przeprowadzenie tysięcy testów (20000 testów to najprawdopodobniej minimalna liczba). Przygotowanie i napisanie tak wielu testów (nie zapominając jednocześnie o pracy implementatorów) może uświadamiać, dlaczego całkowity proces ukończenia prac nad nowym HTML-em został oszacowany na tak odległe lata.
Co istotne, grupa WHATWG przestała wersjonować poszczególne wersje HTML-a, nazywa swój dokument roboczy po prostu "HTML Living Standard". W3C pozostało przy pierwotnej nazwie HTML5.
Dopiero 17 grudnia 2012 roku W3C opublikowało kompletny dokument HTML5 oraz Canvas 2D. Co prawda wciąż są to kandydujące rekomendacje (Candidate Recommendation), ale do uzyskania statusu rekomendacji brakuje niewiele. Jest to zachęta dla firm oraz deweloperów do korzystania ze stabilnego produktu przez następnych kilka lat.
Pod koniec 2012 roku W3C zaprezentowało dokument z którego wynika, że HTML5 może uzyskać status rekomendacji już w 4 kwartale 2014 roku, a HTML 5.1 w czwartym kwartale 2016 roku. HTML5 zawierać będzie tylko funkcje, które są stabilne, dobrze opisane i zaimplementowane w obecnych na rynku przeglądarkach, a usunięte zostaną wszystkie elementy sprawiające problemy. HTML 5.1 ma już zawierać elementy, które w momencie zatwierdzenia HTML5 będą jeszcze niestabilne (a także kolejne nowości), ponadto jego opis będzie bardziej modularny (już teraz HTML5 ma sporo osobnych modułów). Wtedy też wydany zostanie szkic HTML 5.2.
Widzimy więc, że odległa wizja 2022 roku została podana i rozdmuchana w Internecie zbyt pochopnie. Sama praca nad językiem została zmieniona. Od tej pory będą prowadzone jednoczesne prace nad dwoma wersjami specyfikacji. Pierwszy dokument będzie zawierał to co stabilne i już wdrożone (wersja ukończeniowa), drugi natomiast wprowadzi mniej stabilne rozwiązania oraz kolejne nowości (wersja rozwojowa). Dzięki temu tempo prac nad standaryzowaniem języka HTML zostanie usprawnione i przyspieszone.
Logo HTML5#
W dniu 18 stycznia 2011 roku, W3C wprowadziło oficjalne logo dla HTML5. W przeciwieństwie do poprzednich znaczków, obecne logo nie oznacza zgodności ze standardem. Raczej stanowi wizualny drogowskaz dla szerokiego stosowania otwartych technologii internetowych, takich jak HTML5, CSS, SVG, WOFF i innych.
Popularność#
Według raportu opublikowanego w dniu 30 września 2011 roku, 34 ze 100 najpopularniejszych stron internetowych używało języka HTML5. Migracja przebiega powoli ze względu na starsze przeglądarki oraz dalsze prace nad różnymi specyfikacjami. Nie bez znaczenia jest także silna kompatybilność wsteczna nowego języka HTML5, która pozwala na zwlekanie z przesiadką.
Należy zauważyć, że nowoczesne przeglądarki stosują tylko najnowsze parsery (przystosowane do obsługi HTML5), a mimo to dobrze napisane strony (w starszych standardach) wciąż działają tak samo, bez konieczności nanoszenia jakichkolwiek poprawek.
Przeglądarki nie wdrażają HTML+, HTML2, HTML 3.2, HTML4, HTML 4.01 itd., w postaci osobnych wersji. Posiadają tylko jedną implementację, która pokrywa wszystkie wersje jednocześnie. Najnowszy HTML5 definiuje: jak napisać przeglądarkę (lub inną implementację), która obsłuży wszystkie poprzednie wersje HTML-a tak samo dobrze, jak najnowsze funkcje. I tak właśnie powinien wyglądać dobrze zaprojektowany język znacznikowy przeznaczony dla WWW. Plany związane z narzuceniem XHTML2 były raczej chwilowym wygłupem, który w porę został zweryfikowany przez społeczność odpowiedzialną za rozwój przeglądarek internetowych.
Co dalej?#
Można powiedzieć, że HTML5 jest na ukończeniu, zostanie tylko zamrożenie specyfikacji, wykonanie ogromnej liczby testów oraz oczekiwanie na dwie pełne implementacje. Życie nie lubi próżni, ludzie odpowiedzialni za rozwój HTML-a nie będą stali w miejscu.
Jeśli chodzi o WHATWG kolejne nowości są dodawane w bieżącym dokumencie, który jak już wspomniałem, określony został jako "Żywy Standard HTML" (HTML Living Standard). Nie będzie żadnego podziału na kolejne wersje, rewizje itp. zabiegi.
W3C jako formalna organizacja musi postępować według pewnych reguł. Członkowie ekipy postanowili nie dodawać niczego nowego do już przygotowanej specyfikacji. Kolejnym etapem rozwoju ma być HTML.next, będący kontynuacją (następcą) HTML5. Na chwile obecną są to odległe plany, każdy może zgłosić swoje pomysły odnośnie nowego standardu. Niektóre z postulatów są interesujące, np. natywne wsparcie kolorowania składni w elementach <code>
.
HTML.next określa jedynie nowe elementy i atrybuty, ale nie nowe API. Michael Smith (redaktor W3C) zebrał wszystkie propozycje poleceń, które są planowane z kolejną wersją HTML-a, i które mogą być częścią języka HTML 5.1, HTML 5.2 lub HTML6.
Wyraźnie widać, że Internet nie będzie na nikogo czekał, aż ktoś go dogoni. Nie ma miejsca na przestoje, rozwój musi trwać dalej. Obecna ilość nowego materiału (nowych specyfikacji) przy tworzeniu nowoczesnych aplikacji webowych jest tak duża, że ciężko sobie wyobrazić co przyniesie przyszłość. Ktoś kiedyś powiedział, że dobry język to taki, który jest niewielki objętościowo, ale ma nieograniczone możliwości. Czy taki jest HTML5? Nie sądzę, prędzej czy później powstanie coś bardziej kompaktowego. Nie sztuką jest dokładanie wszystkiego, co przyjdzie do głowy, ale stworzenie czegoś optymalnego, co dla przeciętnego programisty nie będzie stanowiło większego problemu w zastosowaniu.