Cześć, jestem Umbraco - miło mi Cię poznać!

Zapewne znasz już moich kolegów - Wordpressa, Joomle, Sitecora bądź innych?
Poznaj mnie i również daj mi się poznać!

6 January, 2017

Doskonale zdaję sobie sprawę, że post ten mogą czytać zarówno osoby, które już wiedzą doskonale czym jest Umbraco (wierzę, że ostatnie lata nieudolnej ewangelizacji Umbraco w Polsce nie poszły jednak na marne!), jak i również osoby, które po raz pierwszy o nim słyszą. Bez względu na to czy jesteście osobami technicznymi z wieloletnim doświadczeniem, czy też uczniami bądź studentami, którzy szukają swojej drogi, chciałbym tym jednym wpisem wprowadzić wszystkich w temat na tyle, aby ewidentnie odpowiedzieć na pytanie czy jest to coś co będzie Was interesowało czy też nie. Nie jest to bynajmniej post targetowany w hardcorowych .NET developerów, zatem i fani Wordpressa nie powinni się obawiać i dać sobie przedstawić młodszego kolegę z podwórka CMS :) Dodatkowo również zaznaczam, że nie jest to post promocyjny / sponsorowany, a ja na siłę młotkiem nikomu do głowy nie będę wbijał, że jest to cudo, miód, orzeszki i w ogóle nie ma innych technologii poza tą. Swoim subiektywnym punktem widzenia chcę jednak opowiedzieć dlaczego wybrałem "tę" drogą, a nie inną i co dla mnie pomogło tę decyzję podjąć.

CMS, hm... czyli to taki Wordpress tylko inny?

Skoro mowa o podwórku CMS, to rozpoczynając całą historię, należy zacząć od tego, że Umbraco to system do zarządzania treścią (z ang. Content Management System - CMS). System oparty na licencji open-source, czyli z otwartym - dostępnym publicznie - kodem źródłowym, a dokładniej działający na licencji MIT (która to jest o niebo lepszą licencją niż GPLv2, na której działa wywołany już Wordpress - ale nie o tym teraz i tutaj :)). 

Podczas swoich prezentacji bardzo często wspominam o tym, że rynek systemów do zarządzania treścią jest dość duży. Tort, który wyjadają twórcy darmowych i komercyjnych systemów, w dość nieodległej przeszłości wyglądał tak jak na załączonym obrazku:

CMS-Platforms-by-Market-Share-meta-chart1-1030x730.jpeg

Próżno doszukiwać się na nim Umbraco, o którym jest tenże post. Znajduje się on w sekcji "others", czyli w niezbadanych i tajemniczych ~10% udziału w rynku. Będąc przy tym fakcie, niekwestionowaną prawdą jest jednak to, że Umbraco to najlepszy i najpopularniejszy system CMS oparty o technologię .NET i zarazem jedyny ze wszystkich, oferujących model działania całkowicie oparty na rozwiązaniu chmurowym (a.k.a. Umbraco Cloud). Ciężko również o wiarygodne dane nt. aktualnego udziału w rynku, bo konkurencja wśród systemów sprawia, iż co raz ciężej jest to rzetelnie mierzyć. Z danych udostępnionych przez Nielsa Hartvig'a - twórcę Umbraco - w trakcie Keynote na Umbraco UK Festival 2016 oraz jego małym update na Twitterze, aktualnie działa ponad 395 000 witryn live opartych o Umbraco (dane zbierane są w mechanizmu pingującego serwer Umbraco celem sprawdzenia aktualizacji).

Skąd zatem taka mała popularność tego systemu, w kraju, w którym mamy tak wielu wspaniałych programistów .NET? Nie wiem. 

