Core comes with some basic support for local files. With "local files" we usually refer to files that are stored on the same server as a given website is hosted from. That usually works fine for images. A lot of other media asset types are often remote nowadays. "Remote media" usually means media assets that are hosted on 3rd party services and also act as standalone resources on the internet, but they can incorporated in other resources too (usually by using embed codes). Examples of such remote resources are YouTube videos, Instagram photos, SoundCloud audio assets, Tweets, Facebook posts, ... Drupal core doesn't provide any support for those.
Contrib space has been solving this problem on its own for ages. In Drupal 7 and earlier we had many different solutions that approached it in a slightly different way. In Drupal 8 we standardised on a single solution. Media entity provides storage solution for local and remote media, handles metadata, thumbnails, business logic and validation in a standardised way. It was adopted by distributions like Lightning and Thunder and it is on a good way to become one of the most popular Drupal 8 modules.
Main problem in the current Drupal 8 situation it the lack of guidance from core. Since there is absolutely nothing in it contrib needs to make all decisions on its own. If, on the other hand, core would provide some basic solutions we could build on that in contrib with much more confidence.
Design core solution for handling of the remote media. Ideally rely on solutions that already exist in contrib space and build on top of that.
- Resolve , which is currently blocking this (media_entity depends on Entity API because of it)
- Move media_entity to core (more or less as it is), see
- Define default bundles (similar to what @Sam152 proposed in ) - part of the two "plugin" issues above for now
- Ideally re-think field widgets UX and improve it along the way. There are some issues about that already. See:
At this point we achieved core feature parity. In order to show what is supported by the media entity and to have an example implementation in core also:
- Create field widget for it.
- Create formatters for it.
User interface changes
Data model changes