Sep 25 2017
Sep 25

As you may already know the Commerce Guys team released the first stable Drupal 8 version of the truly flexible eCommerce suite last week. In order to celebrate this important event many parties were held all around the globe. Slovenian Drupal community definitely didn't want to miss that.

We gathered at the sprintaj.si headquarters in Izola, Slovenija. Sprintaj.si is not a classical "Drupal" business; they are a digital print shop. They are also a happy Drupal Commerce user and this was their way to show appreciation and give back to the community. Sprintaj.si was also one of the most interesting eCommerce projects I've been involved with. They support many different printed matters and their prices are always calculated on the fly based on the customer's needs. Their killer feature are custom formats and If you ever worked on an eCommerce project you can imagine that this results in some pretty hefty pricing rules.

At the party we had two sessions:

After the more educational part the more fun side of the event continued. Our hosts prepared a bunch of super tasty burgers and sponsored a small barrel of beer. OMG, we could easily repeat that!

Photos by: Aleš Rebec and Ben Rajnović

We would like to congratulate the Commerce team for this important milestone. You rock!

Aug 16 2017
Aug 16

As you may already know Media entity module entered Drupal 8.4 as Media module earlier this year. This was the result of years of hard work in contrib and core space. While the module stayed conceptually the same we used this opportunity to clean it up and refactor some things; mostly to make APIs even easier to understand and use.

Media entity comes with the concept of so-called source plugins (also called type plugins in the past). They are responsible for everything related to a specific media type: they have knowledge about their nature, about the way they should be stored and displayed, they are aware of any business logic related to them, etc.

There were many plugins already available before Drupal core decided to adopt the module and they mostly lived as separate modules in contrib space. Since the API changed a bit during the core transition all this plugins need to be updated. The process is pretty straightforward, but the number of modules that need to be worked on is quite high. This means that we'll need quite some help from the community to do this as fast and as effectively as possible.

Here is where you come in!

Are you interested in contributing but don't know how? Are you looking for a task that is relatively simple but not completely trivial? Then the porting of media source plugins might be a really good entry point for you!

There is a meta issue that is trying to keep the overview over the porting process. You will find the list of modules and their current status in it. In order to get familiar with the changes that were introduced during the core transition you should check the relevant change record. All information that is needed for ports should be available there. If you'd rather work with examples then take a look at Media entity image and Media entity document, which were adopted to core as Image and File source plugins respectively.

When you decided which module deserves your attention check its issue queue. If there is already an issue about the porting get involved there. If there is not create one to let others know that you are working on the port. In any case make sure to add its reference to the meta overview issue. This will help us to keep the general overview over the process.

Need help?

Have you checked all the resources I mentioned above and you feel that there are still things that are not entirely clear? Come to the #drupal-media channel on IRC. We are hanging out in that channel most of the times. Our weekly meetings happen in the same channel every Wednesday at 14h UTC.

Mar 28 2017
Mar 28

When I joined the Drupal community I felt that I arrived in the enthusiastic, welcoming and positive environment. I felt that all contributions are appreciated and that we're all following more or less the same goal. This belief was also mostly the source of motivation for my extensive contributions to the Drupal 8 Media initiative in the past 4 years or so. This has dramatically changed in the last year or so and seems to be getting worse all the time.

Our community has governance and conflict-resolution rules. Everything should be clear and transparent. At least in theory. But in practice things don't work that way. Decisions (political and technical) are often made behind closed doors where only small fraction of the community is allowed to participate. Decision processes are nontransparent and leadership doesn't seem to feel any need to improve that. This was also the main reason why I recently decided to discontinue my DA membership.

I think that, in order to survive in the long term, we'll need to reform our community to become truly transparent and democratic. We've been "living" in a dictatorship and it has been working for us so far. But history shows that too much concentration of power in an small ruling clique almost always leads to its abuse (I strongly recommend this book).

My impression is that the community in general is getting increasingly toxic. It feels that there is more and more hypocrisy, lies, secret goals and partial interests being involved (and I think that the lack of transparency contributes to that). Best indicator for in my case are the community events which have (with some rare bright exceptions) become a burden instead of enjoyment for me. I still enjoy meeting some people that have become my friends during the years, but I recently started seeing the community in general as increasingly negative, abusing and exhausting.

Stress and bad mood directly linked to the happenings in the Drupal started affecting my personal life, including relations with my family. This is not acceptable and I decided to take some time off to think about the situation and to decide if and to what extent I want to remain active in the community. This decision was not made solely due to the most recent ousting (which also clearly showed how the community and its leadership actually work). It is based on many events that happened in last year or so.

This is my personal decision and has nothing to do with my employer. I really enjoy working at MD Systems and have no intentions to introduce any changes into that part of my life.

Mar 22 2017
Mar 22

Tomorrow I'll be giving a workshop about the Drupal 8 media. As part of it we'll build a "media" site from scratch. We will start with the standard Drupal installation, add modules and configuration and see how far we can get.

If you are planning to attend the workshop and want to be fully productive I'd ask you to take some time and prepare your development environment. We will need Drupal 8 checkout with the following modules:

Besides that we'll also need Dropzone and Slick libraries, which you can install based on the docs provided in the README files of the respective modules ([1], [2]).

You can download all dependencies manually or use the project template that I provided for you. Simply clone the repository and run composer install && composer drupal-scaffold in the project root.

Feb 15 2017
Feb 15

One way to start is to check the session that gave at the Drupal dev days Milano in June 2016. I went through the architecture of the module and most common use cases.

[embedded content]

I also proposed a Media workshop for Drupal dev days Seville where I want to cover the entire Drupal 8 Media ecosystem from the site builder's perspective. Besides that I also proposed a session about my recent experiments with Elixir. Not necessarily Drupal or PHP related, but I think that looking beyond our bubble can be very beneficial.

Feb 06 2017
Feb 06

Drupal 8 has very good media handling support. Media team has (and still is) working hard to make Drupal the best CMS in the world when it comes to managing media. We have many modules in the contrib space that solve most of the common use cases in the domain. There is one problem though; there are many of them and some of them are quite complex and abstract. I've noticed that many times users struggle to completely understand what each module is responsible for, which features it comes with and specially how they all together fit into the bigger picture.

There are so-called feature modules (such as File entity browser, Media, Content browser, Media entity browser, ...) and distributions (such as NP8, Thunder, Lightning, ...) which ship with default configuration for the 80% use case. They are plug and play solutions, but it is also possible to use them as a base for learning and research of the ecosystem.

But unfortunately that's not enough. While some people learn the quickest by exploring existing solutions (myself included) that isn't the case for everyone. A lot of people need more guidance and those are the users that we're currently not supporting as much as we should. In order to drive further adoption of the media ecosystem and Drupal 8 itself we need to solve this knowledge sharing problem that I believe we have.

I was thinking about this problem a lot lately and I think I came up with an idea that could help us solve it.

It is a book.

A problem solving oriented book which would guide users through the ecosystem, explain individual parts and, most importantly, offer a bunch of recipes for the common problems. It wouldn't be one of those 800+ pages technical books (who has time to read that?!). Rather it would be a compact source of information which you can have on your desk and use it when you run into a problem. We all want to build websites and the purpose of this book would be to help you do that as fast and as efficiently as possible.

Book would produced by the people that designed and built the Drupal 8 media ecosystem, which would ensure highest levels of quality. It would be released under a Creative commons license with its sources publicly available on GitHub. Printed and compiled eBook versions would be sold through the standard channels.

Why copyleft?

I honestly believe into the free sharing of knowledge in our society. My opinion is that the only way to evolve our civilization is to freely share the knowledge that we have. There are also practical reasons besides the philosophical one. Making the book publicly available ensures that it will be likely updated as the ecosystem and Drupal itself evolve and change. This wouldn't necessarily be the case if the standard copyright license would be used.

Great idea! Why didn't you realize it already?

I am glad that you agree! :) Well... it is not that easy. Producing a real book is not that simple and it also comes with quite some expenses. There is the cost of the content production, proofreading, design, print, shipping, ... I've done a back of a napkin calculation and estimated that we'd need around 20.000€/$21.500/17.000GBP to do it.

My idea was to start a crowdfunding campaign to raise this amount. Backers would, depending on the perk level, get an eBook, print edition or both. Besides that they'd also get early access to the repository with the ability to provide feedback during the process of writing.

Now I need your feedback

I need to hear from you. Is this something that would benefit the community? Is there any better way to educate users about the ecosystem? Would you prefer an online video course instead of a book? In-person training? Something else? Would you be prepared to back the crowdfunding campaign? If yes, what amount would you be prepared to invest?