Już jakiś czas temu wziąłem sobie za misję rozpopularyzowanie go w naszej ojczyźnie. Na razie bardziej przypomina to spotkania ewangelizacyjne Jezusa i jego 12 apostołów (choć nas rzadko bywa nawet 12...), lecz mam nadzieję, że takich "Jezusów" zrobi nam się więcej - w sumie również dlatego także powstał ten post i cała masa moich, jak i również firmowych planów i kroków na nadchodzący rok. W trakcie tej mojej "nieudolnej ewangelizacji" Umbraco w Polsce, stoczyłem już multum rozmów, a nawet kłótni na temat tego dlaczego tak jest, a nie inaczej. Wierzę, że sytuacja ta będzie się nieustannie zmieniać. Musimy tylko wszyscy "dać się poznać" z jak najlepszej strony i nie zamykać się na to, co nowe i nieznane. Developerzy frontendowi odkrywają co raz to nowe frameworki (czyt. "dzień bez nowego frameworka JS to dzień stracony" ;)), a patrząc na Umbraco z mojej perspektywy, jako osoby całkiem już doświadczonej w bojach, to jest to właśnie taki framework (pomimo całej mojej nienawiści do tego słowa i określenia), który w rękach programisty .NET staje się McGyver'owym scyzorykiem do zadań specjalnych (o czym zresztą prowadziłem już kilka prezentacji w grupach .NET). Nigdy jednak nie rozebrałem tego na czynniki pierwsze, próbując sobie i innym wytłumaczyć skąd ta moja fascynacja kawałkiem oprogramowania. Spróbujmy zatem zrobić to teraz.

Kończąc jednak ten etap historii i wątek - Umbraco to nie jest Wordpress napisany w technologii .NET. Z całym szacunkiem do Wordpressa i jego prostocie, zaawansowaniu i popularności pozwalającej w szybki (i tani) sposób budować witryny, blogi, czy nawet sklepy internetowe, to jednak daleko mu do elastyczności i możliwości rozszerzania go w sposób taki, jaki możemy to zrobić z Umbraco. Znajdzie się oczywiście nie jeden wojownik Wordpressa, bądź każdego z innych systemów CMS, który będzie twierdził inaczej patrząc z perspektywy osoby doświadczonej w danej technologii. Wszystko zawsze wygląda na proste, jeśli zajmujemy się tym sami na co dzień. Nie twierdzę również, że osoby te są w błędzie. Żaden jednak z systemów do zarządzania treścią, z którym pracowałem do tej pory nie pozwalał w tak łatwy sposób i z takim niskim technicznym progiem wejścia, tworzyć oraz dowolnie rozwijać i rozbudowywać aplikacji Internetowych jak właśnie Umbraco. Każdy zawsze w jakiś sposób "związywał mi ręce", blokował czy też narzucał swoim jestestwem coś pod czym nie byłem po prostu w stanie finalnie się podpisać. Nie jest to też system, który zainstaluje osoba nietechniczna, kliknie 5 razy w panelu administracyjnym, kupi szablon za 15$ i uruchomi w pełnej konfiguracji z zaawansowanymi i stargetowanymi pod dane rozwiązanie opcjami edycyjnymi (z małymi wyjątkami w postaci StarterKit'ów). Trzeba się trochę nakodować ("eeeee, lipa, spadamy stąd Seba") :)

Oficjalne intro i wstęp do historii

Umbraco przedstawia samo siebie na podstronie "Why Umbraco?" jako w pełni funkcjonalny system do zarządzania treścią, który jest na tyle elastyczny, że poradzi sobie z wdrożeniem i funkcjonowaniem zarówno w scenariuszu, który dotyczy małej witryny WWW, tworzonej na potrzeby pojedynczej kampanii czy np. wizytówki, jak i również zaawansowanych aplikacji internetowych budowanych na potrzeby firm z listy Fortune 500 czy innych największych portali informacyjnych / medialnych na Świecie. Strona główna promuje już Umbraco Cloud, wykorzystując do tego slogan używany w przeszłości, czyli "the friendly CMS" z dopiskiem "in the cloud". To właśnie w czasach intensywnej promocji Umbraco sloganami typu "Umbraco - to dziecinnie proste" oraz całej nowej wówczas identyfikacji wizualnej przydarzyło mi się poznać Umbraco. O tym jak wpłynęło to na moje życie pisałem już w j.ang. na naszym firmowym blogu tutaj.

WindowsLiveWriter_NewUmbracoIdentity_7CEE_UmbracoDesktopUffe_2.jpg

W tym wątku jednak, powyższe kwestie idealnie dopełnia to, jaki jest "background" powstania Umbraco. Był to kolejny system do zarządzania treścią napisany na wewnętrzne potrzeby firmy / grupy programistów. Taki sam, jaki każdy z nas (a na pewno już większość z nas) pisał bądź chciał w swojej karierze programistycznej napisać. Większość aplikacji działających nie tylko w Internecie, ale również offline czy na urządzeniach przenośnych, działa na zasadach odczytu i edycji danych, które są w jakiś "magiczny sposób" zarządzane przez Mietków i Karyny z "administracji". Prędzej czy później dochodzi się do sytuacji, w której takie narzędzie do zarządzania contentem aplikacji staje się niezbędnym jej elementem.

Nikt jednak, łącznie z Nielsem na czele, nie zwiastował takiego obrotu spraw i jakby nie patrzeć sukcesu oraz popularności tego akurat kawałka oprogramowania. Projekt jednak złapał w pewnym momencie wiatr w żagle, a dokładniej kilku doświadczonych i równie podjaranych tematem programistów w zespole, następnie tym entuzjazmem zaraził również innych, co w fazie rosnącej popularności ruchu open source przyczyniło się do tego, że zbudowała się wokół niego bardzo prężnie działająca społeczność, która dodatkowo pcha projekt w nieznane mu do tej pory rejony (siema Polska np.!).

Community - srommunity

Każdy system, wokół którego funkcjonuje społeczność, chwali się tym, że jest ona najlepsza i w ogóle "och, ach". Będąc czynnym uczestnikiem konferencji programistycznych i słysząc to często z ust wielkich guru takich systemów, sam - w głębi duszy - wyśmiewałem z reguły to, czy i w jaki magiczny sposób technologia, system bądź narzędzie może zjednoczyć ludzi (szczególnie patrząc na pryzmat specyfiki i profilu typowego "gościa z IT"). Nic bardziej mylnego, jak rzekłby Radosław Kotarski. Wskakując z butami w Świat Umbraco, poznałem jak to wygląda naprawdę. Nie jest też tak, że mam pogląd na jedną stronę medalu, bo próbowałem również dołączyć i działać w kilku innych grupach (nie będę publicznie chwalił się w jakich, bo mnie zlinczują wszyscy :)).

