Kompatybilność wstecz zabija!
Tak mnie naszło po przeczytaniu kilku wypowiedzi na forach internetowych. Użytkownicy płaczą, że im na Vista nie działają programy z XP (bo faktycznie nie wszystkie przydatne działają), że gry z PlayStation 2 nie działają na trzeciej generacji konsoli, że nowy Word domyślnie zapisuje pliki w dziwnym formacie
(docx) i nie daje się ich odczytać w starszych wersjach pakietu Office (bo o instalacji plugina nie ma w ich przypadku mowy)...
I bardzo dobrze, że się nie da! Jako użytkownicy końcowi chcielibyśmy, żeby raz zainwestowane pieniądze (np. raz kupiony program czy gra) nie przepadły wraz z nadejściem kolejnej wersji konsoli/systemu operacyjnego/czegoś tam. Podejście - wydawałoby się - całkiem słuszne, bo w końcu jak coś kupujemy, to nie po to, żeby za rok czy dwa okazało się, że mamy już staroć, która w dzisiejszych czasach może robić jedynie za ozdobę na półce.
Tyle, że takie myślenie szkodzi również użytkownikom. Twórcy konsoli - musząc zadbać o zgodność z wcześniejszymi produktami - podwyższają cenę, bo rośnie nakład pracy (a czasem i materiałów). Do tego w każdym kolejnym update trzeba również pamiętać o produktach poprzedniej generacji
, dlatego nowe wersje pojawiają się rzadziej, przynoszą mniej zmian i nie zadowalają ani programistów, ani odbiorców. Czyli - mówiąc w skrócie - stajemy w miejscu, chcąc cały czas pamiętać o tym, co wyprodukowaliśmy wcześniej.
Jako przykład myślenia odwrotnego mógłbym tutaj podać Apple. Gdy firma wypuszcza na rynek nową wersję iPoda, stare są automatycznie zapominane. Może nie do końca, bo oczywiście gwarancja, czy pomoc techniczna, dalej istnieją. I tak powinno to wyglądać wszędzie. Dlatego Apple tak szybko się rozwija - bo gdy jakiś starszy sprzęt nie dogada się z nowszym nic sobie z tego nie robią. Przepraszamy, ale technika idzie do przodu - my razem z nią.
Z punktu widzenia programisty/twórcy wygląda to trochę inaczej. Rok 2000 - tworzymy rozbudowaną aplikację do prowadzenia katalogu zdjęć. Baza danych oparta jest na wymyślonym przez nas formacie i sprawuje się świetnie - wszyscy sobie program chwalą, kupują, używają i są bardzo zadowoleni. Nadchodzi rok 2007 i wszystko się zmienia. Teraz dużo przyjemniej byłoby oprzeć naszą bazę danych o coraz popularniejszy XML. Decydujemy się przepisać program od zera, jednocześnie zmieniając trochę jego strukturę i dodając sporo nowości (np. współpracę z Flickr czy Picasą). Ogłaszamy, że stara wersja nie będzie dłużej rozwijana i do tego zmieniamy jej licencję na freeware. Teraz skupiamy się na nowej (nazwijmy ją 2007
) wersji naszej aplikacji i ona stanowi nasz główny produkt. Załóżmy, że całość zmieniła się tak bardzo, że jakiekolwiek korzystanie z wcześniejszej bazy danych nie jest możliwe. Zaczynamy praktycznie od zera.
Co robią użytkownicy? Oburzają się, że ich olaliśmy
, że mamy gdzieś wcześniejszych klientów
i grożą, że jeszcze nas dorwą
. ;) Czy mają rację? Ze swojego punktu widzenia być może tak, ale z punktu widzenia twórcy - mylą się w całej rozciągłości. Przy programowaniu nowej wersji mieliśmy wybór - w dalszym ciągu używać wymyślonej przez nas bazy danych, lub zyskać np. znacznie na prędkości, korzystając z XMLa. Można by również zaimplementować obsługę obu formatów. Moim zdaniem rozdzielanie kodu to najgorszy wybór. Użytkownicy również byliby niezadowoleni, bo jeden trzymałby swoje dane w starym formacie, drugi w nowym i za nic nie mogliby się dogadać (do tego ci pierwsi psioczyliby, że nie mają takich fajnych funkcji, jak ci drudzy).
Przykład z katalogiem zdjęć oczywiście potraktujcie jako jedną wielką metaforę - wiadomo, że konwersja jednej bazy danych na drugą w takim przypadku nie byłaby trudna, ale są sytuacje w których się po prostu nie da.
Takie zachowawcze działanie można ostatnio zaobserwować w przypadku Microsoftu i ich Internet Explorera. Boją się, że gdy naprawią silnik renderujący strony, rozleci się spora ich część. Mają całkowitą rację! Poleci sporo stron niedzielnych webmasterów. Pewnie nawet winę zwalą na MS. Co więc robi korporacja z Redmont? Idzie na ustępstwa - rozdziela swój kod. Internet Explorer 8 ma mieć dwa (a chodzą słuchy, że nawet trzy) silniki - jeden stary i drugi - zgodny z obecnymi standardami. Z punktu widzenia twórców stron nie ma to praktycznie znaczenia (dostawienie jednej linijki <meta /> nie będzie problemem). Z poziomu użytkowników również, bo im nie robi to różnicy. Programiści MS będą mieli znacznie więcej roboty, objętość aplikacji zwiększy się, a prawdopodobnie (odrobinę) spowolni się działanie samej przeglądarki.
Wydawałoby się, że rozwiązanie idealne, prawda? Wszystkim pasuje. Błąd. Raz, że to znowu działanie na szkodę konkurencji (bo Opera nie wyświetla tego, co IE pokazuje poprawnie!
) , dwa, że to w dalszym ciągu powolna ewolucja. Jak dla mnie - w przypadku MS potrzebujemy rewolucji. Takiej z hukiem, petardami i bólem głowy na drugi dzień.
Wróćmy do naszego programiku. Użytkownicy przez pierwsze dwa miesiące będą obrzucać nas błotem od góry do dołu. Trzeci miesiąc przyniesie migrację na nową wersję - trzeba będzie wszystkie nasze zdjęcia skatalogować raz jeszcze. Przy okazji użytkownicy pooglądają swoje zasoby, wywalą połowę, bo zupełnie nie ma sensu trzymania zdjęć nieudanych (eh te cyfrówki…) i zadzwonią do przyjaciół ze szkoły (po co komu nasza-klasa?), ;) bo przeglądając te wszystkie obrazki wróciły wspomnienia. Czwarty miesiąc to już no dobra, mam nową wersję – trochę zabawy miałem, ale teraz jest OK
). Kolejne miesiące to już pochwały i przychylne opinie (Jakie to teraz szybkie!
, integracja z Flickr wymiata!
). Użytkownicy zapominają o starej wersji, a my mamy możliwość rozwijania programu w dobrym kierunku, bo z nowym formatem bazy danych możemy zdziałać znacznie więcej. Znowu wszyscy są zadowoleni.
Dokładnie tak było z Windows XP. Pamiętacie co działo się na początku? Brakowało sterowników, większość programów z 98 nie chciała działać, a użytkownicy bluzgali na MS przy każdej okazji. Przeszło pół roku i nagle XP okazał się świetnym systemem, a dziś jest uznawany za najlepszy z rodziny Windows.
Uważam więc, że zachowywanie ciągłej kompatybilności wstecz nie jest dobrym wyjściem prawie nigdy (jakieś tam wyjątki pewnie są). Ludzie żyją za krótko, żeby czekać na powolną ewolucję - w tej dziedzinie potrzeba rewolucji z każdą nową wersją (a to już wymaga zapomnienia o tym co było kiedyś). I choć jak zwykle znajdą się malkontenci, którym ciągle coś nie pasuje (i to właśnie tych słychać najbardziej), to ciężko jechać samochodem do przodu patrząc za siebie. A jeśli rewolucja przyniesie same korzyści, to - prędzej czy później - większość przeboleje drobne niedogodności jakie na początku na pewno się pojawią i z czasem wszystkim wyjdzie to na dobre.