После четырёх лет разработки наконец вышла стабильная версия Drupal 8. При этом реакция сообщества оказалась довольно разделенной, одни считают, что этот релиз имеет все шансы полностью свергнуть и заменить Wordpress, другие, что после стольких лет Drupal растерял большинство пользовательской базы и вряд ли соберет ее обратно. Вся причина в иной идеологии чем в других CMS, Drupal 8 делает упор на расширяемость и удобство разработки вместо просто редактирования контента. Как результат по-настоящему оценить его можно будет только года через два, когда уже наполнится база модулей. Но раз он уже вышел, то попробуем посмотреть на ту функциональность, какая есть с точки зрения разработки уже сегодня.
Symfony 2
Еще с самого начала самая нашумевшая новость была о переходе на компоненты Symfony 2. Это сильно упрощает порог входа для тех разработчиков которые уже с ними знакомы, но может отпугнуть многих привыкших к функциональному программированию на Wordpress. А ведь ассортимент плагинов зависит от размера сообщества и является важным фактором при выборе CMS. Кстати стоит заметить что Symfony2 не самый быстрый фреймворк, что приводит к следующему пункту.
Скорость работы
Бенчмарки беты показывали упадок в скорости в 3-4 раза в сравнении с Drupal 7, который сам был намного медленнее Wordpress.
Но infanty убедил меня попробовать сделать отдельный бенчмарк, я создал DigitalOcean дроплет за 5$/месяц и вот его результаты:
Кэш включен
#siege -b -c20 -t60S http://xxxxxxxx/drupal7/taxonomy/term/1
Transactions: 11892 hits
Availability: 100.00 %
Elapsed time: 59.10 secs
Data transferred: 36.69 MB
Response time: 0.10 secs
Transaction rate: 201.22 trans/sec
Throughput: 0.62 MB/sec
Concurrency: 19.93
Successful transactions: 11892
Failed transactions: 0
Longest transaction: 1.31
Shortest transaction: 0.03
#siege -b -c20 -t60S http://xxxxxxxx/drupal8/taxonomy/term/1
Transactions: 5843 hits
Availability: 100.00 %
Elapsed time: 59.84 secs
Data transferred: 20.48 MB
Response time: 0.20 secs
Transaction rate: 97.64 trans/sec
Throughput: 0.34 MB/sec
Concurrency: 19.96
Successful transactions: 5843
Failed transactions: 0
Longest transaction: 1.36
Shortest transaction: 0.07
Больше чем в два раза медленнее в сравнении с предыдущей версией!
Еще один бенчмарк родившейся благодаря chilic из сегодняшнего холивора: devhell.ru/drupal-7-vs-drupal-8-performance
Встроенный CKEditor
Найти красивый WYSIWYG редактор для Drupal 7 всегда было проблемой. Стандартный редактор имел очень сильно урезанный функционал и выглядел как дитя 90-х, особенно на фоне встроенного редактора Wordpress. Сегодняшний CKEditor выглядит уже намного лучше.
Все дальше нет менеджера рисунков
Загрузить рисунок в статью можно, но функционал существенно урезан. В Wordpress есть менеджер загрузок, автоматический ресайз под несколько размеров, даже банальное удаление. В Drupal 8 можно просто загрузить и вставить. Конечно, со временем кто-то сделает модуль с нужным функционалом, но пока ничего нет.
Quickedit
Это новая возможность редактировать текст прямо на странице, что очень удобно для быстрых правок, красиво смотрится и легко продается клиентам.
Views из коробки
Самый популярный плагин из Drupal 7 позволяющий строить произвольные списки контента, виджеты и прочее теперь доступен из коробки. Фактически он являлся киллер фичей, так что его включение в Core не может не радовать.
Twig
Drupal 8 теперь использует тот же шаблонизатор что и Symfony2. Хорошее решение, думаю, многим понравится.
Встроенная мультиязычность
Выглядит очень хорошо и вполне может стать точкой выбора Drupal 8 для многих сайтов.
Под капотом
REST API
Очень интересная фича, открывающая много возможностей по связке сайта, например, с мобильными приложениями.
Свой стиль кода
Я очень надеялся, что если они уж решили взять Symfony2 за основу, то будут использовать и их стандарт кода, но нет. Вместо привычного PSR-2 нас ждет свой стиль кода основан на старом PEAR стандарте.
Не совсем ООП
Если вас раздражали всяческие хуки, массивы и магические строки в Drupal 7, которые надо было знать наизусть и вы ожидали красивого ООП подхода, то тут тоже немного разочарование. По коду все равно бегают массивы, магические строки перекочевали из хуков в .yml файлы конфигурации. Но зато есть DI контейнер.
Свой ORM
Идея построить Drupal 8 на Doctrine прошла только частично, из нее используется только парсер для аннотаций. Как минимум можно было взять еще и DBAL. В любом случае, как раз ORM самая часто использованная часть после может темплейтинга, было бы хорошо не изобретать новый велосипед.
Мои мысли
Не думаю, что он пошатнет Wordpress. Скорость работы и разработки являются критическими факторами для множества компаний, делающих сайты под заказ. Скорее всего, он займет нишу фреймворка для более сложных сайтов, может, даже чуть-чуть заменив на рынке саму Symfony2.
Попробовать Drupal 8 можно тут (нужна регистрация, но не надо подтверждать email).