Upublicznienie rozwoju .NET Framework i co
to oznacza dla odbiorców technologii

Artykuły eksperckie | 29.04.2015 | Czas czytania: 11 minut

Dzisiejszy świat technologii programistycznych jest światem opartym na idei oprogramowania open source. W ten sposób z powodzeniem rozwijane są implementacje języków takich jak PHP, Python czy Ruby oraz ich biblioteki standardowe. 12 listopada 2014 roku grono to rozszerzyło się o kolejną technologię – platformę .NET Framework. Tego dnia Microsoft oficjalnie ogłosił rozwijanie centralnego punktu swojego stosu technologicznego na zasadach open source.


Nieśmiałe początki open source w Microsoft

Informacja o otwarciu rozwoju .NET Framework odbiła się szerokim echem w mediach technologicznych, z których część zdawała się być zaskoczona decyzją Microsoftu. Jednakże osoby zainteresowane środowiskiem .NET mogły zauważyć oznaki zmian w podejściu Microsoftu już w 2012 roku, kiedy to udostępniono na zasadach open source platformę ASP.NET – podzbiór .NET Framework przeznaczony do tworzenia aplikacji webowych. Cykl wydawniczy ASP.NET zakładający wprowadzanie zmian wraz z kolejnymi wersjami .NET Framework był zbyt wolny jak na ówczesne standardy, co skutkowało głosami niezadowolenia często padającymi ze strony społeczności skupionej wokół technologii. Upublicznienie rozwoju ASP.NET było podyktowane chęcią uczynienia z niej platformy nadążającej za szybko zmieniającymi się trendami w tworzeniu aplikacji webowych oraz dostosowanej do wymagań społeczności, która mogła od tej pory mieć realny wpływ na jej rozwój. Z perspektywy czasu można jednak ocenić to posunięcie, jako próbę generalną przed otwarciem platformy .NET Framework.

Warto wspomnieć, że Microsoft już raz pokazał kod źródłowy .NET Framework. Miało to miejsce w 2002 roku w ramach projektu o nazwie „Rotor”, którego część obejmowała udostępnienie uproszczonego kodu platformy w celach edukacyjnych. Tym razem mamy jednak do czynienia z czymś więcej niż tylko pokazaniem kodu źródłowego. Chodzi o zmianę podejścia do sposobu rozwoju platformy. Microsoft postanowił bowiem prowadzić dalszy rozwój .NET Framework w idei open source. Oznacza to nie tylko swobodę wglądu w kod źródłowy rozwiązania, ale przede wszystkim umożliwienie uczestnictwa w bieżącym oraz przyszłym rozwoju platformy osobom zainteresowanym.

Oczywiście ciężko wyobrazić sobie, aby proces upublicznienia rozwoju produktu o takiej złożoności, rozwijanego od 15 lat był procesem łatwym. Przeszkodą okazał się zbyt duży stopień skomplikowania infrastruktury narzędziowej wykorzystywanej wewnętrznie w Microsofcie do budowania i testowania platformy, a bez niej osoby zainteresowane nie mogłyby aktywnie uczestniczyć w rozwoju, co kolidowałoby z ideą open source. W rozwiązaniu tego problemu pomocną okazała się być obecna strategia firmy.

Open source w kontekście aktualnej strategii Microsoftu

Podczas swoich wystąpień przedstawiciele Microsoft zwykli powtarzać, że strategicznym kierunkiem rozwoju firmy są przede wszystkim technologie chmurowe i mobilne. W obu tych dziedzinach ekosystem Microsoft posiada mocną konkurencję. W przypadku rozwiązań chmurowych i serwerowych są to przede wszystkim różne dystrybucje systemu Linux, a w przypadku urządzeń mobilnych platformy Android i iOS.

