Joomla срещу Drupal

Техническo сравнение на най-добрите системи за управление на съдържанието с отворен код - CMS (Content management systems)

Изясняване на специфичната терминология:
Това, което Drupal нарича модули е подобно на компонент в Joomla. 
Това, което Joomla нарича модули е подобно на блоковете в Drupal. 

Лесно за употреба срещу сложно

Ако се потърси в интернет, повечето анализатори на системите за управление на съдържание, използват спектър, за да определят коя CMS ще бъде най-подходяща за различните задания. WordPress е в единия край на диапазона като най-лесен за употреба, но неподходящ за комплексни проекти, Joomla е в средата, и Drupal е на другия край на диапазона като най-труден за използване и най-подходящ за сложни проекти.

joomla-vs-drupal

В тази категоризация има известна истина, но тя трябва да се разглежда само най-общо.  От гледна точка на уебмастъра, който прави актуализации на сайта, това е доста  точно предположение. Но нещата не стоят точно така.

Вижте диаграмата по-горе. Не само е по-лесно да инсталирате Joomla от Drupal, но и да я конфигурирате. Също така по-лесно е разработването на потребителска функционалност за Joomla, отколкото за Drupal и Wordpress.

Персонализиране в съответствие с изискванията на клиента

За да разработите висококачествен продукт по поръчка, можете лесно да промените някой от 3-те CMS-а, за да направите това, което искате, но то е за сметка на сигурността, поддръжката и надеждността на системата.

Митът, че Drupal е по-подходящ за сложни проекти от Joomla е базиран на оценката на CMS (системата за управление на съдържанието) от гледна точка на уебмастъра, а не на програмиста. Това схващане се дължи на факта, че Drupal дава възможност за модулен подход за дизайна на потребителския интерфейс и на въвеждането на съдържание. Уеб страниците, разработени с Drupal са създадени с помощта на блокове и изгледи.

Това дава гъвкавост на уебмастъра при създаването им без необходимост от програмни модули на Drupal. Joomla предоставя подобни инструменти (компоненти и модули) за уебмастъри и не е толкова трудно като при Drupal за опитен уебмастър да създаде нови сложни уеб страници.

Но създаването на потребителска функционалност е друг въпрос. В днешния свят, където всичко се управлява от софтуер, гъвкавостта при преместване на съдържание на уеб страница и наличието на модулен потребителски интерфейс не е достатъчно. Тъй като потребностите на бизнеса нарастват, функционалността на CMS-а трябва да бъде достатъчно гъвкава, за да отговори на тези изисквания.

Техническо сравнение на Joomla с Drupal

След отваряне на изходниякод на Drupal програмистите са изправени пред кошмар. Персонализирането на Drupal не е лесно, тъйкато той се базира на лошо проектирана рамка, докато Joomla е базирана на добре разработена, обектно-ориентирана MVC (model-view-controller) рамка.Тя включва и няколко примерни дизайна.

Дори ако наемете опитни (и многоскъпи) Drupal програмисти, има голяма вероятност вашият код да заприлича на спагети, което ще доведе до много проблеми в бъдеще, когато поискате да направите допълнителни промени по сайта си.

База данни
  • В Drupal изгледите (дизайните) се съхраняват в базата данни. Това означава, че не може да имате контрол на версиите (например SVN или GIT) и разработчиците не могат да работят заедно по създаване на дизайните.
  • Всеки нов тип съдържание в Drupal отговаря на няколко таблици с бази данни. Това означава, че структурата на базата данни се променя всеки път, когато уебмастърът създава и променя типове съдържание. Това е кошмар за разработчиците, които обичат да създават диаграми единица - връзка (ERD) при изграждане на уеб приложенията. Така никога не можете да разчитате на вашите ERD, защото следващия път, когато погледнете в базата данни, броят на таблици и схемата ще бъде различен.
  • В Drupal log файловете се съхраняват в базата данни. Всички съвременни системи съхраняват log файловете си във файлове. Съхраняване на log файлове в базата данни означава, че те са много трудни за достъп, анализ и профилиране. Разработчикът може да използва инструменти Linux ( като sed и др.) за тяхната обработка и анализ. Този процес е бавен и отнема много дисково пространство за съхранение. Това прави базата данни на системата ненужно голяма и неефективна. При висок трафик на сайта е почти невъзможно да се направи търсене и анализ на тези файлове. Освен това не може да се поддържа log-rotation и архивиране на старите log файлове.
Дизайн

Joomla е обектно ориентирана, но Drupal се основава на старо PHP 4 процедурно програмиране (тъмните дни на php).

Drupal използва модели на дизайн, които са стари и познати като лоша практика.

Joomla прилага модели, които са модерни, представляват добри практики и са използвани от най-добрите системи като symfony2, Zend и фирмени езици за програмиране като java (включително Struts и Spring):

  1. Обектово ориентирани (включително полиморфизъм, капсулиране, онаследяване и др.)
  2. MVC (Model View Control)
  3. Event Driven, Event Dispatcher и Observer
  4. Singleton
  5. Factory

Някои от моделите дизайн, прилагани и в двете системи като DBAL санаправенипо-добре в Joomla. На Joomla DBAL е почти толкова добър, колкото ORM. И ако искате да използвате цялостен ORM на Joomla лесно може да интегрирате с Doctrine.

Прилагането на тези модерни практики се дължи на непрекъснато усъвършенстване на рамката и CMS-а, което Joomla са направили през годините, докато Drupal е в застой. Показателна е и активността на глобалната Joomla общност.

Основна архитектура

joomla-frameJoomla има много чисто ядро, докато кодът на Drupal прилича на спагети. За сравнение - Joomla архитектурата прилича на  коледнодърво, а Drupal архитектурата –на магнитна топка.

