Czy powinienem zbudować własny CMS, czy też polegać na gotowym? [Zamknięte]


23

Powiązane : Czy jako początkujący programista powinienem preferować tworzenie własnych bibliotek zamiast korzystania z bibliotek innych firm?

Czy jako programista PHP na poziomie średnio zaawansowanym i zaawansowanym, a także młody (15 lat), powinienem zbudować zupełnie nowy CMS na swojej stronie, czy polegać na gotowym oprogramowaniu, takim jak WordPress lub Drupal?

Nie do końca uważam, że WordPress jest wystarczająco potężny / skalowalny, aby móc poradzić sobie z tym, co próbuję zrobić, a po majsterkowaniu z Drupalem w ciągu ostatnich kilku dni nie wydaje mi się, aby spełniał moje oczekiwania a także nie jest dobrze udokumentowany, więc mam problem z wykonaniem pewnych prostych zadań. Ja uwielbiam użyć czegoś takiego jak ExpressionEngine, ale nie mam pieniędzy, aby rozdać na licencji komercyjnej, która jest obecnie na około 300 $, więc to no-go.

Początkowo zacząłem kodować moją witrynę jako system tymczasowy, aby moi użytkownicy mogli kupować aktualizacje i inne rzeczy, takie jak waluta w grze, dopóki nie mogę założyć nowej witryny, ale po uruchomieniu szybko zdałem sobie sprawę, że muszę ją skalować , więc odtąd kodowałem z myślą o stworzeniu w pełni funkcjonalnej strony internetowej. Zajęło to tylko kilka dni, ale wszystkie podstawy są już dostępne (rejestracja, logowanie, modyfikacje konta itp.) I uważam, że byłby to dobry początek dla prywatnego CMS.

Ostatnią rzeczą, którą chcę dodać jest to, że gdybym budował własny CMS, czy powinienem skorzystać z frameworka PHP, takiego jak CodeIgniter, z którym mam spore doświadczenie?

Może inni programiści mogliby mnie podpowiedzieć, w co się pakuję.


11
Nie należy lekceważyć ilości godzin poświęconych na tworzenie istniejących systemów CMS. Możesz być poważnie zaskoczony ...

Odpowiedzi:


23

To zależy całkowicie od twojej sytuacji. Stworzono świetne strony z CMS-ami. Myślę, że powinniśmy najpierw zrozumieć dwa pojęcia, CO i TCO.

CO (koszt posiadania)

Gdy coś kupujesz, płacisz za to CO. W przypadku WordPress jest to nic, ponieważ WordPress (lub wiele innych programów CMS) jest bezpłatny.

TCO (całkowity koszt posiadania)

Wyobraź sobie, że kupujesz komputer za 10000 dolarów. Co wtedy Powinieneś poświęcić czas na instalację oprogramowania (czas jest cennym zasobem, więc nadal wydajesz pieniądze na ten komputer), a następnie możesz kupić kamerę internetową, inną nagrywarkę DVD i dodatkowe kable. Następnie musisz nauczyć się korzystać z zainstalowanego oprogramowania. Innymi słowy, całkowity koszt posiadania komputera nie wynosi 10 000 USD. To znacznie więcej.

W przypadku oprogramowania CMS ich CO jest naprawdę niczym dla bardzo niskich stawek. Ale wiele doświadczeń pokazuje, że ich całkowity koszt posiadania wcale nie jest niski. Duże firmy wydają prawie tysiące dolarów na dobrą stronę w Joomla lub WordPress.

Kolejnym czynnikiem jest poziom dostosowania . Czasami chcesz użyć oprogramowania jak jest bez żadnych zmian. W takim przypadku WordPress, Joomla, Drupal lub jakikolwiek inny CMS może być bardzo dobrym kandydatem i nie powinieneś pisać własnego CMS. Ale są chwile, kiedy potrzebujesz wysokiego poziomu personalizacji. W takim przypadku naprawdę frustruje Cię dostosowanie gotowego CMS do własnych wymagań.

Właściwie chciałem używać gotowego oprogramowania CMS, ale po spędzeniu cennego czasu na nauce różnych CMS i znajdowaniu słabości każdego z nich, ostatecznie stworzyłem własny CMS. Wyniki Myśli to moja osobista strona i jest budowana za pomocą tego CMS. Wkrótce go opublikuję, aby inni mogli z niego korzystać.

Jeszcze innym czynnikiem jest rozszerzalność . Uwierz mi, że stara się przenieść CMS ze stanu statycznego do stanu rozszerzalnego. Szablony, moduły, wtyczki, dostawcy, baza danych i pamięć masowa, mechanizmy routingu i prawie każda część dobrego CMS powinny być rozszerzalne.