Please use the form below to share your thoughts. Thank you! I appreciate it.

Jan 29 2017
Jan 29

Sculpin generator

I can hear you asking: "What the hack is that?" Let me quote the Sculpin's authors:

Sculpin is a static site generator written in PHP. It converts Markdown files, Twig templates and standard HTML into a static HTML site that can be easily deployed.

Few days ago a need for a very simple website arose which was way too simple to use Drupal 8 for it. Even Wordpress would be way over the top. On the other hand I really wanted to try static HTML generators for a while and this seemed a perfect opportunity to do that.

There are many static HTML generators out there, Jekyll probably being the most popular (it is also supported by GitHub pages, which makes hosting trivial). I, however, decided to go with Sculpin because it is written in PHP and is using Symfony and Twig. I am already more or less familiar with all these technologies, which made the task a bit easier.

Result?

Few hours, very simple Bootstrap based theme, FlexSlider, some Markdown and violà! Site was done and running. It is performant, I can host it literary everywhere, no need to clear caches every time when something behaves strange, no updates, security out of the box, ...

I could totally use something similar for this blog too. Heresy against The religion of Drupal™ you say? Maybe.... But think about it. I am already using Markdown (not really a WYSIWYG fan) to write my posts. That wouldn't change at all. I use Disqus for comments, which would play perfectly fine with static HTML. I could use Liquid Forms or something similar to run the contact form or simply ask people to reach out via Twitter or IRC. That's it. It could probably be done in a day while it took me 3 or 4 days to migrate my Drupal 7 blog to Drupal 8. Not to mention the significantly easier maintenance.

I might even consider doing that when the migration to Drupal 9 comes around. We'll see what the hip thing at that time will be...

All this got me thinking...

Solutions like Jekyll and Sculpin are gaining popularity in the lowest end of the web market. By that they are eating into what used to be market of CMSes like Drupal and Wordpress just a few years ago. Benefits are clear (mainly performance and easy maintenance). The user experience and the ease of use is still on the CMS side, but for slightly tech savvy users it is completely doable. And this might very likely change in the next few years (every software tries to improve over time, right). That said, this kind of tools might (together with pure SaaS solutions) dominate the lower-end web market in the future.

"But Drupal 8 is enterprise-oriented. That's what we care about!" you'll say. OK. Probably true, but...

It is easier than ever to build custom web projects in PHP. In the times before Composer, Packagist and all other nice stuff that we have today existed it was total PITA to find and bring a bunch of 3rd party libraries together to help you build a custom app. In just a few short years this became much simpler and will become even easier as our tools and ecosystem evolve. And PHP is not alone in this world. There are many new and modern languages/platforms that are all doing similar things from this perspective. All of them have some kind of package manager, dependency resolver, repositories of 3rd party packages, etc. It is to be expected that this will only continue. Tools will become even easier to use, 3rd party libraries/packages will become more powerful and building custom projects based on them even faster.

Higher-end projects usually have some budget to invest into development. What would you choose if the cost of development using a CMS like Drupal would be similar to the cost of building a custom project? Specially if you don't need all the features and complexity that CMS offers?

"Are you saying that Drupal is going away?" you ask.

Of course not. Drupal is a great tool that can efficiently solve many problems. But there are definitely better tools for some others. It also seems that there is strong competition on all sides of the web market, which is eating into the pie that was reserved for traditional CMSes in the past. Drupal will need to think about this and position itself into that segment of the market where it is the strongest. The days of "Drupal for everything" are clearly over.

What is your opinion about this? What do you think future will bring us? Let's continue the discussion in the comments below!

Jan 19 2017
Jan 19

Today I released Entity browser 8.x-1.0-beta4. Release includes some nice features; specially Improved MultiStep selection display, which vastly improves editorial experience.

This is also the last release before the feature freeze, which will happen on February 3rd 2017. No new features will be accepted after that day until 8.x-1.0 is released. Feature requests that are not breaking backward compatibility will be accepted after that.

Huge thanks to all contributors. It has been an interesting and very rewarding ride!

Jan 06 2017
Jan 06

Are you excited about the recent improvements in Drupal core Media? Would you like to join us at one of the next sprints and help us reach our goals? Now you can!

Drupal Mountain camp

Drupal Mountain Camp 2017 will happen between 16th and 19th February in the lovely Davos. Drupal, code community, snow, fondue, outdoor activities and much more. Definitely something that should not be missed!

And the best part? There will be Media sprint going on throughout the event. Eager to join? Simply add yourself to the sprint attendance list and show up. We promise you the best sprint ever!

Jan 02 2017
Jan 02

In December media team met in Berlin and sprinted on Drupal core media improvements for a week.

Today's @drupalmedia sprinters. Awesome group that is making #Drupal the best media management CMS! pic.twitter.com/G2LqD603pH

— Janez Urevc (@slashrsm) December 15, 2016

I demonstrated the results of the sprint in a short video.

[embedded content]

Demo is based on the sandbox project that includes the following patches:

Oct 17 2016
Oct 17

Over the weekend I took some time to update this site to the latest and greatest Drupal. Update itself was pretty straightforward and it went without any problems (great work Drupal community!).

More interesting part was something that I wanted to do for a while. Until now I was using old-school approach repo with all modules and other dependencies committed in it. Most of you probably already heard about the Composer. Thanks to Florian Weber (@webflo) and other contributors it is now fairly easy to manage your Drupal projects with it. There is a Composer template for Drupal projects available which will give you everything you need to get started. It took me just a good hour to fully convert my project (I am no Composer expert). I found this approach very nice and convenient and will be using it for all my future projects.

As part of this I also worked on a pull request for Drupal docker project that makes docroot location configurable, which is a requirement for Composer driven projects.

Oct 05 2016
Oct 05

I've been using a Docker based development environment for about a year. The purpose of this post is to document how I do it and hopefully get some feedback from other Docker users.

I will update this post as I evolve my approach and learn better ways of doing things.

Why would anyone do that?

Modern web applications can become very complex. Days when LAMP was enough to run them are a distant past. Nowadays we need much more; Apache Solr for running search, Memcached or Redis as a fast cache storage backend, reverse proxies like Varnish and more. In order to make the development as similar as possible to the production environments we need most of those services. Installing all this services to the developer's workstation can be complicated and can eat a lot of resources. Docker solves both problems by allowing you to clearly describe your stack and share this definition among your team members. It also allows you to easily start and stop the entire stack with one command, which means that your services only run when you really need them.

There is more... Ever needed to test your app on a different PHP version and tried to run two different versions of PHP in parallel? With docker you simply download the images that you need and change the one that is being used with a trivial change in your definition file.

Ever wanted to try a new software, but you didn't want to install a ton of dependencies on your machine? With Docker you don't need to do that. Simply download an image from Docker Hub, give it a try and remove it when you don't need it any more.

Images

I am mostly relying on Drupal Docker images, which are maintained by Jakub Piasecki (big thanks!) with the help of other members of the community. Its goal is to provide Drupal-tailored set of images that will help anyone to get started quickly and save a lot of time building custom ones. There are of course a PHP and Drush images, but there is more. You will find a Nginx, MySQL and MariaDB images with default configuration suitable for Drupal projects.

Besides Drupal Docker I use the default Redis image and PhantomJS, which is needed to run some types of tests.

Bringing it all together

Every project needs multiple containers to function properly. I am using Docker compose to describe environment for every Drupal project I work on. Drupal compose is a tool tool that allows you to describe docker containers that you need and links between them. This is my standard docker-compose.yml file, which lives in the root of a given Drupal project:

maria:
  image: drupaldocker/mariadb:10
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: 'True'
    MYSQL_DATABASE: drupal
  ports:
    - 3306

web:
  image: drupaldocker/nginx:1
  ports:
    - 80
  volumes_from:
    - php
  links:
    - php

php:
  image: drupaldocker/php-dev:7
  links:
    - maria
  volumes:
    - ./docroot:/var/www/html

drush:
  image: drupaldocker/drush:8
  links:
    - maria
    - web
    - phantomjs
  volumes_from:
    - php

solr:
  image: solr:5.5-alpine
  ports:
    - 8983
  volumes:
    - ./modules/search_api_solr/solr-conf/5.x:/solr-conf/conf
  entrypoint:
    - docker-entrypoint.sh
    - solr-precreate
    - d8
    - /solr-conf

redis:
  image: redis:3-alpine

phantomjs:
  image: wernight/phantomjs:2
  volumes_from:
    - php
  links:
    - web
  entrypoint: phantomjs
  command: "--ssl-protocol=any --ignore-ssl-errors=true /var/www/html/vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768"


