Podobnie jak dwa samochody na zdjęciu, własny CMS jest podobny do gotowych rozwiązań tylko z pozoru

Drupal po przesiadce z autorskiego CMS

Czasami na forach internetowych spotykam się z pytaniem: “Chcę zrobić np.: portal. Wybrać istniejącego standardowego CMS (np.: Drupala), czy pisać autorskiego CMS?”

Pracowałem i w dużym, rozwijanym przed długi czas, autorskim CMS i w Drupalu i chciałem się podzielić moim spostrzeżeniami.

Wymyślanie na nowo koła

Pierwsze, na co zwróciłem uwagę, to różnica w ilości czasu i wysiłku, który poświęca się na powtórne napisanie standardowych rozwiązań. Każdy serwis, ba, pojedyncza strona internetowa ma pewne powtarzające się elementy. Jako użytkownik, nie zwraca się na nie zazwyczaj uwagi. One są w tle, ale to nie znaczy, że nie wymagają nakładu pracy.

Przykład: dostosowanie obrazu na stronie do pewnego formatu, sitemapa, wszelkiego rodzaju głosowania, gwiazdki itp. Można by wymieniać; każda taka funkcjonalność musi zostać napisana, bugi muszą zostać wyłapane, a niestety niektóre bugi wyłapuje się dopiero na produkcji.

Nawet proste zmiany, dodanie nowego formatu danych, czy zmiana elementów graficznych może być wyzwaniem w systemie pisanym od zera. Bo trzeba pamiętać, że napisanie nowej funkcjonalności, to nie tylko napisanie kodu, trzeba także wyłapać bugi, zgrać z resztą systemu i przejść bojowy test na produkcji.

Jest różnica — poświęcenie tygodnia pracy na pisanie kodu, który będzie podobny do istniejących już rozwiązań, czy - jak jest w Drupalu - po prostu zainstalowanie modułu.

Zauważyłem też, że w autorskim CMS ilość pracy, którą poświęca się na interfejs administracyjny,  jest większa niż na rozwiązywanie zadań związanych z tym, jak klient/konsument widzi treści.

Co więcej, realizując prace Drupal developmentu, możemy podzielić się ich wynikami, tworząc moduł i publikując go, tak aby inni mogli z niego skorzystać.

Modułowość

Po drugie — podoba mi się modułowość Drupala. Standardowym trybem pracy dla nas jest znajdowanie istniejącego modułu lub pisanie własnego, który rozszerza albo modyfikuje działanie modułu standardowego. Filozofią Drupala jest umożliwienie łatwej modyfikacji wszelkich elementów.

Korzystaj z interfejsu użytkownika

Dodatkowo — zaskakujące jest jak dużo można zrobić w Drupalu, nie pisząc ani jednej linijki kodu w edytorze, a jedynie korzystając z menu Drupala.

Przykład: tworzyliśmy w firmie Drooplera: dystrybucję Drupala do szybkiego tworzenia profesjonalnie wyglądających stron. Pracowałem przy rozbudowie interfejsu do tworzenia bloga. Nie licząc stylowania, prawie cała funkcjonalność, łącznie z interfejsem administracyjnym, została stworzona poprzez wyklikanie z ustawień w menu drupalowym (czyli strona i podstrony z wpisami, interfejs dodawania treści, typy paragrafów i format zdjęć, data utworzenia, kategorie wpisów etc.).

Standardy

Problemem w autorskich CMS jest mozaika zastosowanych rozwiązań. Np.: może się zdarzyć, że kod do pewnej funkcjonalności jest napisany przez osobę, która się przeniosła do innej firmy i nikt w firmie do końca nie rozumie przyjętych rozwiązań. W Drupalu jest to w pewnym  stopniu zminimalizowane, przez to, że wykorzystujemy standardowe funkcje do modyfikacji, mamy określone struktury danych, sposoby zapisu konfiguracji itp. Wiem, że druga osoba korzysta z tych samych standardów i łatwiej mi rozeznać się w kodzie. Dodatkowo łatwiej utrzymać porządek w kodzie i ograniczyć powstawanie tzw. „spaghetti code”.

W Drupalu główne struktury danych są przemyślane, sprawdzone i nie trzeba wymyślać na nowo koła.

Inna sprawa to bugi. W autorskim CMS prawie każdy bug to nowy kłopot. W Drupalu prawdopodobnie ktoś już wcześniej rozwiązał podobny problem.

Społeczność

No właśnie, społeczność. Drupal jest projektem Open Source i ma prężnie działającą społeczność. Projekt rozbudowują nie tylko prywatne osoby, ale także firmy korzystające z Drupala. Dzięki temu różnorodne moduły, ogrom dodatkowych materiałów, rozwiązania typowych problemów, regularne spotkania drupalowe na całym świecie, bogata literatura i kursy online są w zasięgu ręki.

Wady

Wymieniałem dotychczas zalety, ale to nie oznacza, że Drupal nie ma ograniczeń. Np.: Drupal jest rozbudowanym systemem, każdą rzecz można zrobić na kilka sposobów. Jeśli chcemy na przykład zmienić element na stronie, możemy wykorzystać kilka różnych metod: stworzyć blok, zmodyfikować dane wykorzystując jedną z kilku możliwych funkcji hook, a może zmianę w skórce. To może być problematyczne, jeśli modyfikujemy istniejący kod, bo szukana linijka odpowiedzialna za wygląd tego elementu, może być w tylu różnych miejscach.

Czasami napotykamy ograniczenia, których nigdy byśmy się nie spodziewali. Przykład z życia: w opcji zaznaczania kilku elementów na liście, brakuje w standardzie możliwości zaznaczania na kilku stronach.

Drupal ma też  swój specyficzny styl — dlatego trzeba poświęcić trochę czasu na jego naukę. Nie można rozpocząć dużego projektu, znając tylko i wyłącznie PHP albo mając małe doświadczenie z innymi frameworkami. Trzeba nauczyć się gdzie i kiedy można zmieniać kod, w jaki najlepszy sposób modyfikować dane, poznać struktury danych, wewnętrzne API.

Podsumowanie

Podsumowując — jeśli miałbym porównywać pracę w autorskim CMS z pracą w Drupalu — to wygrywa Drupal. Tysiące modułów z możliwością rozbudowy, przemyślana struktura danych, standardy, ilość dodatkowych materiałów — to wszystko sprawia, że po pewnym okresie nauki, można skutecznie i produktywnie rozwiązywać zadania i tworzyć doskonałe oprogramowanie.

3. Najlepsze praktyki zespołów programistycznych