W kontekście tej strategii pewnym ograniczeniem platformy .NET jest jej oficjalne wsparcie jedynie na systemach Windows. Dla konkurencyjnych platform istnieją alternatywne implementacje .NET: Mono dla rozwiązań serwerowych i desktopowych oraz Xamarin (korzystający z Mono) dla urządzeń mobilnych. Rozwiązania te nie są jednak produktami Microsoft, ani nie są przez niego oficjalnie wspierane, co w konkretnych przypadkach uniemożliwia ich zastosowanie.

Aby umożliwić realizację nowej strategii, konieczne było ponowne spojrzenie na architekturę .NET Framework. Tym sposobem z platformy wydzielony został .NET Core – podzbiór funkcjonalności zapewniający wspólne API nie tylko w ramach ekosystemu Microsoft (Windows Store, Windows Phone, ASP.NET), ale także wspierający natywnie Linuxa oraz OS X, bez potrzeby stosowania alternatywnych implementacji. Uproszczona została również infrastruktura potrzebna do zbudowania platformy, tak aby każda chętna osoba mogła zrobić to we własnym zakresie, przy pomocy udostępnionych narzędzi. Tym sposobem powstały dwa warianty platformy. Pierwszym jest znany nam w obecnej postaci .NET Framework, którego źródła zostały udostępnione do wglądu jako implementacja referencyjna. Drugi to wspomniany wcześniej .NET Core – wieloplatformowy, zunifikowany podzbiór .NET Framework, przeznaczony do rozwoju w idei pełnego open source.

Struktura-.NET-Framework

Struktura .NET Framework po wydzieleniu .NET Core.

Dwa słowa kluczowe, które Microsoft wymienia w kontekście upublicznienia rozwoju platformy .NET to „wieloplatformowość” oraz „społeczność”.

Cel: wieloplatformowość

Udostępnienie implementacji referencyjnej .NET Framework z pewnością przyczyni się do szybszego rozwoju wcześniej wspomnianych platform Mono i Xamarin. Obserwując repozytoria Mono, już teraz widoczne jest zwiększenie tempa rozwoju, mimo krótkiego czasu jaki upłynął od udostępnienia źródeł referencyjnych. Implementacja funkcjonalności .NET Framework w kontekście alternatywnych platform, bez dostępu do oryginalnych kodów źródłowych, jest znacznym wysiłkiem. Teraz dzięki uzyskanym informacjom deweloperzy pracujący nad Mono mogą nie tylko sprawniej uzupełniać i poprawiać zaimplementowane wcześniej obszary, ale w niektórych przypadkach wręcz podmienić je w całości na te obecne w .NET Framework, celem zapewnienia wysokiego poziomu kompatybilności.

Szybszy rozwój Mono oraz natywne wsparcie dla Linuxa i OS X w .NET Core z pewnością ułatwi platformie .NET ekspansję na konkurencyjne dla Windows systemy. To z kolei umożliwi dotarcie do programistów zainteresowanych możliwościami oferowanymi przez .NET, ale niekoniecznie gustujących w systemach z rodziny Windows.

Możliwość uruchamiania aplikacji ASP.NET na serwerach pracujących pod kontrolą dystrybucji Linuxa, będzie szansą na dotarcie do użytkowników, dla których utrzymywanie aplikacji na własnym serwerze pracującym pod kontrolą Windows Server byłoby zbyt kosztowne. Możliwe stanie się zaoferowanie oprogramowania napisanego w .NET użytkownikom, którzy swoją istniejącą infrastrukturę oparli na systemach z rodziny Linux, ale jako platformę rozwoju oprogramowania chcieliby wybrać .NET. Tym samym nieaktualnym stanie się argument przeciwników platformy .NET, jako zbytnio uzależniającej od jednego dostawcy oprogramowania.

W kontekście aplikacji mobilnych wieloplatformowość .NET Core oraz przyspieszenie rozwoju projektu Xamarin pozwala przypuszczać, że stanie się możliwe tworzenie aplikacji, które w większym stopniu niż obecnie będą mogły wykorzystać wspólną bazę kodową pomiędzy wersjami na systemy Android, iOS oraz Windows, zapewniając przy tym użytkownikom doznania w pełni zgodne z platformą docelową.

