Ostatnio Arek popełnił post na temat ceny darmochy. Szczerze, takie rzeczy mają prawo się dziać, w końcu, i tak mamy dostęp do naprawdę całkiem spoko bazy danych. A co w przypadku rzeczy które są „prawie” darmowe?

Co to znaczy prawie?

Ja nazywam „prawie” darmowe rzeczy, które są darmowe do ściągnięcia i nawet na siłę da się w nich za darmo programować, ale nie jest to już takie proste. Czyli patrząc na nasz ekosystem, cała technologia MS jest prawie darmowa. Prawie, bo by działała (uwaga nie mówię tutaj o jakiś konkretnych przypadkach, że się da na linuxie itp.) potrzeba jest Windowsów i VS.

A dlaczego cena?

Parę lat temu stworzyliśmy wraz z jednym gościem aplikację, która wyświetlała dane na temat różnych miejsc na mapie, jak i dawała użytkownikowi przeglądanie szczegółowych danych (w tym kategoryzacji, oglądania jak się dany punkt ma do innych itp. itd.) w kontrolce stworzonej przez MS – PivotViewer. O której zresztą wspominałem parę razy.

Teraz, po 4 latach musiałem dokonać migracji rozwiązania ze starego systemu logowania na nowy. Niby prosta sprawa, paczka nuget przygotowana wystarczy ją zainstalować i podać parę parametrów i już śmiga – robota na 5-10 minut.

No właśnie… ta cena… wykorzystaliśmy kontrolkę PivotViewer która była dodatkiem do SL. To się zmieniło, teraz jest to część Silverlight 5.0. Niby fajnie bo MS zawsze dwa o kompatybilność wstecz. W końcu dalej mamy Linq2Sql. I fajnie, jak ktoś zainwestował czas i pracę to w tą technologię to może ją wciąż wykorzystać, choć zalecana jest migracja.

Jednak z PivotViewer MS stwierdził, „A ch..j” i przepisał ją zmieniając całkowicie API jak i nawet przestrzeń nazw. Jedyna chyba wspólna rzecz jaka pozostała to nazwa kontrolki – na szczęści wciąż się nazywa PivotViewer.

Co to spowodowało? To, że praca 5 minutowa zmieniła się na 7h walkę z SL i z kontrolką dla której dokumentacja to jakaś porażka.

Dla samego prostego przykładu, kiedyś elementy ładowało się za pomocą metody LoadCollection do której podawało się url do kolekcji i stan kolekcji (co powinno być zaznaczone/wybrane). W najnowszej wersji nie ma już tej metody, za to klasa CxmlCollectionSource która umożliwia nam załadowanie kolekcji i wykonanie odpowiednich kroków po tym jak kolekcja się załadowała.

Oki, jedna tam metoda nie działa, no to dalej była własność CurrentItemId ustawiająca aktywny element po ID. Teraz jest już SelectedItem – czyli po item a nie po id. Takich zmian jest masa, nie licząc sposobu dodawania custom actions do elementu.

A to wszystko prawie bez dokumentacji (gdyby nie kilka blog postów które o dziwo piszą o nowej kontrolce a nie starej).

Nie twierdzę, że nowe API jest złe, podobają mi się pewne zmiany które są ku MVVM i które umożliwiają lepszą integrację ze wzorcem MVVM, ale zmiany były drastyczne, na tyle, że jedyną linijkę kodu jaką mogłem pozostawić z poprzedniej wersji kodu to deklaracja elementu w XAML. Całą resztą trzeba było napisać na nowo.

Wyobrażacie sobie taką zmianę z MVC 3 na MVC 4/5? Nagle się okazuje, że cały wasz projekt jest skazany na bycie legacy bo całe API się zmieniło z wersji na wersję.

Ale może to jest przypadek Silverlight gdyż ESRI zrobiło jeszcze gorzej – co wyszło w praniu. Projekt powstawał przy wersji 2.2 SDK do ESRI Silverlight a aktualna wersja jest 3.2. Jak się okazało, ESRI usunęło całą kontrolkę Toolbar pomiędzy wersjami 2.3 i 3.0 bo stwierdziła, że jest nie potrzebna. Zamiast tego zaoferowała… przepisanie projektu na inny kontener bo zastępstwa nie dała i także migracji też nie udostępniła.

Podsumowanie

Jak widać na przykładzie FireBird darmowe produkty mogą mieć jakieś wady i nie być dopracowane, ale przeważnie kiedy robią breaking change informują o tym szeroko, pokazują co jest zmienione i na co trzeba zmienić. Open source dba o swoich użytkowników.

W przypadku SL, oba produkty są „pośrednio” płatne, ESRI SDK nic nam nie da jak nie mamy serwera ESRI do którego możemy się odwołać by wyświetlić mapę, PivotViewer – nic nam nie da na innych OS bo możemy go jedynie wyświetlić na Win lub OSX. Więc musimy mieć licencję czy to na windows, czy to na VS, trzeba wybulić.

Zastanawia mnie więc fakt, kto podejmuje takie decyzje, by wszystko zmienić i wypieprzyć do kosza coś na czym może polegać wielu programistów? W szczególności iż z Pivot czeka mnie jeszcze trochę pracy bo to nie był jedyny projekt z niego korzystający.

A jeżeli wciąż uważacie, że all jest ok i świetnie to wyguglujcie sobie „Silverlight PivotViewer”, kliknijcie na pierwszy link a następnie przejdźcie do dokumentacji. Tak o to MS zadbał o to byśmy wiedzieli co robić :)

PS.: wiem, że SL jest martwy, to jednak nie zmienia faktu, że takie rzeczy nie powinny mieć prawa bytu IMO.

A co wy o tym sądzicie? Macie inne przykłady softu który tak się zachowuje a jest płatny? Czy można więc mówić o „cenie darmochy”? czy raczej o „stanie aktualnego ekosystemu”?