W końcu moja osobista sugestia to rozpoczęcie budowy CMS, aby przynajmniej nauczyć się kilku podstawowych pojęć. Ale spróbuj także użyć już istniejących. Powodzenia.


Wow, doskonała odpowiedź. Niektórych z tych rzeczy nigdy nie brałem pod uwagę, ale naprawdę są miło wiedzieć. Jak mówiłeś przy dostosowywaniu, naprawdę potrzebuję dużo tego, dlatego pierwotnie zwróciłem się do Drupala, ponieważ słyszałem, że powinno być świetnie z takimi rzeczami. W moim przypadku muszę jednak mieć dużo interakcji między wieloma serwerami, PayPal, dokładnie dostosowaną rejestracją i innymi rzeczami, które tak naprawdę nie są łatwe w obsłudze przez coś takiego jak Drupal. Wielkie dzięki za odpowiedź, naprawdę to doceniam. :)
Alex Bennett

Chciałbym również, żebyś zapytał, czy poleciłbyś mi użycie frameworka, takiego jak CodeIgniter, lub zbudowanie własnego w miarę, jak idę (może dla doświadczenia)?
Alex Bennett

1
Cóż, @Alex Cieszę się, że mogłem pomóc. Przykro mi również, ponieważ moją platformą jest .NET i nie znam się dobrze na frameworkach PHP. Ale korzystanie z frameworka jest zdecydowanie zalecane. Używam Entity Framework jako ORM, więc użycie ORM w PHP może naprawdę przyspieszyć twój rozwój.
Saeed Neamati,

W porządku, w każdym razie dzięki. Jedynym powodem, dla którego nie chciałbym korzystać z frameworka, jest praktyka, ale uważam, że bezpieczniej byłoby dla mnie użyć go w tym przypadku, ponieważ jest to miejsce produkcyjne i nie chcę mieć zbłąkanych podatności, które mogą wystąpić podczas tworzenia własnego CMS / frameworka.
Alex Bennett

1
@Alex Bennett, Jeszcze jedno, istnieją CMSy typu open source. Jeśli otrzymasz kod źródłowy. Możesz zacząć od tego, a następnie zmodyfikować go według własnych upodobań. To naprawdę przyspieszy budowę własnego. To jest podejście hybrydowe. Kto naprawdę chce wynaleźć koło na nowo?
MVCylon

18

Gram tu rzeczników diabłów, ale trzeba to powiedzieć. Niektóre z najczęstszych problemów z twórcami oprogramowania:

  • Pod szacunkiem czasu i wysiłku włożonego w realizację trywialnego projektu, niech idzie duży
  • Całkowity brak połączenia rzeczywistości biznesowej
  • Przeszacowanie własnych umiejętności i produktywności.
  • Niedocenianie złożoności i subtelnych szczegółów
  • Wiara, że ​​ich problem jest tak wyjątkowy, nikt jeszcze go nie rozwiązał.

Jesteś pewien, że nie popełniasz żadnego z tych błędów, ponieważ nawet za 15 lat, 300 dolarów może zostać zarobione w ciągu kilku tygodni, a to, co wydajesz się proponować, może zająć miesiące. Zastanów się, co by się stało, gdybyś dostał płatną pracę i kupił ExpressionEngine za te pieniądze. Czy zostałby dostarczony wcześniej, z jeszcze lepszymi funkcjami niż praca dla majsterkowiczów?


1
Jestem dość dojrzały jak na przeciętnego 15-latka, mam nadzieję, że możesz to powiedzieć, i nie sądzę, że popełniłem błąd, robiąc którąkolwiek z wymienionych rzeczy. Spędziłem dużo czasu na poszukiwaniu możliwych rozwiązań i jeszcze nie znalazłem dobrego dla mojej sytuacji. Jeśli chodzi o pieniądze, moja firma zarabia ponad 300 USD miesięcznie (niewiele, ale płaci za dedykowane maszyny), abym mógł zdobyć pieniądze, ale staram się grać zachowawczo i inwestować w rzeczy, które są koniecznością, taką jak sprzęt i reklama. Dzięki za odpowiedź, naprawdę będę o tym pamiętać.
Alex Bennett

Nie sądzę, żebyś naprawdę tworzył CMS tak bardzo, jak niestandardowe rozwiązanie. Jeśli stworzysz prawdziwy CMS, prawdopodobnie mógłbyś dystrybuować / sprzedawać CMS. Myślę, że byłbyś trochę nad głową (tak jak ja, ale ...), aby wyjść na kompilację kompletnego CMS.
HelloFictionalWorld,

