Magento: OpenSource w php profesjonalnie

Jak mi szef powiedział, że póki czekam na odpowiedz z kilku firm i nie mam co robić, to mogę sobie poszukać w tak zwanym międzyczasie jakiegoś OpenSource eCommerce i zintegrować z nim to co zwykle to średnio byłem ucieszony. Pierwsze co mi sie skojarzyło to syfiaste osCommerce czy też Zen-Cart, pisane jeszcze pod php4 i przez gimnazjalistów. Ale zapytałem Google i ze zdziwieniem zobaczyłem pierwszy wynik - Magento? A co to? O tym w dalszej części, ale najpierw troche wstępu.

Dlaczego większość aplikacji pisanych w php jest do niczego? Bo php nauczyć może się każdy i każdy może tworzyć projekty OpenSource. A potem wychodzi masa ambitnych projektów, kiepsko napisanych, zabugowanych, brzydkich. Każda ma masę możliwości, ale każdy komu przyszło pracować z Joomla, osCommerce itp wie że to piekło. Ja np. gdy swojego czasu sporo czytałem ofert o prace, z powodów takich a nie innych, zamykałem automatycznie wszystkie ogłoszenia zawierające w treści "Znajomość [...]" i nazwa mniej lub bardziej popularnego oprogramowania OpenSource.

Oczywiście są wyjątki. Można wśród nich wymienić choćby niektóre frameworki. Są lepsze i gorsze, jedne pisane pod php4 a inne pod php5. Strasznie mi przeszkadza np. ze CakePHP pamięta jeszcze czasy czwórki i był to jeden z powodów dla którego napisałem własny framework wzorowany na ciasteczku. Głównie chodziło mi o bardzo przejrzystą architekturę MVC (która lubi zanikać w innych narzędziach) i ogólny sposób kodowania. Jeszcze innym wyjątkiem tutaj może być Smarty. To narzędzie też pamięta czasy php4, a wręcz nigdy nie widziało na oczy piątki, ma pewne problemy z wydajnością, ale jednak jest napisane na tyle dobrze, że korzystam z niego do dziś (choć uważam, że powinno już umrzeć śmiercią naturalną).

Jeżeli chodzi o frameworki to warto przyjrzeć się ZendFramework, dzieło podpisane przez samych twórców języka, a przynajmniej ludzi blisko z nimi zwiazanych. Zapewne znajdzie się tyle samo zwolenników co przeciwników. Jednym nie pasuje, że realizacja MVC w tym języku jest do bani. Innym, że po co np. klasa do obsługi PDF? Wynajdywanie koła od nowa, na pewno już to ktoś, kiedyś napisał, przetestował i kto wie czy nie działa nawet lepiej. Ano, może i działa. Ale ponieważ został on napisany w taki a nie inny sposób, otrzymujemy możliwość rozszerzania wszystkich klas z osobna. Coś się nie podoba? Wykorzystaj szkielet a jednocześnie napisz po swojemu. I tak mniej więcej zrobili twórcy Magento.

Ściągnąłem, dodałem projekt do phpDesign'era i zaczynam raz-dwa latać po katalogach. Pierwszy szok - lib/Zend. Czyżby? Tak, to katalog z ZendFramework. Nieźle. Pół godziny później cały czas jestem w szoku jeżeli chodzi o kod jak i funkcjonalność. System zarządzania "pakietami" - pobieranie, instalacja, reinstalacja - pluginów, szablonów, języków, właściwie wszystkiego, takie apt przez www. Panel administracyjny robi wrażenie, przyjemny i funkcjonalny, integracja m.in. z Google Analytics oraz Google Checkout, o kilkunastu systemach płatności online nawet nie piszę. A do tego wszystkiego jak ktoś czyta kod to aż się serce cieszy. W pełni modułowa struktura, podział kodu na local/community/core, MVC, eventy, wszystko oparte na .xml - począwszy od ustawień dla każdego modułu aż po opis layoutów w .xml (nie, nie chodzi mi o xml+xslt). Pełen wypas.

Powrót na stronę projektu i czytam. Framework na OSLv3 ale napisany przez profesjonalną firmę i profesjonalnych koderów - to widać - blisko związaną z Zend'em (m.in. projektowali design ich stron). Gdzie jest haczyk? Dokumentacja. A raczej jej brak. Poza podstawowymi tutorialami dla przeciętnego użytkownika brak czegokolwiek konkretnego. Teoretycznie jest API ale bez żadnych komentarzy, w kodzie zero informacji mówiących o tym do czego służy każda klasa, chociaż są podstawowe komentarze dla phpDoc, tylko bez konkretów - nazwa funkcji, parametry. Teoretycznie jest Wiki, ale pisane przez community. A jak to community, często zamiast zabrać się za coś porządnie, robią hacki bezpośrednio na kodzie w gałęzi 'core'. Czemu sie dziwić, skoro 90% funkcjonalności nie jest nigdzie opisana, a kod, choć napisany na najwyższym poziomie, do debugowania jest ciężki - dużo klas, dożo dziedziczenia, dużo metod statycznych, magicznych itp.

Pomysł na biznes? A jakże, profesjonalna instalacja przez Magento Team - 150$. Kurs dla programistów opisujący m.in. eventy (o których dowiedziałem się dopiero czytając spis treści kursu ;>) - 1000$. I do tego płatny support. Jak widać, można komercyjnie zarobić a jednocześnie wydać coś OpenSource co zdecydowanie zmieni sposób w jaki patrzymy na eCommerce. Bo ja już swój sklep, nad którym pracowałem długo, pakuję do archiwum. I biorę się za Magento.

Komentarze do wpisu "Magento: OpenSource w php profesjonalnie":

1.

brainac napisał(a):
09 września 2009, 15:43:54

I jak? Udało się? Bo coraz więcej krytycznych głosów na temat Magento słychać.

Dodaj komentarz:

Jeżeli znalazłeś błąd ortograficzny bądź stylistyczny/gramatyczny, będę wdzięczny za informację. Konkretną i precyzyjną, nie interesują mnie aluzje i wymyślne metafory.

Jednocześnie wszem i wobec informuję, że używam Windows Vista. Jeżeli uważasz, że Twój system jest lepszy i z tego powodu Ty jesteś lepszy, a ja i inni tacy jak ja są gorsi i jest to jedyne co chcesz mi przekazać, to nie trudź się komentowaniem, skasuję.

Textile Lite włączony ( szczegółowy opis znaczników ):
*strong* | # lista numerowana | * lista wypunktowana | _em_ | __italic__ | "link":http:// | bq. cytat.