If you have built a media-rich website in Drupal 7, you already know that Drupal’s support for handling media assets was poor in the past. Common user needs such as “multiple file upload,” “re-usability of assets,” “global and per-user media library,” “integration of remote assets,” “media embedding in WYSIWYG,” etc. were recurrent challenges with no standardized solution.
The Drupal 7 version of Media tried to meet most of these needs with a single, monolithic module. While it did a great job, many site builders and developers perceived it as overkill—too complex for sites that only needed some of its functionality.
With this critique in mind, the Media module team decided to radically change the architecture and split all functionality into smaller, simpler components in Drupal 8. The result is a rich ecosystem of solutions that promotes re-usability, extensibility, and collaboration over competition.
Want to make Drupal the best media-handling solution available in any web framework? Now is the perfect time to help, and we are always welcoming to new contributors. This post outlines some of the main ways you might get involved and make an impact on the Drupal 8 Media initiative right away. Not interested in helping? The following article still offers a nice introduction to the suite of modules that comprise the Media project in D8 and what's in store in the future.
First of all, what is the “D8 Media initiative”?
This term encompasses all work being done to improve Drupal 8 media-handling functionalities, including:
- Media Entity, a big list of its complementary modules and File Entity
- Entity Browser and its example modules: File Entity Browser, Content Browser, Media Entity Browser, etc.
- Entity Embed and Url Embed
- Field Formatter and Fallback Formatter
- Crop API and Image Widget Crop
At Drupalcon New Orleans, based on a survey of content creators, Dries proposed a media initiative to move parts of the contributed ecosystem to Drupal core. To drill into the particulars, visit this issue and read more about the first part of the plan here. You can learn more about the reasons behind this effort here or here, but suffice it to say Drupal needs to be friendly to media and publishers out of the box rather than requiring the complex ecosystem of contributed modules that exist today.
As you can see, it’s a very broad initiative involving a lot of functionality (and a lot of code!). There is opportunity to help in virtually any area of expertise, and the team more directly involved with the initiative is currently short of resources, so now is a great moment to get involved.
How can I help?
There are several ways, depending on your particular interests, availability, and level of confidence with coding and contribution to Drupal.
Helping out with documentation
The media initiative has an official handbook intended to provide guidance for people trying to get familiar with all contrib modules available. That documentation is not yet fully complete, and some existing sections need to be updated to reflect some changes that have been happening over time.
The process of improving this guide is open to anyone with a Github account. Simply submit pull requests to the repository using Github's UI or Gitbook if you're unfamiliar with the command line. In any case, if you are stuck on this process and want to help, please feel free to ping @marcoscano in the #drupal-media IRC channel (on freenode) and I’ll be glad to help you get started.
Helping in the issue queues
As mentioned before, the change from a monolithic approach in Drupal 7 to a set of focused modules in Drupal 8 offers many benefits. But it also comes with additional maintenance and support overhead, especially in the issue queues.
If you are already familiar with the issue queues in Drupal, all you need to know is that we try to label all issues that affect the initiative with the “D8Media” tag. You can then use the unified kanban board to navigate through issues from all projects, or you can go to each individual project and start looking for issues to jump on.
If you are just beginning with contribution, and want to wade in slowly, take a look at the “Active” issues, try to reproduce them, and verify if the issue summary is complete. Does the issue describe clear steps to reproduce the problem? Also, the issues in status “Needs review” normally have a patch that would benefit from manual testing as well. You can then verify if the patch applies to the latest
-dev version, confirm if it solves the issue, and if you feel like, you can also review the code to see if it makes sense. Make sure you have these tips on your mind while doing your review.
Finally, when you are comfortable enough, feel free to take any issue in “Active” or “Needs work” status and give it a try yourself! Some useful tips if you are getting familiar to this process can be found here, here, and here.
Helping with the “Media-in-core” initiative
If you are comfortable already with contributing code and want to dive deep into the most active effort of the initiative, you can find the current issues being worked on in the first step of the Media in core plan. This issue lists a series of “must-have,” “should-have,” and “could-have” sub-issues that will need to be done in order for the desired media functionality to be considered stable in Drupal core. The current expectation is to have the base API for dealing with media entities in core ready for 8.4.x and all the basic user-facing niceties ready by 8.5.x, but the truth is that these targets are flexible and will strongly depend on the contribution that can happen in the following months.
No matter the path you choose, don’t feel alone!
The team involved in the initiative is diverse. Some people are more directly involved and spend quite a lot of time contributing, while others do what they can just occasionally. Regardless of where you are, any contribution is welcome. We do try to help each other and keep in touch as much as possible. If you need help starting with something or want a second opinion on how to approach an issue, feel free to join the #drupal-media IRC channel and ask for help (be patient though, the answer does not always comes right away).
The team has also an official sync-up meeting every Wednesday, 2 p.m. UTC, on the #drupal-media IRC channel. Feel free to join and say hello! Also, keep an eye on nearby drupal events, in case there is a Media-focused sprint happening in parallel to a camp or con.