Top 4 Drupal 8 Features
As of last night (October 1, 2015), Drupal 8 beta had reached 0 critical issues. This was a major milestone to enter the release candidate cycle. I've been keeping an eye on the dev cycle and toying with development off and on for over a year now ... waiting to see what is in store for developers. Now that everything seems to be leveled off and somewhat stable, I have created my top four features of Drupal 8.
4. Views and Services in core
Views is undoubtedly the most installed contrib module for Drupal 6 and 7. You pretty much can't do anything without it IMO. Now, the contrib project has been rolled into Drupal core! The community saw it's power and has migrated most (if not all) admin listing pages for entities instead of the specific code for those in previous releases. Web services are the source of the Internet unicorn — write once, use anywhere. It's a grand concept, but most content management systems (CMS) could never deliver on the promise because they had to rely on third-party or custom code to retrieve the content in their CMS then process and deliver that content independently. The Services module was no different; the module had to be downloaded and installed into a Drupal site ... until now. Services has also been rolled into core which provides out-of-the-box RESTful web services to expose content to other applications and services.
3. Mobility built in
For several years now, building websites that are functional across multiple devices, developers have been forced to cater to mobile users in one of two ways.
- An entirely dedicated site with trimmed down content and functionality and specialized HTML markup.
- Attempt to make a single site detect the correct display size and respond accordingly
Most developers have leaned towards the second of the two evils. While it's still not an exact science, it is easier than maintaining two websites. Drupal core team identified this trend and from the start of the dev cycle set out to make everything responsive. They did this by shifting to using HTML 5 markup and other techniques commonly used in responsive theming. This is a huge step for developers and themers alike because both can now worry less about re-templating default templates for contrib code.
2. Everything is now an Entity
I'll be honest, Drupal 6 was a nightmare from a developer perspective; nothing was done the same way. User objects were coded to work one way, nodes a different way, and taxonomy terms yet another. Drupal 7 brought this problem more in line when it introduced the Entity concept. It created a common way to handle content objects within the CMS. Even with this radical change, not everything fell in the same bucket ... namely Blocks; they still had their own API different from other objects in the system. Drupal 8 has now fixed this significant oversight ... and taken it a step further. Now, everything – and I mean EVERYTHING – is now an Entity with a common way to work with every object in the system. Blocks, users, nodes, taxonomy terms, and even configuration items all have the same API which allows more flexibility and allows the extension of all objects in the same way. Want to add a new field to a block? You can now do that without writing code! Want to add a new customizable setting for each user? You can now do that ... also without writing code! The possibilities are really endless!
1. Symfony framework
Symfony is a PHP framework that uses the model-controller-view (MVC) design pattern to bring websites more in line with traditional software applications. It separates the logic so that pieces can be use and/or modified independently with less risk of breaking the entire system. While there was more and more use of "objects" in Drupal 7, it was still mostly a procedural methodology using hooks for extension. Drupal 8 all but eliminates this through the use of the Symfony framework. The Symfony framework's adoption into Drupal 8 was an intelligent long-term decision in my opinion. It either solved or made dealing with some issues easier just because of the nature of how things are done in Symfony with the added bonus of creating a more stable platform for enterprise-grade websites and applications. This is a huge shift in the way Drupal developers have traditionally worked (and has caused a big rebellion within the Drupal community itself) because not every PHP developer used the MVC methodology for development and are behind on the concepts that make it work. And, being a relative subject, MVC may not be the best option for all projects. As I previously stated, I believe this shift to the Symfony framework is an intelligent decision. But it does mean that I'm going to have to put in some extra time to learn how things are now done so I can continue to develop on the system I've come to know and love.
I will soon begin migrating the SimplyHired module, of which I'm the maintainer, to start learning the new API's and generally become a better programmer.