2
@Alex musisz wziąć pod uwagę ten czas == pieniądze, a konkretnie swój czas. Ile to jest warte? Jeśli Twój CMS zajmuje więcej niż 30 godzin (10 USD / godz.), To ExpressionEngine jest lepszym wyborem. Podobnie, jeśli te 30 godzin pracy poświęconej na inne rzeczy generują więcej wartości dla Twojej witryny niż 300 USD, to ExpressionEngine jest lepszym wyborem.
CdMnky

8

Istnieją na to dwie odpowiedzi.

Jedno jest proste: nie - nie wymyślaj koła na nowo. Istnieje wiele doskonałych systemów CMS, a jeśli nauczysz się dobrze z nich korzystać, to jeśli potrzebujesz czegoś, czego nie oferuje, możesz skupić się bardziej na tworzeniu wtyczki do tego celu, a nie na nowo koło.

Drugi jest nieco mniej oczywisty: tak. Jeśli chcesz zrozumieć, jak działa CMS i problemy napotkane przy jego tworzeniu, budowanie własnego nie jest szkodliwe. Prawdopodobnie nigdy nie będzie miał mocy i elastyczności jednego z istniejących systemów CMS, a ponieważ istnieje około 100000000000 systemów zarządzania treścią PHP w tym miejscu, istnieje bardzo małe prawdopodobieństwo, że ktokolwiek inny będzie się nim zainteresować, ale również nie będzie masz rzeczy, których nie potrzebujesz i prawdopodobnie będą działać o wiele mniejsze i prostsze niż którykolwiek z większych systemów. Zajmie to dużo czasu, wyniki raczej nie będą tak dobre i nie będą miały znaczenia dla reszty świata, ale jeśli chodzi o rozwój i naukę, może to być przydatne ćwiczenie.

W każdym razie, zanim zaczniesz budować własne, wypróbuję dostępne systemy głównego nurtu, aby dowiedzieć się, jak działają, co robią dobrze i co uważasz, że mogą zrobić lepiej. Dobra znajomość tych informacji może pomóc w podjęciu decyzji, czy tworzenie własnych korzyści przynosi korzyści.


Dziękuję za odpowiedź. Ale tylko dla wyjaśnienia: gdybym zbudował ten CMS, nie miałbym zamiaru go wypuszczać, to nie jest rynek, na którym działam. Byłoby to tylko dla mnie i byłoby zbudowane tak, aby robić tylko to, czego chcę / potrzebuję. Eksperymentowałem z innymi, ale nie mogę znaleźć takiego, który jest wystarczająco dobrze udokumentowany i robi to, czego potrzebuję, bez zmuszania mnie do zmiany rdzenia, dlatego zacząłem rozważać stworzenie własnego. Innym powodem, dla którego chcę zbudować własny, jest praktyka, ponieważ pracuję w kierunku zostania programistą (lub czymś podobnym) po studiach. :)
Alex Bennett

3
Piszę jako ktoś, kto jakiś czas temu zaimplementował bardzo małe, bardzo proste, bardzo proste PHP cms i od tego czasu używa go w wielu witrynach. Nie robi nic więcej niż mały fragment tego, co robią systemy na większą skalę, ale robi wszystko, czego potrzebuję w przypadku mniejszych witryn, a ponieważ jest oparty na plikach płaskich, działa prawie wszędzie. Dlatego całkowicie doceniam to, że czasami naprawdę chcesz po prostu zbudować własny.
glenatron

5

Jeśli nigdy nie próbowałeś programować CMS, może to być bardzo dobra okazja, aby to zrobić. Dowiesz się sporo i bez względu na to, czy go ukończysz, będziesz miał bardzo dobry pomysł np .:

  • Co jest trudne do zrobienia, a co łatwe
  • Jak umiędzynarodowić i zlokalizować swoje strony
  • Jak obsługiwać użytkowników i role
  • Jak obsługiwać utrzymanie podstawowych struktur danych zamiast wymagać instrukcji SQL aktualizacji.
  • Jak obsługiwać strony wieloczęściowe.
  • Jak skutecznie obsługiwać zawartość statyczną.
  • Jak skalować do wielu komputerów i dużego obciążenia.
  • Jak zapewnić interfejsy API do dostosowywania użytkowników i motywów.

Niektóre z nich mogą nawet oznaczać, że nauczyłeś się tego nie robić. To doświadczenie jest również ważne.