Joomla има йерархията на дърво. Joomla ядрото е основното стъбло. Тя  има клонове (API), на които можете да прикачвате други клонове (компоненти) или листа (модули или джунджурии). Така че един компонент може да бъде интегриран едновременно и в системата за сигурност на Joomla (Access Control Levels) и във функциите за администриране на статиите. Като един клон, той може да има подклони и дори може да бъде мост към някой друг клон. Като в крайна степен има минимален контакт между различните клонове на един компонент.

drupal-frame

В Drupal формата е до голяма степен кръгова с множество точки по  повърхността, наречени модули. При изграждане на разширение, можете да се включите в някоя или във всички от тези модули. Тази тясна интеграция означава, че всички контактуват един с друг. Тази архитектура е по-малко елегантна и намалява качеството на кода на всички компоненти. С този вид структура поддръжка в текущ и дългосрочен план се превръща в проблем.

Стандарти за кодиране

PSRе стандарт за кодиране, който изисква PHP спецификация, приет от най-модерните системи като Symfony2 и Zend. 

Joomla е PSR-0съвместима, а скоро ще стане и PSR-1 съвместима. Drupal не е съвместим с всеки PSR.

Изпълнение и кеширане (caching)

Drupal прави средно около 100 заявки за зареждане към базата данни на една страница (при простички сайтове). Заради тази и други особености на изпълнението, свързани с архитектурата на сайта, всичко трябва да се екстрактва и кешира, което изисква допълнително хардуер и ресурси. Joomla е много по-лека и оптимизирана. Тя има много по-бързо ядро. Препоръчваната памет при Joomla е 512MB, докато при Drupal е 2GB.

Повечето бази за сравнение доказват, че без кеширане, Joomla е по-бърза и изисква по-малко ресурси от Drupal. Въпреки това някои смятат, че при кеширане Drupal е по-бърз. Но ако Joomla кеширането е разработено и правилно конфигурирано от експерти, може да надмине Drupal, дори когато кеширането не е активно. Също такаJoomla кеширането е много по-просто и изисква по-малко ресурси, отколкото при Drupal, което прави Joomla лесна за използване, обновяване и персонализиране.

Докато при Drupal разполагате със Solr, за да засилите ефективността си при уеб сайтове с големи бази данни и много потребители, при Joomla имате Сфинкс, написан на роден език C++ код, и по-бърз и лесен от Solr. Не е нужно да инсталирате Sphinx на повечето сайтове, защото Joomla е бърза и достатъчно мощна, за да се справи с много големи бази данни при тежък трафик. Въпреки това, когато е необходимо да се постигне скорост в изпълнението при Joomla, Sphinx го прави много пъти по-бързо, отколкото Solr при Drupal.

Всички по-горе индикации показват, макар и в противоречие с общоприетото мнение, че Joomla е много по-подходяща за разработването на по-големи и по-сложни уеб сайтове, отколкото Drupal.

Какво правят експертите

Един от многото успешни и известни сайтове, изработени с Joomla е linux.com. Хората, които работят в linux.com са известни с това, че са маниаци на тема качество на кода и са най-добрите програмисти. Без значение колко правителствени сайтове можем да цитираме на Drupal, фактът, че linux.com е на Joomla тежи в повече.

Нещо забавно извън темата. Всъщност linux.com наема Linus Torvalds (може би един от най-добрите живи програмисти), лицето, което е създало операционна система Linux и GIT.

Linus Torvalds е един от финалната четворка в маниакалния конкурс на списание geekwire, в който се състезава срещу Алберт Айнщайн, Никола Тесла и Алън Тюринг.

В защита на Drupal, Фондация Linux, стояща зад linux.com, работи и с няколко по-малки сайта на Drupal (напр. video.linux.com).

Но фактът, че използват Joomla за тежко функционалния си основен уебсайт (linux.com), е голям плюс за Joomla.

Също така си струва да се отбележи, че основните сътрудници на Linux са дали на Joomla 5 звезди, а на Drupal само три звезди.

Бизнес

Въпреки че Drupal предполага по-голяма гъвкавост, администрацията е доста сложна за уебмастъра. Клиентите трябва да наемат експерт в Drupal и общите потребители на сайта не могат лесно да бъдат обучени да използват Drupal, както могат да бъдат обучени, за да използват Joomla.

Ако сравним общностите подкрепящи CMS от години, Joomla има много по-голяма общност от разработчици в сравнение с Drupal.

И за да стане още по-трудно за бизнеса, който избира Drupal, добрите уебмастъри с опит в Drupal са много по-трудни за намиране и по-скъпи от Joomla уебмастърите.

Drupal може да бъде усъвършенстван в бъдеще

Новата Drupal 8, която ще излезе скоро е силно подобрена и много от тези проблеми са решени. Ядрото на Drupal е напълно обновено като е използвана Symfony2.

Въпреки това, докато не излезе Drupal 8, тя дори не е заслужава да бъде разглеждана като проект на Drupal за CMS.

Изводи

Ако все още имате съмнения по въпроса, попитайте един уебмастър, който има опит в работата с двете платформи Joomla и Drupal. Joomla е по-добра от Drupal. И това е вярно, независимо от големината и изисквания на сайта.

Ако сте чели някъде в интернет, че Drupal е по-добра от Joomla за комплексни мащабни проекти, просто проверете техните доказателства. Направили ли са технически обосновани изследвания или просто заявяват нещо, в което вярват?

Източник: Butterfly - Arash Arabi (Senior Software Engineer)
http://www.butterfly.com.au/what/we-re-talking-about/entry/joomla-vs-drupal-a-technical-comparison-of-the-best-open-source-cms