If you spent a lot of time in Drupal 7, you may be aware of the Media module, which included tons of features like the media browser, external media support, fieldable files, a WYSIWYG integration, and drag and drop file uploads. When people talk about Media in Drupal, they’re often referring to this module specifically.
In Drupal 8 things are a bit different, as “Media” refers to the ecosystem of modules instead of a monolithic project. This includes many already-popular Drupal 8 modules like Media Entity, Entity Browser, File Entity, and Entity Embed. There are also example modules like File Browser and the Lightning distribution’s Media browser which attempt to bring everything together into something that’s usable out of the box.
Media is one of the top 20 Drupal 7 projects with over 250,000 installs, and Drupal 8 adoption is growing rapidly for the main modules. In addition to individual installs, distributions like Thunder, Lightning, and NP8 are already investing heavily into this ecosystem as the basis for their multimedia support. It’s clear that having some sort of multimedia support in Drupal is still a common requirement, and so far contributed modules have owned the entire solution. This could change significantly in Drupal 8.
Drupal 8 releases now use semantic versioning, which allows for new features and experimental modules to be introduced in new minor versions. What that means is that while backwards compatibility must be maintained, the community still has the opportunity to iterate on Drupal 8 without skipping to a new major version.
This is especially exciting when considering the Media ecosystem – we actually have a chance to get some of our work into core! The question now is: What does media in Drupal 8 core look like?
We now have a collection of contributed modules which have relatively small scopes, but just because they’re useful for the community doesn’t mean they’re appropriate for core. That said, core is lacking some major features that other CMSes have like browsing through existing images, using multimedia content, and embedding external media. Drupal needs to be brought up to speed, but we shouldn’t ignore the groundwork laid in the contributed space. It’s a difficult position to be in for the community, but that doesn’t mean we can’t make progress.
What I want to avoid is rushing to get something out that satisfies a user story but only has one use case. Take re-use and browsing of files for instance – this could be easily achievable through a core experimental module that provides a searchable view of files, with some mechanism that performs basic file validation on the selection. If we deliver that, we get one module that fits one need. What if users want to visually browse non-file entity types like nodes or media entities? The contributed module Entity Browser attempts to provide a solution that works for multiple complex use cases, but has no stable release and is not ready for core. So what’s the path forward – do we wait for contributed project maturity, or push forward in core with something that works for the most common use case?
This is obviously not an easy decision, for contributed or core maintainers. From my perspective I can see some of the base modules like Entity Embed, URL Embed, Entity Browser, and File Entity making it into core at some point, because they all are trying to fill functionality gaps and wouldn’t necessarily break backwards compatibility. The problem is that it’s not as easy as pulling patches to add them as experimental modules, we need stable releases and community support to make sure that they’re ready before even thinking about core.
The good news is that there is a load of work to be done that has nothing to do with writing code. We need mockups, user stories, expectation setting, and discussion to happen before I would expect to see a single patch submitted. We also need users to jump into the Drupal 8 Media ecosystem and help to improve these modules as they are now, just as much as we need people thinking about core.
What I want to see out of core media is something that doesn’t just reach feature parity with our peers, but something that can differentiate Drupal as a CMS. If we get existing file/image browsing and the ability to OEmbed things like Tweets – that’s a big step – but media doesn’t end there. We need to have long term goals for Drupal that go beyond minor versions and consider more complex modules like Media Entity for inclusion in core.
So what’s the next step? I would say that for now the Media ecosystem in Drupal 8 needs more people testing out these modules and helping out in the issue queues. The Drupal Media team uses Github for development on most of their projects, which has the added benefit of finding Drupal 8 Media modules really easy. You can check out https://github.com/drupal-media for a full list.
Please play, break, fix, and tinker as much as you can!