Społeczność Umbraco, pomimo całkiem dużej skali, w dalszym ciągu pozostaje dość "mikro". Ludzie z całego Świata spotykają się na kilku wydarzeniach (teraz skala rośnie do nawet kilkunastu!) organizowanych w różnych zakątkach kuli ziemskiej i choć brałem udział w stosunkowo niewielkiej ich liczbie jeszcze (czego mocno żałuję), to wśród tych ludzi można poczuć się jak w prawdziwej rodzinie. O tym temacie mógłbym również rozpisywać się godzinami i tysiącami słów. Doskonale podsumowane zostało to w ostatnim wydaniu online'owego miesięcznika o Umbraco - skrift - tutaj. Polecam lekturę!

Popełniłem też całkiem niedawno prezentację na temat tego jak działanie w społecznościach dało mi szczęście. Cały temat community opiszę w najbliższej przyszłości. Prezentację Wam tylko tutaj zostawię na tę chwilę.

Próg wejścia do tej społeczności, na obecnym etapie, jest bardzo niski (czyt. "łatwo zaistnieć", szczególnie w Polsce). Każdej osobie chętnej do rozpoczęcia szperania i działania w społeczności Umbraco sugeruję następujące kroki:

  1. Dołącz do naszej grupy na Facebooku: Umbraco CMS PL.
  2. Załóż konto na Twitterze (serio!) i obserwuj hashtag #umbraco (np. korzystając z aplikacji Tweetdeck).
  3. Weź udział w dowolnym spotkaniu typu meetup np. w Warszawie (już w najbliższą środę organizujemy Poland Umbraco Meetup #8) lub np. Białymstoku, gdzie odbyło się już do tej pory jedno spotkanie grupy żUmbraco.
  4. Jeśli w Twoim mieście nie ma tego typu spotkań, a są ludzie, którzy chcieliby w nim wziąć udział - daj mi o tym znać!
  5. Koniecznie śledź informacje o kolejnej edycji Umbraco Poland Festival - na pewno będę też tutaj o tym więcej spamował
  6. Rozważ wzięcie udziału w wydarzeniu poza granicami naszego kraju np. konferencji Codegarden bądź dowolnego festiwalu organizowanego np. w Londynie, Frankfurcie, Denver, Kopenhadze i innych miastach. W tym roku mam chęć odwiedzić je wszystkie, więc możesz śmiało dołączyć się do ekipy :)
  7. Szukaj, działaj, pytaj, sledź fora i blogi (choćby jak ten :))