Osobiście doszedłem do etapu, w którym dowiedziałem się, że „jak ciężko może być” obejmuje tylko kilka procent pracy, którą faktycznie trzeba wykonać, aby stworzyć produkt wysokiej jakości, a jeśli miałbym wybrać CMS, szukałbym popularnego z dostępną bazą kodu i dobrą dokumentacją oraz dobrą architekturą wtyczek, która pozwala mi pisać odpowiednie wtyczki, a następnie aktualizować podstawowy CMS, gdy pojawi się nowa wersja.


Dzięki za wkład, miałem już sporo, jak tego nie robić. Na przykład piszę 30 wierszy kodu, aby wykonać proste zadanie, a następnie 2 dni później przejrzyj kod i stwierdzę, że mogę go skrócić do około 10 wierszy. Te doświadczenia, jakkolwiek irytujące, zdecydowanie pomagają w procesie uczenia się, ponieważ sprawiają, że rzeczy bardziej się „przyklejają”.
Alex Bennett

@Alex, to doświadczenie „jak tego nie robić” skaluje się wraz z rozmiarem podstawy kodu twojego projektu. Ale wydaje mi się, że musisz to zrobić przynajmniej raz, aby to docenić :)

3

To tylko nieznaczna odpowiedź na twoje pytanie. Zakładam, że jesteś php i nie wybierasz gotowego systemu CMS. Witaj w klubie! Wielu z nas poszło tą samą drogą. Jakaś rada, która może zmniejszyć obciążenie.

Zaczynałem od budowy własnego CMS-a, implementacji MVC, obsługi internacjonalizacji (i18n), obsługi sesji, jakiegoś sposobu warstwy abstrakcji bazy danych, jakiegoś sposobu obsługi formularzy itp. A potem dowiedziałem się, że to, co robiłem, zostało zrobione wcześniej, ale w lepszy sposób dzięki ramom. Oznacza to, że nie musisz całkowicie wymyślać koła, ale dokładnie tam, gdzie pasuje do twoich potrzeb. Ramy ułatwiają ci życie, ale wymagają dużo wysiłku, aby czytać i uczyć się. Zajęło mi rok, aby naprawdę opanować Symfony i nie żałuję ani chwili.

I masz szczęście, ponieważ w tej chwili jest o wiele więcej wysokiej jakości ram niż wcześniej. By wymienić tylko kilka :

  • Symfony : Dzisiaj wydali stabilną wersję 2.0, to ekscytujące rzeczy. Jest luźno sprzężony, co oznacza, że ​​możesz użyć jednego z komponentów lub wybrać użycie wszystkiego jako zintegrowanego pakietu. Ma dobrą dokumentację i aktywną bazę użytkowników. W przeciwnym razie przestarzała wersja 1.4 jest nadal bardzo niezawodna i przydatna. Ma wiele potężnych wtyczek, które ułatwiają życie. (Wiązki)
  • Zend Framework : niektórzy twierdzą, że nie jest tak naprawdę aktualny (nie wszystkie marki mają nowe funkcje 5.3), ale istnieje już od jakiegoś czasu i jest to w zasadzie zestaw przydatnych komponentów (ponownie luźno powiązane, nie jest grą typu wszystko albo nic) ). Używam go jako zestawu narzędzi do wyszukiwania rzeczy (zend_lucene) i generowania plików pdf. Ale ma również powszechnie używany zestaw kontrolerów MVC. Powinieneś to sprawdzić, jeśli jeszcze tego nie zrobiłeś. Bardzo dobrze udokumentowane.
  • CakePHP : Użyłem go dawno temu i nie mogłem przejść przez dokumentację. Najwyraźniej jest to teraz lepsze i prawdopodobnie warte rozważenia.

  • Yii : Nie korzystałem z niego, ale ostatnio dużo się o nim martwi, prawdopodobnie warte Twojej uwagi.

  • CodeIgniter : słyszałem, że wiele osób chwali Codeigniter za łatwą krzywą uczenia się i łatwość użytkowania. Nie użyłem tego.

Jeśli chcesz wypróbować Python, wiele osób chwali również Django i oczywiście rubin na szynach.

Prawdopodobnie jest ich więcej, ale powinno ci się to przydać. Jeśli nie chcesz ich używać, możesz się wiele nauczyć z tych ram. Powodzenia!


Dzięki, mam duże doświadczenie z CodeIgniter, ale nie wypróbowałem żadnego z pozostałych. Zdecydowanie wezmę je jednak pod uwagę.
Alex Bennett

1
laravel.com ?? CodeIgniter jest obecnie najczęściej używany, ale Lavarel szybko go wyprzedza
Mawg

1
Tak. Ten post ma cztery lata. Laravel dopiero wtedy zaczynał.
Arend