One thing that experienced Docker users will notice is the fact that I do not include Drupal codebase in the PHP image. I prefer to check it out on my local machine and mount it into the running container. This allows me to use IDE that is installed on the host machine while still being able to run my Drupal applications inside containers.

With the compose file in place I can now control my environment from anywhere inside the checkout with a few simple commands:

# To bring the environment up.
docker-compose up -d

# To stop it.
docker-compose stop

# To remove all containers (and their data).
docker-compose rm

# To see the status of all running containers.
docker-compose ps


This approach works quite well, but I am aware that is not perfect. It would be very interesting to hear how others approach this (check the comments section below!).

Drush

Drush is a crucial part of any Drupal development workflow. I run it through a separate container, which shares volumes with the main PHP and is linked to the database container. In order to run it I do:

docker-compose run --rm drush drush

This will run the drush command inside drush container (see definition in the compose file above) and remove the container when done. The command is a bit too long to type it into the console every time so I created an alias for it:

# To install drupal.
dcdr site-install --account-name=admin --account-pass=admin

# To enable the Entity browser module.
dcdr en entity_browser

Debugging with xdebug

It has become practically impossible to develope for Drupal without the step debugger. In order to enable this in my setup I use PHP development images that Drupal Docker provides and come with the Xdebug extension pre-installed. Debugging http requests is as easy as enabling debugging for the requests and making sure that the IDE or text editor is listening to the incoming connections from Xdebug.

It is also possible to debug drush requests by setting a few environment variables:

docker-compose run --rm drush sudo -u root XDEBUG_CONFIG="idekey=PHPSTORM_XDEBUG remote_host=172.17.0.1" php /root/.composer/vendor/bin/drush.php

PHPSTORM_XDEBUG is the session id that my IDE listens for and 172.17.0.1 IP of the host machine from within the container. I have an alias for that too:

# To debug migration of users.
dcdrd migrate-import users

Running tests

I run tests through the drush container. In order to run Simpletest I have to do the following:

docker-compose run --rm drush sudo -u www-data php ./core/scripts/run-tests.sh --color --directory modules/entity_browser

And to run PHPUnit:

docker-compose run --rm drush sudo -u www-data MINK_DRIVER_ARGS="[\"http:\/\/phantomjs:8510\"]" SIMPLETEST_DB="mysql://[email protected]/drupal" ./vendor/bin/phpunit --verbose -c core  modules/entity_browser

And yes, there are aliases for those too. See the pattern? :)

Conclusion

The described approach has been working quite well so far. I like Docker and I am planning to keep using it in the future. It is clear to me that my approach probably isn't the most standard and that there are probably better ways.

Exactly for that reason I'd like to hear from you. Do you believe that your solution works better? Do you like to approach things differently? Let us know in the comments section below so we'll learn together!

Sep 06 2016
Sep 06

As many of you most likely already know we've been working on various media-related modules for a while now. Ecosystem as a whole is getting more and more stable and we're seeing great adoption numbers, which proves that we're on the right track.

For Drupal 8 we decided to go with a bit different approach. Instead of having one or two huge media modules we created many smaller modules with very limited scope. This makes the ecosystem much more reliable, reusable and flexible. On the other hands it also means a bit more maintenance work. Taking care of 2 or 3 modules is much easier than doing the same for 15 or 20. Specially if they depend on each other.

While there are some modules that are maintained by other people (HUGE thanks for doing that!) most of the ecosystem currently relies on me when it comes to maintenance. There are many contributors of patches (thanks, thanks, thanks!), but when it comes to committing patches, planning, triaging and pruning issue queues, creating new releases, ... we're pretty limited in terms of human resources.

I think that it is time to change that.

Which modules need co-maintainers?

There are many: Media entity, Media entity image, Media entity audio, Media entity Twitter, Media entity Instagram, Media entity slideshow, Entity browser, Entity embed, Media, Crop API, File entity, Field formatter, Fallback formatter, Embed, URL Embed and DropzoneJS.

Not into coding so much? Interested in documentation instead? We have something for you too!

Some of them are quite complex and represent most critical pieces of the ecosystem and others are quite simple, limited in functionality and less critical. There should be something for everyone. Looking for something that will take an hour or two a month from you? We will find something for you. Want to be involved in the most important (and most interesting) parts of Drupal 8 media? Are you able to spend few hours a week on that? We definitely have few things to keep you entertained.

What are my responsibilities as a co-maintainer?

You will spend a lot of time in the issue queues. You will triage new issues that come in and try to reproduce and fix reported bugs. You will respond to support requests and help users be successful with our modules.

You will also create and review patches. You will be involved in technical discussions and have influence to the future of the module and Drupal media ecosystem as a while. You will commit patches and coordinate releases with your co-maintainers.

You will be one of the public faces of the module and ecosystem.

What are the requirements?

We want you to show interest. First step is to understand the purpose of the module and to have a vision for its future. You also need to show activity in the issue queue. If you are already active you have a bit of advantage. If you are not, don't worry. It is never to late to start.

Most important thing is that we get to know each other and build some level of trust. Trust will result in rights and with them come responsibilities.

What do we offer in return?

Fame, glory and good karma :). Besides that you'll have influence on the future of the Drupal 8 media, become more visible in the community and make some new friends.

What is happening? Are you leaving?!

No, not at all. I am not going anywhere. I am simply following our long term goal to make media ecosystem sustainable. I want to encourage collaboration and help enthusiastic members of our community to learn. Just like a lot of people helped me when I was joining.

Got your attention? Drop me an http://janezurevc.name/contact, ping me on https://twitter.com/slashrsm or join us at our weekly meeting on #drupal-media every Wednesday at 14:00 UTC.

Aug 02 2016
Aug 02

Today we released new versions of many Drupal 8 media modules. This release is specially important for Entity browser and Entity embed modules since we released the last planned alpha version of those modules. If there will be no critical bugs reported in next two weeks we'll release first beta versions of those modules.

List of all released modules:

Jul 21 2016
Jul 21

Today I am very excited! A while ago I asked my friend David Ličen to help me improve appearance and UX for my personal blog. He carefully observed my desires and added some of his own ideas. When we agreed on the initial mock he proceeded with the theme implementation.

He finished his part a while ago. I needed to tweak few other things on the back-end too, which took me way too long to do. Today I finally decided to finish this and deployed the changes to the live website.

How do you like it?

Jul 19 2016
Jul 19

As you may already heard a big free software conference, Open camps happened at the United nations headquarters in New York last week. As part of the NYC Drupal camp, which was just one of the many camps that happened during it, a week-long Drupal 8 media sprint was held.

Media team had great time there and I would like to share our impressions with you.

Drupal Small GroupsSamuel Mortenson, Adam Hoenich and Janez Urevc in deep discussions about media. Photo by Photographic Intrinsic.

Open camps and NYC Drupal camp

Open camps conference happened for the first time this year. It is a mission-driven free software event that grew out of the NYC Drupal camp. Open camps is a week-long, community organized, non-profit conference as part of which more than 20 camps were taking place. Python, Node.js, Elixir, React, Go, Drupal, Wordpress and many others. All in one place. Pure love!

Sunday Keynotes & Sessions - Open Camps 2016More photos available in the official Flickr group.

NYC Drupal camp has been one of the strongest supporters of the Drupal 8 Media Initiative for years. They helped us to kick the initiative off and have been supporting us in many ways since then. This year was no exception to that. Along with many media-related sessions as part of the general conference days and a dedicated media summit they also helped us organise a week-long media sprint.

Did we spend the week drinking most of the time?

Of course! Socialisation is one of the most important parts of any community. OK, that's it. Stay tuned!

I am just joking... hope you were not taking me too seriously. We spent most of the week working hard to get closer to beta releases of our most important contributed modules. A lot of extremely cool features were introduced to our browsing component, which is now much more aware of the world around it, it is able to validate your actions much more confidently and it is much easier to use it as part of your custom code.

One of our favourite modules, File entity browser, seen a lot of improvements too. It was chasing changes in the Entity browser and trying to make the most out of new features that are provided. A lot has been done in the area of UX too.

We also focused on getting to the beta release of our embedding component. Last beta blocker was finally RTBC'ed few days ago.

What is in it for me?

Besides all new features that people were asking for we made a big step forward when it comes to stabilisation of the ecosystem. We feel quite confident that we reached the state at which we are really confident to release the ecosystem to the wider public.

