If I had to find a movie title for a Drupal review of the past year, then I'd choose "2016 - the dawn of Drupal" because it was the first full year of Drupal 8, and D8 is really a game changer!
There is already a huge number of blog posts describing the improvements and new features in detail, so I'll only mention the most important ones that imho pushed the system to the next level. As we at agoradesign fully switched to D8 for new projects in autumn 2015, when rc1 got released, I'm already used to lots of smaller improvements that I may would forget them anyway, like Views, CKEditor and Migrate in core and many other things, as well as bigger improvements like full multilingual support in core.
Symfony and the Drupal community: the heart and brain of the revolution
The most important and fascinating change is of course the new fully OOP based architecture on top of Symfony. I'm using Drupal for about seven years now. Some reasons why I chose Drupal: the clean and homogeneous code base, the great flexibility and extendibility, the transparency and of course the great community, where people are actually working together to solve problems and code modules instead of having a horde of lonesome cowboys like many concurrent CMS have. Especially the last points are leading to an average high quality of the contributed modules, which is really an outstanding characteristic in comparison to other OOS. However, before D8, you had to have some self-discipline to structure your code base of more complex modules well. Now in D8, you are already guided automatically guided into the right direction to have a well structured, readable and testable code base. It has never been so easy to write unit tests!
And it has never been so easy to write your own entity types! That's so great and so cheap now. You can write custom classes with well named getters and setters and additional functions you need and get the all the stuff like administration UI, Field API, permissions and many things for free. We have used this a lot in the past projects - from event entities for an event/course calendar to custom price determination factors in an online shop.
My origin as developer is Java, a strictly typed OOP language. Coding PHP was sometimes very irritating at first, mainly because it is not strictly typed at all and tolerates different kinds of small mistakes and sloppy coding style. And I was missing frameworks like Spring framework at first, which is also in wide areas a kind of an educational book for software architecture. I was missing things like Dependency Injection containers especially when writing unit tests or very custom requirements needing exchanging core logic. But over the years PHP improved and matured a lot. And so did the frameworks. And finally so did Drupal. Therefore coding in 2016 changed for me personally to an old school style, in a positive - Java and Spring style - meaning ;)
Composer + CMI + Drush/Drupal Console = easy deployment and maintenance
The next big important changes are the full Composer support and the new configuration system (CMI) of Drupal 8. With Drush Make Drupal had its own simple dependency management tool long before Composer was born. But the Composer of course is far more powerful and it became industry standard over the last years. And supporting Composer was a must-have feature to stay competitive. And it's so great having this now. It makes managing projects so much easier.
And there's the new configuration system including the possibility to export and synchronize to whole site configuration between different environments (eg. development, staging, live). It was never so easy to extend and maintain a Drupal installation and keep different environments synchronous. In combination with the great DrupalVM project that means that there are absolute no obstacles in having an ideal development workflow that includes developing on a local environment and pushing changes to a staging and/or live environment on the server. And you have all the site's configuration versioned in your Git repository. If that isn't great news, I don't know.
No matter, if you want to update modules or add new features. After finishing the development on your local machine, you only have to upload the changed composer files and the changed configuration yml files and then only have type at max four CLI commands to push your changes to the live site within seconds: composer install;cd web;drush updatedb --y;drush cim --y; Ok, maybe you need an additional "drush cr" to clean the caches, but that's it. Isn't that great?
Last but not least: the new Cache API and BigPipe
One last thing to mention is the new Cache API, which is really a masterpiece! Instead of fully caching pages and blocks, every render array, every entity, etc can has its own caching information (contexts, tags, max-age) and only the necessary pieces will be reloaded instead of flushing whole pages, etc. Even better, this is the perfect base for the next great feature, which is already in core - currently marked as experimental but will be marked as stable with the current code base in 8.3: BigPipe. BigPipe will make your sites fly. Shortly described: for authenticated users, it will deliver the cheap and highly cached parts of a page immediately with the response and use placeholders for more expensive, e.g. non-cacheable parts of the page, and reload these parts via Ajax. This results in a rapid response times, letting the user see almost the full page immediately, and only the "expensive" parts with some small, often not recognizable delay.
The next steps
In 2017, we will hopefully see soon the next important, currently missing things in Drupal core: a more sophisticated media management (there's already great work done on this), HTML email support in core. We'll also see more improvements towards integrating other systems and headless Drupal. We will see improvements regarding the editor experience. And towards performance I'm curious if we'll see RefreshLess in core soon, the next masterpiece of BigPipe's father Wim Leers. I'd also like to see Metatag and Redirect in core, although I don't think that this would happen before D9. And of course we'll see the continuing growth of third-party modules. And one very important thing we will see for sure in 2017 is a stable and full release of Drupal Commerce 2 and especially a huge growth in Commerce's ecosystem of third party modules. But this we'll be the topic of my next blog post coming up soon...
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Symfony ist ein etabliertes, auf PHP basierendes Open-Source-Framework zur Entwicklung modularer und skalierbarer Webanwendungen. Es stellt wiederverwendbare Komponenten und bewährte Strukturen für Aufgaben wie Routing, Formularverarbeitung, Datenbankzugriffe und Authentifizierung bereit. In der Enterprise-Webentwicklung bildet Symfony häufig die technische Grundlage für individuelle Softwarelösungen und ist auch ein zentraler Bestandteil des Drupal-Ökosystems.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Eine Application Programming Interface ist eine standardisierte Programmierschnittstelle, über die Softwareanwendungen Daten und Funktionen kontrolliert miteinander austauschen können. Sie legt fest, welche Anfragen ein System akzeptiert, in welchem Format Informationen übermittelt werden und welche Antworten zurückgegeben werden. In der Webentwicklung ermöglicht sie beispielsweise die Anbindung von ERP-, CRM- oder KI-Systemen an eine Drupal-Plattform und bildet damit eine wichtige Grundlage für skalierbare, integrierte digitale Lösungen.
Dependency Injection (DI) ist ein Softwareentwurfsmuster, bei dem benötigte Abhängigkeiten einer Klasse von außen bereitgestellt werden, anstatt sie selbst zu erzeugen. Dadurch werden Komponenten lose gekoppelt, leichter testbar und besser wartbar, weil Implementierungen flexibel ausgetauscht werden können. In Symfony- und Drupal-Projekten übernimmt häufig der Service-Container die Verwaltung und Bereitstellung dieser Abhängigkeiten.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Java ist eine objektorientierte, plattformunabhängige Programmiersprache und Laufzeitumgebung für die Entwicklung von Webanwendungen, Unternehmenssoftware und mobilen Anwendungen. Java-Programme werden in Bytecode übersetzt und auf der Java Virtual Machine (JVM) ausgeführt, wodurch sie auf unterschiedlichen Betriebssystemen lauffähig sind. In digitalen Projekten kommt Java beispielsweise für skalierbare Backend-Systeme, Microservices und Schnittstellen zu CMS-, ERP- oder KI-Anwendungen zum Einsatz.
Java ist eine objektorientierte, plattformunabhängige Programmiersprache und Laufzeitumgebung für die Entwicklung von Webanwendungen, Unternehmenssoftware und mobilen Anwendungen. Java-Programme werden in Bytecode übersetzt und auf der Java Virtual Machine (JVM) ausgeführt, wodurch sie auf unterschiedlichen Betriebssystemen lauffähig sind. In digitalen Projekten kommt Java beispielsweise für skalierbare Backend-Systeme, Microservices und Schnittstellen zu CMS-, ERP- oder KI-Anwendungen zum Einsatz.
PHP ist eine serverseitig ausgeführte Programmiersprache, mit der dynamische Websites, Webanwendungen und Schnittstellen entwickelt werden. Sie bildet unter anderem die technische Grundlage von Drupal und wird im Enterprise-Umfeld häufig gemeinsam mit dem Symfony Framework eingesetzt, um skalierbare, wartbare und sichere Backend-Systeme zu realisieren. Der PHP-Code wird auf dem Webserver verarbeitet und erzeugt daraus beispielsweise HTML oder strukturierte API-Antworten.
PHP ist eine serverseitig ausgeführte Programmiersprache, mit der dynamische Websites, Webanwendungen und Schnittstellen entwickelt werden. Sie bildet unter anderem die technische Grundlage von Drupal und wird im Enterprise-Umfeld häufig gemeinsam mit dem Symfony Framework eingesetzt, um skalierbare, wartbare und sichere Backend-Systeme zu realisieren. Der PHP-Code wird auf dem Webserver verarbeitet und erzeugt daraus beispielsweise HTML oder strukturierte API-Antworten.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Eine Application Programming Interface ist eine standardisierte Programmierschnittstelle, über die Softwareanwendungen Daten und Funktionen kontrolliert miteinander austauschen können. Sie legt fest, welche Anfragen ein System akzeptiert, in welchem Format Informationen übermittelt werden und welche Antworten zurückgegeben werden. In der Webentwicklung ermöglicht sie beispielsweise die Anbindung von ERP-, CRM- oder KI-Systemen an eine Drupal-Plattform und bildet damit eine wichtige Grundlage für skalierbare, integrierte digitale Lösungen.
BigPipe ist eine von Drupal unterstützte Technik zur Beschleunigung der wahrgenommenen Ladezeit von Webseiten. Dabei wird zunächst das Grundgerüst einer Seite an den Browser übertragen, während dynamische oder personalisierte Inhaltsbereiche – sogenannte Platzhalter – anschließend schrittweise nachgeladen werden. So können Besucherinnen und Besucher bereits mit der Seite interagieren, bevor sämtliche Inhalte vollständig verarbeitet sind.
BigPipe ist eine von Drupal unterstützte Technik zur Beschleunigung der wahrgenommenen Ladezeit von Webseiten. Dabei wird zunächst das Grundgerüst einer Seite an den Browser übertragen, während dynamische oder personalisierte Inhaltsbereiche – sogenannte Platzhalter – anschließend schrittweise nachgeladen werden. So können Besucherinnen und Besucher bereits mit der Seite interagieren, bevor sämtliche Inhalte vollständig verarbeitet sind.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Drupal Commerce ist eine flexible E-Commerce-Plattform auf Basis des Content-Management-Systems Drupal. Sie ermöglicht die Verwaltung von Produkten, Preisen, Bestellungen, Zahlungen und individuellen Verkaufsprozessen und lässt sich über Schnittstellen mit ERP-, CRM- oder Warenwirtschaftssystemen verbinden. Durch die modulare Architektur eignet sich Drupal Commerce besonders für komplexe Onlineshops und digitale Geschäftsmodelle mit individuellen Anforderungen.
BigPipe ist eine von Drupal unterstützte Technik zur Beschleunigung der wahrgenommenen Ladezeit von Webseiten. Dabei wird zunächst das Grundgerüst einer Seite an den Browser übertragen, während dynamische oder personalisierte Inhaltsbereiche – sogenannte Platzhalter – anschließend schrittweise nachgeladen werden. So können Besucherinnen und Besucher bereits mit der Seite interagieren, bevor sämtliche Inhalte vollständig verarbeitet sind.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.