Rails przegrało z PHP - kontrowersyjna historia

Derek Sivers, właściciel sklepu CDBaby.com po dwóch latach przepisywania sklepu na Rails porzucił swój zamiar i w ciągu dwóch miesięcy, nie korzystając z frameworka, pisząc w czystym PHP, napisał go ponownie. Na swojej stronie tłumaczy swój wybór:

http://feeds.dzone.com/~r/dzone/ruby/~3/160235217/7_reasons_i_switched_back_to_php_after_2_years_on.html

Czy to klasyczny problem przepisywania aplikacji (http://chadfowler.com/2006/12/27/the-big-rewrite) czy może dowód na “ułomność” Railsów? Jak uważacie?
Nasz polski wykop.pl również wrócił do PHP - rozumiem że z nieco innych powodów, niemniej jednak zapraszam do dyskusji.

Oryginał: http://feeds.feedburner.com/~r/RubyInside/~3/160417172/how-not-to-build-an-e-commerce-site-with-rails-610.html

Brzmi to troche jak szukanie taniej sensacji. Jest wiecej przykladow pozytywnej migracji na rails z php,udanych przypadkow, niz tych nieudanych. Byc moze ludzie sie tym po prostu nie chwala, bo w sumie czym tu sie chwali ? Ze jest sie nieudolnym project managerem ? Ze zatrudnia sie kogos na dwa lata i nic z tego nie wychodzi ? O czym to swiadczy ?

Jest takie stare polskie przyslowie… “Dla zlej baletnicy…” w tym przypadku Pan Derek to ponoc swietny muzyk, a nie programista.

Te “7 powodów” jakieś miałkie i w dużym stopniu bez sensu. Że w PHP też wszystko można zrobić, że PHP trochę szybsze, że gość lubi SQL(?), że w sumie nie chce gotowej platformy tylko woli sam. Czy to uzasadnia 2 lata kodzenia bez rezultatu?

Jedynym powodem, który zdaje się wynikać z doświadczeń jest podany w treści “But at every step, it seemed our needs clashed with Rails’ preferences.” - szkoda, że nie napisał, jakie to były potrzeby. Wtedy można by podjąć dyskusję.

Oczywiście faktem jest, że RoR nie do każdego projektu jest najlepsze. Z drugiej strony przejrzałem cdbaby.com - to prosta, raczej niewielka strona. Nie rozumiem, dlaczego miałoby to pochłonąć 2 lata w dowolnej współczesnej platformie, nie wspominając o RoR.

Nie zdziwię się, jeśli za miesiąc wyskoczy kopia jego strony zrobiona w RoR przez jakiegoś wkurzonego kodera :slight_smile:

No właśnie - niby mała ale napisał: “I was having to hack-up Rails with all kinds of plugins and mods to get it to be the multi-lingual integration to our existing 95-table database.” 95 tabel w bazie to trochę jednak jest (co nie zmienia faktu, iż sam również nie podzielam jego “7 powodów”).

Pewnie rozbiło się o stary schemat danych (zwłaszcza, że stworzony przez muzyka wiele lat temu…).

Stary schemat to najważniejszy argument za nie używaniem RoR. Być może bitsweat wolał podjąć wyzwanie niż wyraźnie o tym zakomunikować.

Powinno sie migrowac ze starego schematu bazy danych na nowy w momencie rozpoczecia pracy nowej wersji serwisu. Najlepsze wyjscie. Sam tak robilem w przypadku migracji aplikacji w Javie na RoR.
Skrypt byl pisany w Rubym. :slight_smile:

Brzmi to dla mnie troche patetycznie. “PHP jest fajne, railsy sa do niczego”. Oczywistym jest ze w PHP mozna zrobic to samo co w railsach; ba nawet mozna w asemblerze. Nie wiem jak Wy, ale ja mialem dosc ciaglego klepania “select *”, “insert into”, "update ". Wiecej czasu spedzalem na “eskuelkowaniu” niz kodowaniu wlasciwej funkcjonalnosci. Moim zdaniem gosc poprostu nie docenil potegi railsow, programowal w railsach myslac PHP-way i to bylo powodem jego porazki. Niby pisze ze wykorzystal metodologie RoR ale mnie to nie przekonuje.

mnie też jego wytłumaczenie nie przekonuja, za dużo ogólników, a za mało konkretów… zresztą już sam fakt, że dopiero po 2 latach pracy nad projektem odkrył, że brnie w ślepą uliczkę jest dla mnie mocno podejrzane… ale o wiele ciekawsze od samego artykułu są komentarze do niego i o ile odsieje sie typowe flejmy to można znaleźć kilka ultra ciekawych perełek

czy mógłbyś je wypisać w wolnej chwili? warto by było je poznać :slight_smile:

Wlasnie obejzalem sobie cdbaby.com i nie widze tam zadnej funkcjonalnosci ktorej zaimplementowanie moglo by zajac 2 lata. Nawet srednio rozgarnietemu studentowi zajelo by mniej przepisanie tego - ew dojscie do wniosku ze to nie ma sensu.

Komentarze raczej ciezko przejzec, ale powalil mnie komentarz autora:

PS. Moze chlopaki od PHP przysponsorowali tego Pana ?:slight_smile: A moze chcial tylko zrobic buzz wokol swojego projektu ?

Nie wiem, nie wydaje mi sie ze chodzilo tu o sponsorowanie czy o buzz. Pamietam, ze to wlasnie kiedys ten gosc, kiedy byla zrzutka rozpoczeta przez ludzi z caboo.se, na poprawienie dokumentacji Rails, wplacil najwieksza kwote rowna $5000.
Glowy za to nie daje, ale chyba wlasnie tak bylo.

Ten artykuł nic nie mówi o wyższości/niższości używania PHP czy Ruby/Rails. Mówi tylko o osobistych upodobaniach jakiegoś pehapowca. Jakiś lamer chcący na nowo wynaleźć koło. Zamiast użyć w miarę sprawdzonych pehapowych frameworków naśladujących RoR (takich jak np. cakePHP czy Symfony), postanowił napisać od zera kolejny, po swojemu. DHH też próbował. Nie dało się. W PHP nie da się uzyskać czystości i prostoty Railsów. Zawsze to będzie nieudolne naśladownictwo. Język PHP jest za mało obiektowy i za mało dynamiczny aby można w nim napisać tak elegancki framework jak Rails. Ale wracając do jego powodów przejścia.

  1. Bo w PHP da się zrobić to samo co w RoR.

Owszem, w Assemblerze również. Kwestia determinacji i czasu. Na pewno jednak w PHP nie da się uzyskać tak samo eleganckiego i czytelnego kodu. Nawet w Pythonie się nie da, a jest niezrównanie bardziej czytelny od PHP.

  1. Bo wszystko w naszej firmie jest zrobione w PHP.

To jest sensowny powód aby trzymać się tego co już jest, jeśli jest tego dużo (lub jeśli garniturowi są oporni na zmiany). Jednak utrzymanie czyjegoś kodu PHP to najczęściej na tyle traumatyczne przeżycie, że ja bym i tak naciskał, aby nowe projekty robić w Pythonie czy RoR i powoli migrować z PHP.

  1. Nie chcę tego, czego nie potrzebuję.

Autor dalej pisze, że uważa musi zrozumieć każdą linijkę kodu RoR. To jakiś bezsens. Aby używać RoR nie trzeba wcale znać jego wewętrznej implementacji. Powiem więcej, RoR to najprostszy ze znanych mi frameworków webowych. Jest bardzo intuicyjny i łatwy do nauki. Autor dalej napisał, że jego własny framework robi to, co chce. Owszem, ale co jego firma zrobi, jak zatrudnią drugiego programistę który będzie musiał zrozumieć to, “co autor miał na myśli”? Poza tym, RoR to tylko framework. Nikt nie musi używać wszystkich jego helperów i możliwości. Właśnie gdzie jak gdzie, ale w RoR bardzo łatwo używasz to co potrzebujesz.

  1. Bo jest mały i szybki.

Można autorowi wierzyć tylko na słowo, bo nie podał żadnych benchmarków. RoR się dobrze skaluje na mongrelach, poza tym wąskim gardłem aplikacji webowej jest zwykle baza danych, a nie kod po stronie serwera. Jeszcze szybszy od PHP i czytelniejszy jest Python. Właśnie - czytelność. Szybkość działania aplikacji nie ma takiego znaczenia jak czas tworzenia softu i jego utrzymanie. Jakie są szanse, że jakiś autorski kod gościa, co nawet nie potrafił nauczyć się RoR, będzie stabilny, łatwy do debugowania i utrzymania? A co z możliwościami? Autor zaimplementował tylko to, co mu jest potrzebne teraz. Co zrobi jak jutro będzie potrzeba czegoś więcej? Na ile modularny i łatwy do rozbudowy jest jego kod? Rozumiem, że go to niewiele obchodzi. Liczy się tylko “dziś” i “teraz”.

  1. Bo mój kod odpowiada moim upodobaniom.

To bardzo osobisty powód. Równie dobrze mógł ten swój wywód skrócić do: wolę PHP bo bardziej je lubię od Rubiego i Rails. Co prawda, o gustach się nie dyskutuje, ale moim zdaniem autor ma kiepski gust.

  1. Bo kocham SQL’a.

J.w. Dodam tylko, że powód dosyć debilny, bo RoR nie zmusza nikogo do używania ORM’a. Nie ma żadnych przeszkód aby całą aplikację napisać za pomocą kwerend SQL. Jednak po to używa się ORM’a aby uprościć tą pracę i lepiej zmodelować dane biznesowe. Same klucze obce są zbyt prymitywne do trzymania intergalności modelu bazy w porównaniu do tego, co potrafią walidatory Active Record. O wyższości używania ORM nad SQL każdy wie. Każdy ORM pozwala na używanie czystego SQL do pewnych, nietypowych sytuacji. Więc moim zdaniem, posługiwanie się wyjącznie czystym SQL nie daje żadnej przewagi.

  1. Bo znam PHP dużo lepiej i sprawniej nim się posłużę niż Ruby.

To jest jakiś argument dla osoby, która nie chce się niczego nowego uczyć (lub ma krótki deadline dla projektu i nie ma czasu aby wskoczyć w nową technologię). W każdym razie autor przyznaje się tu, że po prostu jest cienias. Nie zna Rubiego, nie chce się uczyć nowych rzeczy. I po prostu jest zakochany w PHP i czystym SQL.

Co ciekawsze, autor na końcu podsumowuje , że mimo wszystko i tak zamierza pewnego dnia zacząć używać Rails. Zapowiada, że zajmie się tym podczas tworzenia nowego projektu, od podstaw. Choć to, że przez dwa lata usiłował coś napisać w Rails i ostatecznie łatwiej wyszło mu przepisać na PHP raczej świadczy o jego niezbyt lotnych umiejętnościach jako programisty w ogóle.

Jarek, gwoli ścisłości. Z tego co zrozumiałem to przez 2 lata to gość wynajęty do przepisania aplikacji na railsy nie zrobił tego. W końcu gość się wnerwił i sam to przepisał (php -> php). Z Twoim wypunktowaniem nie sposób się nie zgodzić :).

hmmmm bylem na stronie http://cdbaby.com/ i w pierwszym momencie myslalem ze mi sie nie doladowaly layouty. 2 lata na taka strone to naprawde bardzo bardzo dlugo.
Niektorzy ludzie lubia stac w miejscu…