Our plan is to release last new release of all affected modules this week. We will make sure that changes that we did are chased in all of them, which means you will be able to get latest versions and be confident that they work together. This will include last alpha versions of Entity embed and Entity browser modules. If no critical bugs are found in the two weeks time after that we will release first beta versions. This will be a huge step forward for the Drupal 8 media ecosystem, as it will result in the stabilisation of the most important and biggest modules we provide.

This will result in life of our users being much simpler. You will be able to rely on the ecosystem to just work. There will be no more changes or updates that could potentially break the sites using them.

What are the next steps?

As the ecosystem is entering more stable state we're switching our focus a bit. While developing new features and refactoring were our main focus until now we'll spend most of our energy with fixing bugs, providing support and writing documentation in the next weeks and months. We will also spend more time working on solution modules that will be much more convenient for ordinary users to start with (check File entity browser, Content browser, Media and Lightning distribution).

I'd like to thank to everyone that contributed to the Drupal 8 media ecosystem. What we achieve would not be possible without those numerous contributions. I'd also like to thank to the NYC camp. A lot of things that happened in the last two years wouldn't be possible without their support.

Want to get involved?

Hop on to IRC and poke us on #drupal-media. We also re-started our weekly meetings, which are happening every Wednesday at 14:00 UTC on our IRC channel. Join us!

Jul 15 2016
Jul 15
Sam Morenson is thinking about media in Drupal core

Drupal media logo

My friend and a long time member of the Drupal media team has published a blog post where he thinks about media in Drupal core and possible ways forward.

I am very happy to see mature debate evolving in this area. We need more of that!

slashrsm Fri, 15.07.2016 - 17:34 Tags Drupal Media Enjoyed this post? There is more! Slides for my session at DrupalCamp Verona A lot of exciting Drupal 8 media news! Drupal's number 1 is from Switzerland
Jul 14 2016
Jul 14

In the past few months I gave many talks about the modules that we created as part od Drupal 8 media initiative.

Slide decks for all sessions are available on GitHub and are released under Attribution-NonCommercial-ShareAlike 4.0 International License. This basically means that anyone is free to change and use them for non-commercial purposes. The only thing I ask is to give attribution to the original authors.

If you'd like to give a similar talk at your local meetup or camp feel you are encouraged to do so.

What are the topics that you can cover?

Entity embed

Embedding solution for Drupal 8: https://github.com/slashrsm/entity-embed-session.

Entity browser

Entity browsing and selecting tool for Drupal 8: https://github.com/slashrsm/entity-browser-session.

Drupal 8 cropping

Cropping solutions for Drupal 8: https://github.com/slashrsm/d8-cropping-session.

I co-authored and co-presented this session with Alexander Ross.

NP8 enterprise media distribution

Enterprise media distribution built on Drupal 8: https://github.com/slashrsm/np8-session.

Jun 29 2016
Jun 29
Drupal 8 Media module at Google Summer of Code 2016

In this video Vijay Nandwani, our GSoC student, explains his progress on the Drupal 8 Media module.

He also wrote a blog post where he explains more technical details.

slashrsm Wed, 29.06.2016 - 23:11 Tags Drupal Media Enjoyed this post? There is more! Drupal community, please meet Vijay A lot of exciting Drupal 8 media news!
Jun 28 2016
Jun 28

Last week part of the MD Systems team attended Drupal Developer Days in Milan.

Italian style dinner at Navigli in Milano. #drupaldevdays pic.twitter.com/CQOpIpmSGg

— Dragan Eror (@draganeror) June 23, 2016

I'd like to invite you to check our blog post to see how we liked it.

May 24 2016
May 24

Swiss has traditionally been dedicated to the best quality and innovation. Some of the best things in life come from Switzerland. Did anyone mention chocolate?

Photo by Janine, released under CC BY 2.0

Drupal and free software are no exception. Many companies and individuals are dedicated to them on a daily basis. That said, it is no surprise that Drupal's number one comes from Switzerland.

Jerome from MD Systems explains how we achieved that, which are the main advantages of Drupal and why everyone should use it. Very interesting read!

May 24 2016
May 24

Google summer of code 2016 started with a full swing this week. Vijay is one of the students participating in it. He is working on the Media module for Drupal 8.

He wrote an introduction blog post. I'd like to invite you to read it, say hi and follow his work as it progresses through the summer.

Welcome in the Drupal community Vijay!

May 02 2016
May 02

More than two years ago I gave a session about the future of media at DrupalCon Prague. The outcome of that session was a planning sprint that happened two days after it. One of the ideas that was born on that sprint was Media entity, storage layer for media-related information built with simplicity and support for remotely hosted media in mind. It's development started shortly after that and got significantly accelerated in the spring of the next year, when the core of the media initiative met at NYC Camp and agreed on the common battle plan for Drupal 8.

Media entity and it's plugins have been pretty stable for the last few months. It seemed to be almost ready for it's first release, but there were few tickets in the issue queue which I wanted to resolve first. In the last few days I found some time to look at those. Together with Tadej Baša (@paranojik) we managed to finish all of the most important patches, which allowed me to tag 8.x-1.0 yesterday. I am thrilled and extremely proud. A lot of individuals and organizations invested many hours to make this possible and I would like to thank every single one of them. Special thanks go to NYC Camp organizers, who organized two sprints and have been supporting us from the beginning, Examiner.com, my ex employer who allowed me to spend significant amount of my time to work on many media-related modules and MD Systems, who organized two media sprints and let part of their team to work on Drupal 8 media for 3 months.

Along with the main module I released some of it's plugins too: Image, Slideshow, Twitter and Instagram. There are also plugins that handle Video, Audio and Documents, which are also quite ready to be used.

Media entity and it's plugins offer many interesting features:

  • simple and lean storage for local and remote media,
  • out of the box integration with standard Drupal's tools,
  • pluggable architecture that allows easy implementation of additional plugins,
  • 100% automatic delivery of thumbnails,
  • delivery of remote metadata and
  • mapping of remote metadata with entity fields.

I encourage you to try it and let us know what you think. We are looking for co-maintainers too. If you'd like to spend some time in contrib and have ideas for new features let me know.

In the next few weeks we're planning releases of the other media modules. Stay tuned!

Apr 25 2016
Apr 25

Approximately 3 and a half years ago I was finishing my job at Delo. I gave my notice in two months before, but I still had two more months to go. Yes, my notice period was 4 months (please learn from my mistake and never agree on something like that)! I was planning to take a break, travel Asia for few months, spend more time with my family and life to be easy and relaxing for some time. As you will see things didn't really work out that way...

It was early November and I was travelling home from Google Summer of Code mentor's summit. As we touched tarmac in PHL I got message from Rok Žlender. He heard I was leaving Delo and he asked if I would be interested in joining Examiner. Examiner?! Who didn't hear about it? Probably the first Drupal 7 website, biggest Drupal website on the internet at the time and code-base that most of the greatest minds of the community touched at some point. When opportunity like this appears you don't say no. I had an interview, they extended an offer and of course I said yes. And here I was, working in the position I could have just dreamed of just a few months earlier. Of course, my travel plans were postponed indefinitely as a result of that too. :)

In the past three years at Examiner I learned a lot. I was able to work with exciting technologies, fight complex problems that come with ridiculous amounts of traffic and data, intensively contribute to the Drupal community and met amazing people which I'm going to miss a lot. Team at Examiner literally built open-source mentality into it's DNA. I definitely wouldn't be able to be as active in Drupal 8 media initiatve if that wouldn't be a case. I am extremely thankful for that and every other opportunity I was given.

But, like always, every good thing also comes to an end. Lately I realized that I need to make a new step. I wanted a change in my life, which will allow me to keep growing personally and professionally. March 31st was my last day at the company and I finished it with my last deploy of examiner.com. Can it ever get better than that?

I am happy to announce that I am joining MD Systems in one week. They are a Drupal service provider based in Zurich, Switzerland. As a number one organizational contributor to Drupal they are probably the company with strongest dedication to the open source and community that I've ever seen to this day.

25 employees and 459 commit credits in last 90 days. You do the math!

I will be able to work with some of the brightest minds of the community and work on the meaningful and interesting projects. They are true Drupal 8 experts and authors of the NP8, a great Drupal 8 distribution for the enterprise media clients that was running live sites when most of the community still considered Drupal 8 to be completely unsuitable for production. I think that it is very fair to say that together we will be the strongest media experts for Drupal 8. If you need help with media or Drupal 8 in general do not hesitate to contact us!

I am really excited about this transition. There are already interesting new projects on the horizon that whole community will benefit from. Stay tuned!