Wzrost-aktywności-zmian-kodu-źródłowego-600x95

Wzrost aktywności zmian kodu źródłowego w oficjalnym repozytorium platformy Mono w serwisie GitHub.
Czerwoną linią zaznaczono moment otwarcia rozwoju platformy .NET. (źródło: https://github.com/mono/mono/graphs/commit-activity)

Jednakże obsługa wielu platform w rozumieniu Microsoft nie oznacza tylko rozszerzenia możliwości wyboru środowiska docelowego dla aplikacji. To także swoboda wyboru systemu oraz edytora, w którym oprogramowanie będzie tworzone. W tym celu udostępniony został, również na zasadach open source, zestaw narzędzi pozwalających na budowanie aplikacji .NET. Narzędzia te zostały już wykorzystane w niezależnym projekcie „Omnisharp”, którego celem jest udostępnienie funkcjonalności znanych z Visual Studio, takich jak Intellisense, czy zarządzanie referencjami w popularnych edytorach tekstowych takich jak: Atom, Brackets, Emacs, Sublime Text oraz Vim. Takie posunięcie pozwoli dotrzeć do deweloperów preferujących systemy inne niż Windows, na których nie jest dostępne flagowe środowisko programistyczne .NET – Visual Studio.

Cel: społeczność

Microsoft zdaje sobie sprawę, że zapewnienie dynamicznego, wieloplatformowego rozwoju platformy, nie jest możliwe bez ścisłej współpracy i wsparcia ze strony społeczności skupionej wokół technologii.

Aby dotrzeć do jak największego grona osób zainteresowanych rozwojem platformy, na miejsce udostępnienia projektów wchodzących w skład .NET Framework wybrano serwis GitHub. Jest to wybór ciekawy, biorąc pod uwagę, że Microsoft posiada swój własny serwis hostowania projektów – CodePlex. Przewagą GitHuba jest jednak zdecydowanie większa baza użytkowników, a co za tym idzie potencjalnych deweloperów platformy. Wybór ten obrazuje determinację z jaką Microsoft chce prowadzić swoje projekty w idei open source, bowiem o sile projektu open source stanowi społeczność skupiona wokół niego.

O zaangażowaniu firmy świadczy nie tylko udostępnianie kodu źródłowego .NET Core, związanych z nim bibliotek oraz narzędzi, czy też przyjmowanie zmian w kodzie proponowanych przez użytkowników. Na GitHubie rozwijana jest również dokumentacja projektowa, tworzone są plany rozwojowe, prowadzone są dyskusje na temat implementacji bieżących oraz przyszłych funkcjonalności. Dzięki takiemu podejściu użytkownicy nie tylko na bieżąco mogą śledzić w jakim kierunku podąża rozwój platformy, ale przede wszystkim mogą aktywnie uczestniczyć w kształtowaniu jej rozwoju. Pozwoli to uniknąć sytuacji mającej miejsce jeszcze do niedawna, kiedy to nowe funkcjonalności były opracowywane w zaciszu zespołów projektowych, a dopiero po ukończeniu lub bliskie ukończenia były prezentowane użytkownikom. Obecne podejście zapewni zdecydowanie bardziej płynny rozwój platformy w zgodzie z oczekiwaniami odbiorców.

Angażując społeczność w rozwój platformy, Microsoft liczy zapewne na przyspieszenie jej rozwoju, szczególnie w kontekście planowanej wieloplatformowości. Zapewnienie zgodności z różnymi platformami wymaga dużych nakładów pracy oraz znajomości nie tylko samego .NET Framework, ale także środowiska docelowego. Stąd też ważne jest pozyskanie ekspertów będących pasjonatami technologii, którzy udostępnią swoją wiedzę i umiejętności w celu rozwoju platformy. Proces eksperckiego wsparcia ze strony użytkowników już ma miejsce. Podczas gdy Microsoft zapowiedział skupienie się na rozwoju .NET Core dla Linuxa i OS X dopiero po dostarczeniu wersji dla Windows, w repozytoriach projektu już można zaobserwować aktywny rozwój obszarów kodu dotyczących platform Linux oraz OS X, prowadzony przez społeczność.

Przyspieszony rozwój platformy .NET na zasadach open source, oprócz niewątpliwych zalet, nasuwa również pewne wątpliwości. Główną z nich jest możliwe obniżenie jakości kodu, zmniejszenie kontroli nad nim, a co za tym idzie utracenie stabilności platformy, która jest jedną z jej głównych zalet. Obawy te wydają się być jednak bezpodstawne, bowiem nad rozwojem projektów wchodzących w skład .NET Framework nadal czuwają zespoły projektowe z Redmond. Każda zmiana proponowana przez użytkowników jest szczegółowo omawiana i dyskutowana, zanim zostanie podjęta decyzja o jej akceptacji, bądź też odrzuceniu.

Nowe podejście do rozwoju platformy będzie sprzyjało częstemu publikowaniu nowych wersji jej składowych. Dla części użytkowników chcących zawsze wykorzystywać najnowsze technologie będzie to niewątpliwą zaletą. Jednakże u części użytkowników ceniących sobie stabilność platformy może to z kolei rodzić obawy o niedostatecznie ustabilizowanie funkcjonalności. Microsoft uspokaja jednak, że możliwość częstych aktualizacji fragmentów platformy jest opcjonalna i tak jak dotychczas dostępne będą również okresowe aktualizacje zbiorcze, dla odbiorców wymagających dłuższego okresu stabilizacji przed wprowadzeniem zmian. Ponadto przyspieszony cykl wydawniczy dotyczyć będzie wyłącznie .NET Core. Tradycyjny .NET Framework będzie udostępniany w dłuższych odstępach czasowych, celem zapewnienia maksymalnej kompatybilności i stabilności dla istniejących już aplikacji.

Cykl-wydawniczy-platformy-.NET

Cykl wydawniczy platformy .NET w nowej odsłonie.

Zaangażowanie społeczności w rozwój platformy, powinno doprowadzić wręcz do poprawy jakości projektu. Wśród użytkowników można bowiem często spotkać osoby specjalizujące się w uzupełnianiu dokumentacji, zarówno wewnątrz kodu jak i projektowej, czy też osoby szukające konkretnych podatności na błędy. Użytkownicy mogą nie tylko zgłaszać znalezione błędy, ale także sami je naprawiać. Przykłady innych otwartych technologii pokazują, że społeczność jest w większości przypadków w stanie szybciej znaleźć błąd i zaproponować jego rozwiązanie, niż zespół pracujący nad danym projektem. Przykładem niech będzie sytuacja, kiedy w trakcie tworzenia aplikacji zostanie znaleziony błąd w kodzie .NET Core, którego nie można ominąć (i w obecnej sytuacji nie powinno się omijać) w kodzie aplikacji. Można wówczas sprawdzić, czy został on już zgłoszony i czy istnieje już dla niego rozwiązanie. Jeśli tak nie jest, to możliwe jest wprowadzenie potrzebnych zmian w fragmencie .NET Core we własnym zakresie, a następnie wykorzystanie go w tworzonej aplikacji. Oczywiście wskazane jest zgłoszenie stworzonej poprawki w oficjalnym repozytorium platformy, zgodnie z ideą open source, tak aby mogła zostać zrewidowana i umieszczona w kolejnej wersji platformy.

Darmowe zintegrowane środowisko programistyczne

Aby umożliwić społeczności aktywne uczestniczenie w rozwoju platformy, konieczne jest udostępnienie odpowiednich do tego celu środków. Oprócz wspomnianych wcześniej narzędzi umożliwiających rozwój .NET Framework na systemach Linux oraz OS X, Microsoft nie zapomniał o użytkownikach swojego macierzystego systemu. Dla nich, wraz z ogłoszeniem otwarcia platformy .NET, udostępniono darmową wersję zintegrowanego środowiska programistycznego Visual Studio. Wersja ta, oznaczona jako „Community Edition”, oferuje funkcjonalność komercyjnej wersji „Professional”. Może być wykorzystywana bez ograniczeń w celach edukacyjnych oraz w projektach open source, a także w celach komercyjnych w przypadku indywidualnych deweloperów. W przypadku firm poniżej 250 pracowników oraz poniżej 1 miliona dolarów rocznego dochodu Visual Studio Community Edition może być wykorzystywane przez maksymalnie 5 pracowników.

Dzięki zastosowanemu licencjonowaniu darmowe Visual Studio jest gratką nie tylko dla osób chcących wesprzeć rozwój platformy .NET, ale także dla freelancerów, startupów oraz małych firm nie spełniających wymagań programu BizSpark, czy też któregoś z programów partnerskich Microsoftu. Mogą one teraz korzystać z profesjonalnego środowiska programistycznego całkowicie za darmo, ograniczając tym samym nakłady ponoszone na wsparcie wybranej technologii, co może być szczególnie istotne na początkowym etapie działalności. Darmowa wersja Visual Studio może być także ciekawą ofertą dla programistów nie związanych z platformą .NET, w dla web developerów, dzięki oferowanemu przez nią rozbudowanemu wsparciu dla technologii webowych takich jak: HTML, CSS, Less, Sass, JavaScript, CoffeeScript, TypeScript oraz Node.js.

Oczywiście należy zauważyć, że już wcześniej dostępne były darmowe wersje Visual Studio pod nazwą „Express”, jednakże każda z nich, w przeciwieństwie do wersji komercyjnych, umożliwiała pisanie aplikacji jedynie pod wybrany fragment platformy .NET (osobne wersje dla aplikacji webowych, desktopowych oraz aplikacji mobilnych), a także nie oferowały wsparcia dla mechanizmu wtyczek, które dobrane w odpowiedni sposób rozszerzają możliwości środowiska i usprawniają pracę.

Otwarta i wieloplatformowa przyszłość Microsoft

Tendencja do „otwierania się” Microsoftu zauważalna jest również w działaniach niezwiązanych z platformą .NET. Udostępnienie darmowej wersji pakietu Office użytkownikom systemów Android i iOS, a na platformie Azure oferowanie wsparcia dla konkurencyjnych technologii takich jak: Java, Node.js, PHP, Python, mechanizmu Docker, czy też platformy Hadoop. Te działania pokazują, że firma podchodzi całościowo do realizacji swojej strategii, a także pozytywnie wpływają na wizerunek firmy, która do tej pory była uważana za zainteresowaną tylko własnym ekosystemem.

Patrząc na poczynania Microsoftu widać, że podąża on ścieżką, która doprowadzi do realizacji założonej strategii. „Otwarcie” .NET Framework, to nie tylko udostępnienie kodu źródłowego. To przede wszystkim otwarcie się na alternatywne dla Windows platformy oraz na społeczność użytkowników skupionych wokół technologii. To chęć dotarcia do jak najszerszego grona programistów, ekspertów technologicznych oraz nabywców oprogramowania. To chęć pokazania i zapewnienia, że .NET jest dynamiczną i perspektywiczną technologią, rozwijaną w zgodzie z oczekiwaniami odbiorców, z którą warto wiązać swoją przyszłość. Zaangażowanie i konsekwencja z jaką jest to realizowane pozwalają ze spokojem i zaciekawieniem patrzeć na przyszłość platformy .NET, a także wybierać ją i polecać do realizacji kolejnych projektów informatycznych.

Autorem wpisu jest

Łukasz Żwak, JCommerce SA

.NET Developer

Programista .NET, podziwiający Billa Gatesa za jego wizjonerstwo, Steve’a Ballmera za prezencję, a Satyę Nadella za połączenie tych dwóch osobowości w jedną. W wolnym czasie poszukuje Świętego Graala wśród architektur systemów informatycznych. 

Komentarze

  • Aktualnie brak komentarzy.

Skontaktuj się z nami