Mity nt. Umbraco

Najwięcej negatywnych rzeczy o konkretnych CMS-ach mówią najczęściej osoby, które najmniej ich używają (albo w ogóle nie używały). Wiem, bo sam hejtowałem Sitecore'a bazując jedynie na opiniach znajomych, którzy mieli okazję z nim popracować. To chyba tak samo jak w przypadku Sharepointa - wypada to hejtuję. Wyrosłem jednak z tego typu zachowań i to samo polecam wszystkim. Starałem się poznać inne systemy - ba - wdrożyliśmy nawet swego czasu bardzo duży portal informacyjny z wykorzystaniem Wordpressa! Każdy ma swoje wady i zalety oraz potencjalne zastosowania, w których będzie stanowił lepszy wybór niż te inne. Umbraco też nie jest bez wad :)

W trakcie swojej całej przygody z Umbraco, napotkałem jednak na wiele powielanych mitów i opinii, które krążyły czy to w sieci czy w kuluarach konferencji branżowych. Zastanawiając się nad tematem prezentacji na nasz ubiegłoroczny Umbraco Poland Festival, postanowiłem przygotować taki, w którym postarałbym się część z tych mitów obalić. Wyszła z tego całkiem fajna prezentacja, którą możecie również obejrzeć na YouTube.

"Frejmłork"

W początkowej części tego tekstu wspomniałem, że w mojej opinii należałoby Umbraco traktować jako framework. Narzędzie, bądź zestaw narzędzi, które może wspomóc nasz proces tworzenia rozwiązania programistycznego działającego w sieci (i nie tylko) o konkretny zestaw funkcjonalności. Dodatkowo dając nam przy okazji mechanizmy w postaci serwisów, helperów, eventów, rozszerzeń i wielu innych, które możemy dowolnie wykorzystywać w swoich implementacjach. To właśnie w tej kwestii najczęściej wpływam na zmianę postrzegania Umbraco przez developerów, z którymi na jego temat prowadzę rozmowy. Dla większości z nich CMS to tylko taka popierdówka do zarządzania treścią, którą wystawia się klientom / edytorom. To akurat po części prawda, bo głównie korzystają z niego edytorzy, choć osobiście z Umbraco korzystaliśmy np. do udostępniania sobie czy innym administratorom narzędzia do zarządzania treściami publikowanymi w aplikacjach mobilnych bądź aplikacjach na Facebooku, a ostatnio nawet z poziomu Umbraco kontrolowane były parametry przesyłane do Raspberry Pi, które to zarządzało systemem inteligentnego domu. Da się? Da. Nie wspominając już o witrynach, z których korzystają miliony użytkowników, codziennie logując się do systemu wystawionego w postaci aplikacji WWW, jednocześnie zarządzanego przez dziesiątki edytorów po stronie administracyjnej Umbraco.

Budget is the limit, parafrazując slogan często przyklejany do Michaela Jordana :)

Z reguły, w opinii .NET developerów, którzy to na co dzień pracują budując dedykowane aplikacje ASP.NET MVC, takie Umbraco (czy inny CMS oparty o technologię Microsoftu) to coś narzucającego swoje podejście, ograniczającego fantazję i wizje programisty, taka "kula u nogi". Bo przecież oni zrobią to sami lepiej! "From scratch", "Dajcie mi tylko budżet!" :) A przecież uczono nas na studiach, że koła nie należy wynajdywać po raz setny od nowa, prawda? Pomimo tego, programiści dość często wolą funkcjonalności, które "out-of-box" są w każdym CMS-ie, kodzić sami. To co w takim wypadku warto wytoczyć z rękawa, to fakt, że Umbraco samo w sobie jest również po prostu aplikacją ASP.NET MVC i możemy ją w dowolny sposób rozbudowywać, modyfikować i wykorzystywać.