Feb 24 2016
Feb 24

Image styles are one of many great features Drupal ships with. This part didn't really change from functional point of view in Drupal 8. It does a great job, but if we'd be limited to image effects that ship with core it would be hard to cover more complex use-cases.

The image style system is luckily pluggable (like most of Drupal:)), which allows contributed modules to provide additional image effects.

Image effects is a new module for Drupal 8 as it didn't exist in previous versions. It's purpose is to bring most of contributed image effects under one roof. This makes a lot of sense since it prevents fragmentation and makes effects easier to find. Module is still in alpha, but it already ships with many useful effects.

It tries to support both the GD toolkit from Drupal core and the ImageMagick toolkit, but there may be effects that are not supported by both of them or that provide different results with different toolkits.

Effects

Auto orientation

This effect will read EXIF, check if the camera recorded orientation information and rotate the image accordingly.

Although most modern browsers do support the orientation tag, the information may get lost or become incorrect by other operations. So, to support all browsers and prevent rotation errors, it is better to start each image style with this effect.

Brightness

Supports changing brightness settings of an image. Also supports negative values (darkening).

Brightness effect in action

Colour shift

Colour shift allows us to colourize and image with a colour of choice.

Colour shift effect in action

Contrast

Supports increasing or decreasing a contrast of the image.

Contrast effect in action

Canvas

Allows us to define a canvas and position the image on it. We can also set the background colour.

On the example image I used canvas that is larger than the image and it's background colour set to black.

Canvas effect in action

Set transparent colour

This effect is useful when dealing with transparent GIF images. It allows us to define the colour that will be used instead of transparency.

Strip metadata

Strips entire EXIF metadata from the image. GD does this by default, which means this effect will only be useful if ImageMagick image toolkit is being used.

Watermark

Allows us to place a semi-transparent image anywhere over the original.

Watermark effect in action

What is next

We are actively working towards next alpha release. There are patches for two more effects ready to be reviewed: Background and Text overlay. When this two patches land we'll be able to release second alpha, which will most likely be followed by the first beta release.

We urgently need help with reviewing the two patches. This is a perfect task for anyone that is trying to get involved and looking for a something fairly simple but still fun.

Who is behind the module?

A lot of people contributed. Specially if we consider that most of the effects came from the other Drupal 7 modules like ImageCache actions we're talking about tens or event hundreds of contributors.

However, most of the recent work has been done by @mondrake. If you meet him at any of the community events please buy him a beer.

About me

I (Janez Urevc - @slashrsm) am one of the architects and maintainers of the media ecosystem for Drupal 8. If you like what I am doing please consider donating to my Bitcoin address: 1Xqe6gYWEbF1iKsy3Mr5SbAyebNyucj5t.

Together with some colleagues I'm building a small team of professionals that will be providing top-level consulting, training and development related to media in Drupal 8. If you're interested or you'd like to work with us please get in touch.

Feb 19 2016
Feb 19

Today I committed a configuration UI patch to the Entity browser module. This significantly improves experience for site builders. It is now possible to create, update and delete entity browsers without hacking yaml configuration files.

Configuration is available under Content authoring configuration:

All entity browsers are listed in a table:

Add/edit forms are multi-step. General configuration is on first step:

Configuration for individual plugins is on subsequent steps:

Configuration UI depends on form wizard, which is part of Ctools module. Entity browser will still work without it as it is only needed for edit and add forms.

I also release new alpha version of the module, which includes many other important improvements. Check release notes for more info.

We still need to add configuration forms for some of the entity browser plugins. This are very simple and straightforward tasks and suitable for new contributors. Check the issue queue if you'd like to help.

Feb 15 2016
Feb 15

Summer of code

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.

Drupal is applying to be part of the program in 2016 too. Our involvement in the program was extremely successful in the past. Some of the most prominent members of the community were introduced to Drupal through the Summer of code.

We are currently in the phase of collecting project ideas for 2016 edition of the program. There are few more days left to submit ideas. I just added my proposal today and you should do the same.

Feb 10 2016
Feb 10

Media made a big leap towards a first major milestone. It's time to test what we have and help stabilise it.

At the beginning of November 2015 MD Systems announced the Media initiative program that they initiated in cooperation with Ringier, Gassmann media and Südostschweiz. Initiative was kicked off with a week long sprint, which happened at first week of December in Zurich. Work didn't end when sprint was over. Together with the team at MD Systems I continued to work on most important tasks to achieve a major milestone.

Media sprint attendees
Photo by Stefanie Gupta

Note nr. 1: MD Systems are funding part of my time to work on Drupal 8 media. They are constantly investing in Drupal core and many contrib modules. They are one of the greatest Drupal service providers and number 1 Drupal organizational contributor taking their size into consideration. You need a site built? You should definitely get in touch with them.

Note nr. 2: Examiner.com (my employer and very well know enterprise Drupal 7 site) gives every developer a so-called "Drupal day" every other week. This allows me to work on Drupal 8 media components. We have been working on a Drupal 8 project for a while now, which also allowed me to do a lot of contrib work during my work hours. Thank you! You are great!

Since my last post we did a ton of work in many areas. Let me quickly list most important ones:

  1. Image cropping: We added few more features to Crop API. Image widget crop used those to provide new features such as soft and hard crop size limits, handling of default crops and ability to use cropper tool outside of field widget context. This allowed us to add cropper tool to the file edit form that File entity provides. Image widget crop was also promoted to a full project on drupal.org. We also started working on Crop API integration for Focal point module, which is very close to be committed. This will bring even more standardization in this area, which is something we are very excited about.

  2. File entity: we managed to bring this important module to the level where we can confidently say that it has reached feature parity with Drupal 7 version. This allowed us to bring it back home (to drupal.org) and make -dev version available on the project page.

  3. Entity browser: we continued our work on the configuration UI. Patch is almost ready. We need few more people to help us with testing and reviews. I hope that we will be able to commit it in the next week or so. We also added new selection display plugin which supports multi-step workflow (upload few images, select few more from media library, import some more from a 3rd parts service, save everything in one step). This allows us to build content creation experiences that we never saw in Drupal core or contrib before. Plugin could use some visual improvements. This is great introductionary task for any themers and/or frontend develpers that would like to join us. Get in touch!

  4. Image effects: together with @mondrake we started new project that will become home for majority of image effects that didn't find it's way into core. We already ported most of effects from ImageCache actions and added few more that lived in other Drupal 7 modules. Effects that are currently available in Image effects module are: watermark, auto orientation, brightness, color shift, contrast, set canvas and strip metadata. There is also text overlay effect that is waiting to be reviewed and tested.

There are many other things in different areas of the ecosystem. We fixed bugs and added features in Media entity, Field formatter, Inline entity form, Entity embed, ...

What is next

In the course of the next few weeks we need to review and commit remaining patches. After that we'd like to tag new releases for most of the modules in the ecosystem. This will encourage people to start actively using and testing them.

Media ecosystem for Drupal 8 is not perfect yet, but we are able to support more and more use cases. Testing, finding bugs and fixing them in a timely manner should be our priority at this point. We want to stabilize the ecosystem to allow our users to rely on our components.

How to help?

Start contributing. You can write documentation, test modules in the ecosystem and report bugs, fixing bugs or work on new features, design UX, write automated tests, share ideas and much, much more. You have a skill, we have a task for you.

We are available on IRC. Join us on #drupal-media channel on Freenode.net and get involved. We always publish general announcements on groups.drupal.org/media.

If you prefer more personal communication you can always ping me on Twitter (@slashrsm) or use the contact form on my blog to get in touch.

About me

I (Janez Urevc - @slashrsm) am one of the architects and maintainers of the media ecosystem for Drupal 8. If you like what I am doing please consider donating to my Bitcoin address: 1Xqe6gYWEbF1iKsy3Mr5SbAyebNyucj5t.

Together with some colleagues I'm building a small team of professionals that will be providing top-level consulting, training and development related to media in Drupal 8. If you're interested or you'd like to work with us please get in touch.

Feb 08 2016
Feb 08

Drupal 8 was officially released last November. Since then I have planning to try to migrate my blog from previous version of this great CMS. Drupal 8 comes with many improvements and I definitely wanted to leverage those on my site as well.

Besides that, I always used my personal site as an experimental sandbox where I tested new Drupal modules, themes and technologies. Even if I am very active contributor to Drupal core and contributed modules and I've been working on an enterprise Drupal 8 project at my work, I've never actually migrated a site to Drupal 8 to this date. It was definitely something I wanted to try.