1

Odpowiedź w dużej mierze zależy od tego, co próbujesz osiągnąć.

Jeśli zamierzasz rozwijać swoje umiejętności, dowiedzieć się o zarządzaniu treścią itp. Zatem tak, zdecydowanie, rozwijaj własne. Podobnie, jeśli chcesz nauczyć się frameworka, użyj go.

Jeśli jednak skupiasz się na grze, o której wspominasz, i jej graczach, odpowiedź jest prawie na pewno nie. Twój czas jest ograniczonym, a zatem drogim zasobem. Czas poświęcony na rozwijanie CMS to czas, który nie spędza się na rozwijaniu gry i to ona generuje przychody. Więc zadaj sobie pytanie. Czy czas spędzony na rozwijaniu tego CMSa zamiast na zdobywaniu go, aby poprawić wrażenia z gry, jest czymś więcej niż czasem poświęconym na rozwijanie gry? Jeśli odpowiedź brzmi „tak”, opracuj ją, w przeciwnym razie nie.

Podobnie decyzja CMS o otwartym kodzie źródłowym nad ExpressionEngine powinna sprowadzać się do ToC, jak mówi Saeed. Po prostu, jeśli Koszt (Wordpress)> Koszt (ExpressionEngine), a następnie wydaj 300 USD. Tutaj koszt to koszt zakupu + (godziny_do_dostosowania * twoja_godzina_rata).


1

Znajdź CMS, który odpowiada 90% Twoich potrzeb i modyfikuj go z czasem, aby dodać funkcjonalność, której nie zapewnia.

Umożliwi to wcześniejsze uruchomienie i dostosowanie w miarę zmian potrzeb użytkownika i użytkownika.


Chociaż wydaje się, że to wybór najgorszego z obu światów, nie zgadzam się z przegłosowaniem, więc podniosłem go.
Mawg

1

W pełni zachęcam do zbudowania własnego CMS. Jest to zdecydowanie najlepszy sposób na poznanie tajników takiego systemu w zakresie dostosowywania i bezpieczeństwa. Ale muszę zapytać, jak bardzo zaawansowany jesteś w swoich umiejętnościach PHP. Uwierz mi, to nie dotyczy twojego wieku.

Flaga dla mnie brzmiała: „Nie do końca uważam, że WordPress jest wystarczająco potężny / skalowalny, aby móc poradzić sobie z tym, co próbuję zrobić, a po majsterkowaniu z Drupalem dość długo w ciągu ostatnich kilku dni po prostu nie wydaje się na równi z moimi upodobaniami, a także nie jest dobrze udokumentowane, więc mam problem z wykonaniem pewnych prostych zadań. ”

Mnóstwo książek i stron na temat dostosowywania Worpress i Drupal, nie wspominając o popularnych profilach, które na nich działają, dowodzi, że musisz wiedzieć, co robisz, dostać takie witryny. Nie wspominając o tym, że na te witryny przeznaczane są całe budżety.

Linki na przykład:

http://drupal.org/cases

http://wpmu.org/wordpress-showcase-20-high-profile-sites-running-on-wordpress

Nie ma to na celu zniechęcenia do tego, co próbujesz zrobić, na pewno idź. Chcę się tylko upewnić, że nie poświęcisz zbyt wiele czasu (odkrywając na nowo koło) i w pewnym momencie poczujesz frustrację i po prostu powiesz „efekt”, kiedy możesz rozwinąć swoje talenty i pokazać ludziom, w tym pracodawcom , co masz dzięki obecnie dostępnym narzędziom. W realnym świecie i obecnej gospodarce czas to pieniądz, a firmy i organizacje nie mają czasu i / lub budżetów na ciągłe zajmowanie się tworzeniem projektów od zera.
Dzisiejsze informacje poruszają się z prędkością światła, dlatego programiści, którzy potrafią oddzielić hałas i tworzyć celowe treści / aplikacje / systemy we właściwym czasie realizacji, są bardzo poszukiwani.


0

Tylko Ty możesz odpowiedzieć, czy Wordpress lub Drupal może zrobić to, czego potrzebujesz do CMS, ale jeśli chcesz je wypróbować, dlaczego nie skorzystać z maszyny wirtualnej z Turnkey Linux , takiej jak Wordpress , Drupal , Joomla lub dowolnej z pozostałe ze znacznikiem zarządzania treścią .

Zakładając, że masz już zainstalowany VMware Player lub VirtualBox , w ciągu kilku minut od pobrania dowolnego z tych urządzeń możesz samodzielnie wypróbować oprogramowanie przy minimalnym nakładzie czasu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.