Czy wspominałem już, że dodatkowo kod źródłowy Umbraco dostępny jest publicznie? Dla doświadczonych programistów gwarantuję, iż wskoczenie w źródła tego projektu da im niesamowitą radość i podniesie ich na duchu jeśli chodzi o ich umiejętności :) Nawiązując raz jeszcze do tego, że Umbraco było jedynie projektem wewnętrznym, który przez przypadek przeskalował się do globalnego projektu open source, możemy mu wybaczyć pewne niedociągnięcia. Kod ciągle ewoluuje, a nadchodząca wersja v8 będzie już pozbawiona naleciałości pozostałych po archaicznych webformsach, xslt i innych tego typu technologiach, które wylądowały już jakiś czas temu w koszu.

Próbując w jakiś logiczny sposób zamknąć tę myśl, Umbraco jest niemalże scyzorykiem McGyver'a w rękach każdego. Dla osoby, która nigdy wcześniej nie miała styczności z C#, Razorem, ASP.NET będzie prostym i fajnym narzędziem do wyklepania aplikacji w sposób taki, jak ktoś to sobie rozplanuje. Dla doświadczonych .NET developerów zaś, stanowi doskonałą warstwę, którą można zapakować pomiędzy ich logikę biznesową oraz warstwę prezentacyjną aplikacji, dając tym samym narzędzie w postaci panelu administracyjnego, w którym każdą z sekcji (ba, nawet swoją własną w ogóle nie korzystającą z mechanizmów i danych Umbraco) możemy dostosować na swój własny sposób i sprawić, by praca edytorów była prostsza i przyjemniejsza. Wszystko to skorelowane ze sobą, daje nam w rezultacie większe pole do manewru w obrębie projektu, bo przy dobrej analizie i podejściu do sprawy, jest w stanie skrócić proces developmentu nawet kilkukrotnie.

Ok, to co to jest te Umbraco? :)

To open-source'owy system do zarządzania treścią stworzony w technologii ASP.NET MVC, w którym m.in. piszę tego bloga. Wygląda to mniej więcej tak:

Image 2017-01-06 at 12.55.04 AM.png

Pozwala na proste tworzenie witryn internetowych, sklepów WWW (z wykorzystaniem odpowiednich pluginów - często również darmowych i open source) itp. nawet osobom bez wiedzy technicznej. Jeśli jesteś taką osobą i chciałbyś bądź chciałabyś spróbować swoich sił z Umbraco, warto zapoznać się na początku z kursem video na platformie Microsoft Virtual Academy, który miałem okazję współtworzyć jakiś czas temu. Kurs przeprowadza przez podstawowe elementy tworzenia witryny WWW z wykorzystaniem Umbraco. Dostępny jest on tutaj

Daję również zaawansowanym i średnio-zaawansowanym programistom .NET, niesamowite możliwości do wykorzystania w obrębie swoich aplikacji ASP.NET MVC. W niedalekiej przyszłości umieszczę na blogu kilka tutoriali wyjaśniających podstawowe obszary, z którymi możemy się "pobawić" :)

Przekonałeś mnie / nie przekonałeś mnie

Jeśli przekonałem Cię do tego, że warto zgłębić temat to bardzo się cieszę. Zapraszam na wydarzenia, które w najbliższym czasie organizuję. Wprawdzie na oficjalne szkolenie certyfikacyjne i decyzję w jego uczestnictwie jest już zapewne za późno, to chociaż zapoznaj się z tym co mogą dać Ci oficjalne certyfikaty nadawane przez Umbraco za pośrednictwem mojej osoby akurat w Polsce. Popełniłem taką mini stronę informacyjną na portalu evenea, przez który umożliwiona była rejestracja na szkolenia: http://certyfikacjaumbraco.evenea.pl/.

Jeśli jesteś z Warszawy to koniecznie odwiedź nas na najbliższym spotkaniu grupy Poland Umbraco Meetup #8 - link do wydarzenia na FB.

Wróć do akapitu dot. community i poczyń dowolne kroki z tych sugerowanych wszystkim chcącym się zaangażować.

Zostaw tutaj komentarz, pytanie, uwagę, bądź sugestię dot. tematu - pomożesz mi i nam wszystkim zaangażowanym w promocję Umbraco w Polsce, zrobić to lepiej :)

Jeśli zaś Cię zupełnie nie przekonałem, wróć tutaj za jakiś czas i daj mi drugą szansę. Może jak zobaczysz jak w trakcie 1h stworzyłem bloga, którego teraz czytasz, właśnie z wykorzystaniem Umbraco, nabierzesz do mnie i do tego systemu większego zaufania? Mam taką nadzieję.