A previous version of janezurevc.name was running on Drupal 7. It is important to note migration from 7 to 8 isn't officially supported yet. Drupal 7 won't reach EOL for at least few more years, which makes this migration not critical. However, migrations from Drupal 6 have been fully supported since the day 8 was released. 6 will reach EOL this month, which makes migration from 6 to 8 an absolute priority.

Migration

My site is actually very basic. I am using content (2 content types), taxonomy (1 vocabulary), few contributed modules and that is really it. It turns out that everything that I needed migrates reliably.

I started the process by reading official documentation. Besides Migrate and Migrate Drupal modules that come with core, I needed few contributed modules: Drupal upgrade, Migrate tools and Migrate plus.

Migration itself was extremely easy. I installed the Drupal 8 site, enabled migrate modules, started migration and waited for a few minutes. That's it! At least for core stuff. There are some glitches when it comes to contributed modules, but even those were fairly easy to resolve.

I want to thank everyone that contributed to Migrate in Drupal core. You did an awesome job!

Theme

The Drupal 7 version of my blog used a Sky theme, which is unfortunately not ported to 8 yet. For that reason I needed to search the theme repository and came across the Bootstrap clean blog.

Bootstrap clean blog project page

It looked nice and it had a Drupal 8 -dev release. Regardless of that, it worked like a charm. I even contributed minor patches and am planning to contribute a few more.

How do you like the theme?

Modules

Like almost every Drupal website out there mine also uses few contributed modules. Let's see how that went.

Disqus

The Disqus module has been ported as part of the Google summer of code project, which I mentored in 2014. The module itself works very well. We changed the architecture a bit; instead of having a custom database table, we instead used a dedicated field type. This approach comes with many benefits. By doing this we're not limited to nodes anymore. Disqus can be used on any entity type now.

Disqus on 'Manage fields' page

Even if the port was there, migration was not. I used this opportunity to dig into this part of Drupal a bit more. I wrote a 7 to 8 migration support for everything Disqus needs. This includes general configuration, fields on entities, statuses and identifiers. My code is already committed and you can give it a try.

Did you try Disqus migration? Let me know how it worked for you.

Pathauto and Redirect

D8 ports are available on their Drupal.org project pages. They work great. While core migrates existing aliases, alias patterns, redirects and other configurations aren't supported yet. I had just 3 alias patterns and less than 10 redirects on my old site, so this wasn't hard to fix manually.

If you meet @Berdir please buy him a beer. He did an awesome job porting this (any many other) modules.

Media

I was using media to embed images in WYSIWYG, which uses the legacy embed token in Drupal 7. This part was unfortunately not ported yet. I was using this in less than 10 places so I decided to fix this manually too. I used a simple SQL query to get node IDs of content that used the legacy token. Then I simply changed it to standard tag with data-entity-* attributes, which Drupal 8 uses for it's own image embeds.

Markdown filter

Recently I found out that I prefer Markdown when producing written content. It doesn't interfere with my writing flow nearly as much as WYSIWYG editors do. When using Markdown, I focus on content instead of the appearance (for the same reason I really liked LaTeX during my university years).

This post being produced in Markdown

Guess what? There is a module for that! The Markdown filter comes with a text filter that will convert Markdown syntax to HTML when displaying it. And it also has a Drupal 8 port. Download, install, configure, use. It was as easy as that!

How does Markdown work for you? Do you prefer it over the WYSIWYG editor as much as I do?

Other modules

I used a few other modules on the page. All of them have some kind of Drupal 8 release:

All of them work without any problem. I downloaded, installed and configured them. Google analytics even comes with support for migration (which meant the 3rd step was not needed).

Great work, maintainers and contributors!

Other interesting stuff

I also used this migration to move my blog to a new hosting solution. The old blog was hosted on a VPS that I had used in the past and am slowly moving away from. Most of my sites and services are currently hosted on a dedicated server at Hetzner (they provide excellent value for the price, so I'd definitely recommend them).

Recently I started using Docker for my development environments and I wanted to try it in production too (I mentioned I am (ab)using my personal site for experimenting, right? :)). As a result of that I'm hosting janezurevc.name in a Dockerized environment managed via Docker compose. Compose is super nice as it allows you to describe your infrastructure stack in a single YAML file. This allows you to commit it to a VCS repository and replicate infrastructure anywhere you want. But this is already a topic planned for some of my future posts.

Did you try to migrate your Drupal 6 or 7 sites to 8? How did it go? Which contributed modules are you using?

Jan 04 2016
Jan 04

Almost exactly two months ago MD Systems announced the Media initiative program that they initiated in cooperation with Ringier, Gassmann media and Südostschweiz. Initiative was kicked off with a week long sprint, which happened at first week of December in Zurich.

Note nr. 1: MD Systems are funding part of my time to work on Drupal 8 media. They are constantly investing in Drupal core and many contrib modules. They are one of the greatest Drupal service providers and number 1 Drupal organizational contributor taking their size into consideration. You need a site built? You should definitely get in touch with them.

Note nr. 2: Examiner.com (my employer and very well know enterprise Drupal 7 site) gives every developer a so-called "Drupal day" every other week. This allows me to work on Drupal 8 media components. We have been working on a Drupal 8 project for a while now, which also allowed me to do a lot of contrib work during my work hours. Thank you! You are great!

Media sprint attendees
Photo by Stefanie Gupta

Sprint was a success! We pushed forward many parts of the media ecosystem, but I'd like expose few things I am very excited about.

  1. Image cropping: along with few minor improvements to the Crop API we did a lot of work on first UI module based on it, Image widget crop.

    [embedded content]

  2. Entity embed: our embedding component got many low-level improvements, general consolidation and clean-up. On top of that we finally added integration with the Entity browser, which significantly improves user experience when selecting an entity for embedding. Instead of just the auto-complete field now we're finally able to use an arbitrary Entity browser for the job.

    [embedded content]

  3. Field formatter: this module provides formatters for entity reference fields. It allows us to represent a referenced entity with one of it's fields. At the sprint we committed an initial implementation of the module, which is still very rough around the edges. However, we are actively, as part of the announced Media initiative program, working on it. We'd like to encourage everyone to give it a try and let us know what you think.
  4. File entity: very well known module from Drupal 7 world. At the sprint we more or less achieved feature parity with it's D7 version. We also moved it the official Drupal media group on GitHub and we hope to bring it back to drupal.org as soon as possible.
  5. Entity browser: we finally managed to start working on configuration UI. It is almost there and we are doing our best to finish it as soon as possible. We also improved UX of the default field widget that comes with the module. Additional to the "Remove" operation we added support for editing selected entities.

    [embedded content]

  6. Media entity and friends: entire family of Media entity modules has seen many improvements. We improved test coverage, fixed many bugs and added field formatters for many media types.

There is much more work that was done, but unfortunately I'm unable to mention everything here. We consistently tagged all issues that were touched during that week. We encourage everyone to check the complete list of issues or our public sprint board to learn more.

I'd like to thank to everyone that helped us to make this sprint come true: MD Systems, Ringier, Südostschweiz, Gassmann media, Miro Dietiker (@miro_dietiker), Jerome Zech (@J_Zech), Sascha Grossenbacher (@berdir), Florian Weber (@webflo), Daniel Wehner (@dawehner), Sanja Milanovi? (@sanja_m), Vladimir Mitrovi? (@devlada), Miloš Den?ev (@denchev), Lukas von Blarer (@lukas-von-blarer), Tassilo Groeper (@pheadeaux), Eduard Reñé Claramunt (@edurenye), Saša Nikoli? (@sasanikolic), Miloš Bovan (@mbovan), Tram Anh Duong (@tduong), Wim Leers (@WimLeers), Christophe Galli (@cgalli), Alexandre Mallet (@woprrr). You are awesome!

How to help?

Start contributing. You can write documentation, test modules in the ecosystem and report bugs, fixing bugs or work on new features, design UX, write automated tests, share ideas and much, much more. You have a skill, we have a task for you.

We are available on IRC. Join us on #drupal-media channel on Freenode.net and get involved. We always publish general announcements on groups.drupal.org/media.

If you prefer more personal communication you can always ping me on Twitter (@slashrsm) or use the contact form on my blog to get in touch.

About me

I (Janez Urevc - @slashrsm) am one of the architects of media ecosystem for Drupal 8. If you like what I am doing please consider donating to my Bitcoin address: 1Xqe6gYWEbF1iKsy3Mr5SbAyebNyucj5t.

Together with some colleagues I'm building a small team of professionals that will be providing top-level consulting, training and development related to media in Drupal 8. If you're interested or you'd like to work with us please get in touch.

