Był sobie Angular w wersji 2…

Każdy kto obraca się w okolicy technologii frontendowych jest prawdopodobnie świadom ciekawostki jaką była dosyć raptowna zmiana wersji biblioteki Angular. Przez długi czas rozwijana była pierwsza wersja, aż do wersji 1.6.4 bodajże. Odpowiednio wcześniej firma Google mówiła już o drugiej wersji, która ma na celu zadośćuczynienie grzechów pierwotnego wydania. Czy to się udało to temat na inną beczkę piwa, ale nie tak jeszcze dawno wersja ta stała się już faktem.

Wielu programistów zaczęło więc testować i oswajać się z nowym podejściem a wiele firm, w tym moja, zaczęły próbować przenosić swoje produkty lub tworzyć nowe w tej właśnie technologii. Pamiętam moje zdziwienie, gdy nagle zaczęło się mówić o Angular 4.

Co takiego? Czy ktoś z Google był pijany podczas premiery? Co się stało z wersją numer trzy?

Wersjonowanie Semantyczne

Żeby wyjaśnić co się stało trzeba zrozumiec, że Google trzyma się konwencji zwanej SEMVER, czy też Semantic Versioning. Z wolnego tłumaczenia na polski jest to wersjonowane semantyczne, a w praktyce chodzi o to, że każdy numerek w oznaczeniu wersji ma swoje znaczenie. Na ten przykład weźmy…

v3.4.1

Liczba 3 oznacza wersję „dużą”, liczba 4 przedstawia wersję „pomniejszą” a ostatnia liczba, czyli 1, reprezentuje zmiany naprawdę drobne, takie jak patche i poprawki błędów. Reguła ta również oznacza, że zmiany „duże” to zmiany, które zmieniają zasady działania biblioteki i najczęściej brak kompatybilności wstecznej (z ang. breaking changes). Wersje „pomniejsze” wprowadzają nowe funkcjonalności, ale utrzymują kompatybilność więc ten sam projekt z nową wersją minor powinien nadal działać. Na końcu zmiany „drobne”, które w zupełności nie powinny być zauważalne w sensie działania aplikacji.

Tak więc zespół od Angulara wkrótce po premierze drugiej wersji dalej pracował i usprawniał ten żywy organizm jakim jest biblioteka. Zresztą jak się potem okazało wiele do ideału w czystej wersji 2.0.0 jej brakowało, a jakże!

Biblioteka ta począwszy od tej wersji jest podzielona na paczki, takie jak core, compiler, cli (narzędzia linii komend) czy router. To właśnie ten ostatni spowodował zamieszanie, ponieważ programiści rozpędzili się ze zmianami i dojechali aż do wersji 3.3.0, gdy pozostałe paczki zostały w okolicy wersji 2.3.0. Oznaczało to nieoficjalnie, że Angular jest teraz w wersji 3.

Następnie ktoś w Google zapragnął, że numerowanie wersji powinno być konsekwentnie, co się oczywiście chwali. Decyzja zapadła więc by je wyrównać, ale jako, że wersji cofnąć się nie da, postanowiono, że operacja ta jest kolejną zmianą. Wersja trzecia zaistniała już w głowach developerów, więc nową wyrównaną i konsekwentną wersję nadano z numerem 4.

Bezbolesne zmiany

To właśnie z powyższej sytuacji wynika to drobne zamieszanie, ale jestem w stanie uwierzyć, że intencje były jak najbardziej dobre i zapowiada się, że to już koniec tego typu dziwnych zabiegów. Warto bowiem dodać, że od teraz biblioteka nazywa się Angular, niezależnie od tego czy jest to wersja 2 czy 7 a wszystkie poprzednie, czyli do 1.6.4 noszą historyczną nazwę AngularJS. Okay, Google!

p.s. Na koniec wspomnę jeszcze, że pomimo iż upgrade do wersji czwartej zawiera sporo zmian, okazuje się, że zmiany nie były tak inwazyjne i większość projektów napisanych w wersji drugiej będzie po aktualizacji dalej działać.