Nov 09 2015
Nov 09

Disclaimer: This post ended up being quite long and I apologize for that. Media is a complex problem and there is a lot to be said. If you have better things to do in your life skip directly to the most important part: list of modules in D8 media space and their status. Would you like to help? See what is our current focus. Would you like to get in touch? We will be happy to talk to you!

OK. Now we're ready to start!

With Drupal 8 around the corner a lot of people started asking me when will media be ready. It was quite reasonable to expect this to start happening. Unfortunately there is no simple answer to this question. Shortest would be: "It depends.... What exactly do you need?". I know what you're thinking now... "Are you joking with me!?"

First things first

[embedded content]

Screencast displays WYSIWYG embedding in D8 core.

Quite some things happened since Drupal 8 release cycle started. Initially we focused on improving core itself. Improvements that were added to core are not many, but some of them are still very nice. Most noticeable for a day to day user are WYSIWYG embedding of images, multi-upload with drag'n drop support and listing of files in the system.

[embedded content]

Screencast displays multi upload in Drupal 8.

Good stuff, you have to admit that. :) I hope that you already feel better... While those won't cover every possible use case are still nice improvements that most of sites will leverage from.

Drupal 8 file listing
Drupal 8 file listing.

At some point during the D8 cycle it became clear that we won't be able to include any more major improvements in core. It was necessary to start thinking about contrib space. Discussions were started. We tried to identify what went wrong in the past and proposed ideas to make things better.

At NYCCamp 2014 we finally met in person and came with an ambitious plan. A lot of work was invested into it since then. We had two successful Google Summer of code projects, many volunteers invested 100s of hours and many companies invested significant funds to reach our goal.

Core media team at NYC Camp 2014
Core media team at NYC Camp 2014.

Where are we going?

Most important decision that was made in New York is division of media ecosystem into smaller and independent components. Until now media solutions mostly came as full-featured solutions that were hard to maintain and almost completely unable to integrate and collaborate. This approach comes with many benefits. Let's list just few of them:

  1. Smaller pieces are easier to maintain.
  2. Independent components with clear focus are useful even outside of media.
  3. Components can be shared among many media solutions which simplifies development and maintenance.
  4. Media can re-use components that might already exist in the community.

I often use Drupal Commerce ecosystem as an example. Instead of going down the "one big module that does all and even more" its architects decided to divide the problem space into many smaller pieces. As a result of that we have core commerce module that builds foundation and many plugins that build on top of that. Every e-commerce site is different and this approach allows us to adjust each individual site to the client's needs.


Ryan and Bojan, two of the masterminds behind Drupal Commerce

Ryan and Bojan, two of the masterminds behind Drupal Commerce.

"But, everything that shines ain't gold...", you say. "If you divide the ecosystem into many parts, how will I know where to look for things?"

You are right. Fragmentation does indeed come with some level of complexity. But we think that this can be fixed. I'll give commerce example once again. "Ah! Not again!", you say. Well... yes. Those guys did many things right! Anyone heard about Commerce Kickstart? No? It is a Drupal distribution for e-commerce. It bundles Commerce core and many of it's plugins to build a full-featured solution. It can be used as a plug'n play solution, foundation to start building a project on or as a demonstration of possibilities that Commerce ecosystem has to offer.

Our plan is to offer something similar. Either a distribution or a few "full-featured solution" modules that will bundle components and come with some default functionality. Those solutions will serve similar purpose than Kickstart.

Did you really make it this far?! You must be insane! :) Now you really deserve some really useful info...

Where are we?

OK... There will be many components. But is there anything ready at all? There is. Not everything, but there are pieces you can start using today.

  • File entity: you might be familiar with this module from Drupal 7. It improves core files, makes them fieldable, lets you configure how they're displayed, etc. There is no official port yet, but you can check the unofficial one that lives on GitHub. It will hopefully become official soon (/me looks at maintainers :)).
  • [embedded content]

    Media entity handling Tweets and their metadata.

    Media entity: this alternative media storage approach doesn't directly extend core files. Instead of that creates new entity type from scratch. It uses unchanged core files for local media and handles remote media (Youtube, Twitter, Instagram, ...) differently. It knows how to handle each individual type of media and it able to map metadata (tags, captions, credit info, thumbnails, ...) with entity fields.

  • Entity browser: our browsing and selecting tool. Again, it knows how to work with any entity type. You can use it with entity reference fields, in your custom forms, as a standalone tool and we're planning to integrate it with Entity embed. Entity browser is extremely flexible. It comes with many default plugins and you can write your own. It is still in quite heavy development but some people use it already. There is also some basic documentation in our D8 media guide.
  • [embedded content]

    Media embed in action.

    Entity embed: embedding solution that can swallow any entity that you throw at it. It is very flexible and powerful. It is able to track embedded entities and can modify appearance on the render time. It integrates with CKEditor which gives users a nice UI to select entities to embed and configure their display. This will create a custom HTML element with data attributes that define all configuration. This configuration is picked by the text filter on the display time and converted to a rendered version of the entity. Very mature and useful. You should really give it a try!

  • [embedded content]

    Entity browser with DropzoneJS image uploader and image library.

    DropzoneJS: this module provides Drupal integration for the great multi-upload library. It gives you form element that can be used on custom forms and uses it to provide a widget for Entity browser. File/image field widget is still in development.

  • Crop API: provides storage for all cropping solution. Is able to handle crops based on region and focal point concepts. Also comes with some very basic image effects.
  • Image widget crop: first UI module that builds on top of Crop API. Brings nice cropping experience to core image fields.
  • [embedded content]

    Entity browser and Inline entity form working together.

    Inline entity form: born in Drupal Commerce world quickly became standard tool for advanced manipulation of referenced entities. It turns out it works great with media too!

  • Fallback formatter: provides a field formatter that can attempt multiple formatters and the first one that returns output wins.
  • File entity browser: one of the first "example" modules. Uses Entity browser to provide nice multi-upload experience and ability to reuse files from the library. Uses Masonry grid layout library to make things look nice. Can be used as a starting point if you want to start exploring Entity browser. More features will be added soon.
  • Media pinkeye: another "example" module. Comes with some default configuration that displays what can be done with Media entity and its plugins.

As you can see there is a lot of pieces that you can start using today. Are full-featured modules like Media, Scald and MediaBox ready? No. Are you able to start building good stuff today? Definitely! Those modules will be using same components as I listed above. Can you expect issues and bugs? Yes! Get in touch and we'll fix stuff together.

What remains to be done?

A lot! :) We consistently tag all our issues with "Media Initiative" and "D8Media". Search for this two tags and you'll get the list of issues we need to solve at some point. Additionally we add "Novice" tag to indicate issues that are suitable for new contributors.

We also maintain roadmaps for some of the individual modules:

Check those for the current focus.

How to help?

Start contributing. You can write documentation, test modules in the ecosystem and report bugs, fixing bugs or work on new features, design UX, write automated tests, share ideas and much, much more. You have a skill, we have a task for you.

We are available on IRC. Join us on #drupal-media channel on Freenode.net and get involved. We always publish general announcements on groups.drupal.org/media.

If you prefer more personal communication you can always ping me on Twitter (@slashrsm) or use the contact form on this site to get in touch.

We are sprinting too. Join us on one of the sprints in the near future:

  1. 2nd Drupal 8 media virtual sprint (13. November 2015)
  2. Sprint at DrupalCamp Vienna (29. November 2015)
  3. Week long media sprint in Zurich - part of the broader D8 Media initiative program started by MD Systems (30. November - 4. December 2015)

I want to start building D8 site and I need media. What to do?

There are several things you can do:

  1. Check components that we already have and see if you can use them to build what you want.
  2. Encourage your team to get involved with the initiative and help us pushing media forward.
  3. Don't start building your own custom solution. Please. Even if it sounds like a good idea it is not. Believe me. This is never a good idea. You will have problems maintaining your custom solution. Invest time in common efforts. You will get what you need and community will help you maintaining it. We don't provide solutions for your problems? Talk to us! We will listen. I promise! Read this paragraph again.
  4. You don't have in-house knowledge/skills? You have the team that needs just a bit of guidance? We can provide some level of commercial support, coaching and consulting. Get in touch and we'll see what can be done.

Conclusion

Our goal is to make Drupal the best media handling solution for the internet. As you can see there's still a long way to reach that. However, we have a plan and we're working heavily. Some things are there and you can start using them today.

Are you missing something? Join us. Only together we'll make Drupal media shine. Share this post with a co-worker or friend. Let us know what you think. Get involved and help us reach our goal.

I would like to thank the people who preliminary reviewed this post and suggested improvements (in random order): my wife Nataša, Károly Négyesi (@chx), Primož Hmeljak (@Primsi), Tadej Baša (@paranojik), Miro Dietiker and Sascha Grossenbacher (@berdir). I would also like to thank everybody that contributed to the initiative in past years.

Oct 03 2015
Oct 03

On Friday, 2nd Oct 2015, we organized the first virtual media sprint. Four sprinters showed up and worked on D8 media issues.

First a bit of background

Examiner.com logo

At Examiner.com we get an entire day to spend (along with contributions that we do as part of our regular work) on community contributions every other week. We call it "Drupal day" and we love it! It is our way of saying "Thank you!" to the community. We understand that we wouldn't be as successful as we are without incredible efforts that are invested in Drupal and other free software projects we use.

We are currently working on a very cool D8 project where we heavily use modules from media ecosystem. I might write another post solely about that in the near future. My companies' need for solid media handling solution aligns very nicely with my personal interest in the same field. As a result of that I spend most of my Drupal days on improving media ecosystem and thinking about it. Having a day to focus on things that excite you is great, but what if there would be more people joining?

This is when idea for virtual sprint was born. I published the event on our group and invited everyone to join me.

Results

On the actual date three other sprinters joined me:

How to contribute?

Anyone is invited to contribute also outside of official sprints. We tag all our issues with "D8Media", which helps us maintain list of all issues we need to work on. We also maintain a list of issues suitable for new contributors. You can find us on IRC (#drupal-media @ Freenode) and a lot of Drupal events (BADCamp and Drupal camp Vienna in the nearest future).

In order to get an idea about the focus of individual modules we also invite you to check module-specific roadmap planning meta-issues:

We will be adding more of those soon. 

Will there be more?

We'd certainly like to organize more virtual (and non-virtual) sprints in the future if we'll see interest from the community/sprinters. Do you think there should be more events like this? Would you like to join us next time? Let us know in the comments section below. You can also follow our group as we publish all events and other updates there.

Oct 10 2014
Oct 10

It's been a while since my last post and with DrupalCon Amsterdam behind us it seems a good timing for another update.

Note: Examiner.com (my employer and very well know enterprise Drupal 7 site) gives every developer a so-called "Drupal day" every other week. I am writing this blog post as part of it as I do some of my code contributions.

Core

Since last post we fixed:

We are currently focusing on few issues:

Contrib

We've been chasing HEAD a lot during past months. We can't guarantee that everything works at any given time, but we're trying to follow changes in core as frequently as we can.

  • entity_embed is practically ready (thanks to our GSoC student @cs_shadow). We are planning to split it's general functionality into embed module that would allow other modules to embed various types of content (not just Drupal entities). entity_embed will become just one of the modules in this group. @Dave Reid, @cs_shadow and @eaton did most work on planning this split.
  • entity_browser is not progressing as fast as we'd like, but it gained some momentum recently. @kmoll and myself have been working on base APIs during last two weeks or so. We are hoping to have first working demo in a month or so.
  • media_entity is also progressing well. Besides HEAD chasing I implemented media type provider plugins, which are responsible for business logic behind media (validation and providing additional fields ATM - we will add more responsibilities as we go). There is also sample implementation (not finished at all, but ready to play with) for YouTube videos. @Primsi is currently working on Twitter implementation and @designesse on Instagram implementation.

Core conversation in Amsterdam

@Dave Reid and myself gave a talk about the current state of media in D8 on DrupalCon Amsterdam. Recording is available for all of you that missed our session.

[embedded content]

Other stuff

@willyk has been working on initiative funding and organizational efforts.

In Amsterdam we decided that we want to organize 4 dedicated media sprints in 2015 (one in each quarter). Sprinting at events is great, but there are too many distractions to really focus on complex problems we're trying to solve. Organizing a dedicated sprint that focuses on media only should help us to focus and achieve some good progress. We will also set quarterly goals and clearly communicate them with the community. This will help us to focus on most important things at any given time.

Would you like to help organize, provide funds or attend one of those sprints? Make sure you let us know sooner rather than later!

How to get involved?

We have weekly scrums every Tuesday at 15:30 UTC (we are considering alternate time/date, check g.d.o group for updates). You can also find us on #drupal-media on Freenode or follow our updates on groups.drupal.org/media. You can find us at DrupalCamp Serbia and  BADCamp.

 

Aug 06 2014
Aug 06

Media team is very active. Purpose of this post is to provide the progress update to the rest of the community that might not be aware of everything that is going on in this field. I am planning to publish this posts on a regular basis. We'll see how it goes :).

Media sprint in Zurich

We had a very productive sprint about a week ago in Zurich were we've worked on various core and contrib issues (see below of details). Sprint was organized by MD-Systems. They did their best to bring everyone togehter and made sure that we felt comfortable and welocome. Thank you so much (special thanks go to @miro_dieteker and @Berdir)!

Core

In Zurich @blueminds fixed [#2078473] Use entity access API for checking access to private files.

We are currently focusing on few issues:

Contrib

  • entity_embed modue is progressing very well (thanks to our GSoC student @cs_shadow). Module allows us to embed any entity in WYSIWYG and it does it in a smart way that allows us to keep our data nicely structured. See g.d.o post for more info and give it a try!
  • fallback_formatter is a field formatter that allows us to selectively use multple other field formatters on a single field. @Dave Reid created D7 version after NYC camp and @blueminds ported it to D8.
  • entity_browser is a module that will provide a generic tool that will allow us to list, create and select entites in various contexts (entity reference field, WYSIWYG embed, ...). In Zurich I completed basic structure of the module and now I am focusing on defining interfaces for all components of the system. This will allow us to spread work and allow various people to work on different parts of the system at the same time.
  • file_entity is a module that is basic storage component for Media module in D7. @Berdir started D8 port during our sprint in Zurich.
  • media_entity is an alternative storage component that is based of different similar components from D7 world. Basic implementation was done at DC Vienna back in December. In Zurich we chased D8 head, improved Views integration, added more tests, ... (thanks @blueminds, @Berdir, @andypost, @ja_ca and @boztek).

How to get involved?

We have weekly scrums every Tuesday at 15:30 UTC (we are considering alternate time/date, check g.d.o group for updates). You can also find us on #drupal-media on Freenode or follow our updates on groups.drupal.org/media. There will be media sprints at DrupalCon Amsterdam and BADCamp.

You are also welcome to attend the core conversation that I am going to give with @Dave Reid.

Aug 05 2014
Aug 05
Progress of Entity embed module in GSoC 2014 slashrsm Tue, 05.08.2014 - 12:20

If you want to try the module and/or contribute please visit the project page. You are also invited to check original post on groups.drupal.org.

Jul 30 2014
Jul 30

For more info about the project and it's progress see the post on groups.drupal.org.

May 20 2014
May 20

Chandan is one of the Drupal's students that were accepted into Google Summer of code program this year. He wrote an introduction post to say hi and explain what he's working on.

May 20 2014
May 20

Jayesh is one of the Drupal's students that were accepted into Google Summer of code program this year. He wrote an introduction post to say hi and explain what he's working on.

Apr 21 2014
Apr 21

DrupalCamp Alpe-Adria will be one of the most scenic Drupal events this spring in Europe. It will take place in a magnificent costal town Portorož, which is conveniently located in the northern part of Adriatic sea.

Camp will happen on 17th and 18th May with extended sprints happening also on 19th and 20th. We already have some great session proposals and new ones are coming in almost every day! Are you new to Drupal? No problems! We're preparing some very interesting beginner-level sessions and on-site trainings. For those who prefer to code we have some very interesting sprints to offer! There will be Drupal 8 core and Drupal 8 media sprints going on. Are you interested in organizing another sprint? Do not hesitate to contact us immediately!

Early bird tickets are available only until 25th April. Don't miss your last chance to get them and start planning your travels well in advance. Portorož is very nice for families and children so you should really consider bringing your significant others with you and maybe extending Drupal camp into a short spring vacation.

[embedded content]

Apr 11 2014
Apr 11

[embedded content]

If you came this far you probably liked this video just as much as I did :). You should really consider coming to Portorož in May to attend DC Alpe-Adria. We will have 2 days of great sessions, BoFs and sprints + 2 more day of extended sprints where we're going to focus on D8 and making it rock!

Portorož is also a great destination for children and families so you could bring your significant others and/or families with you and extend Drupal camp into an unforgettable vacation.

Interested? Of course you are! Find out more at drupalalpeadria.org.

Pages

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web