Last DrupalCon Europe, I advocated for more sustainable contribution. I had been struggling to come to terms with the amount of takers versus makers and instead of presenting yet another technical topic, I tried my hand at expressing my feelings instead.
The idea was that, in order to get things done, small personal or professional sacrifices will no longer cut it. While I am still very grateful for Factorial sponsoring my one day a week to work on core or contrib, it’s a drop in the bucket when it comes to effecting large scale changes. So I set out to find meaningful ways to make contributing easier.
While many things were discussed, we have to realize that some changes will not be happening overnight. In the short term, we could look into finding sponsors for specific features, but that still leaves the issue that you often need to have something first before you can entice sponsors into helping out.
In the mid term, we should keep voicing our concerns, write blog posts (like this one) and try to find positive examples of other projects making a difference. The long term goal is that we overhaul the entire system of contributions so that time spent can be paid for by more than just a handful of believers. If we expect to keep this project running on people’s free time, then it’s destined to fail as responsibilities and time spent become bigger the longer you stick around, but the pay remains zero.
On that note we have a pleasant announcement to make: The Group module has a new release and it was almost entirely based on sponsored work. And our sponsors could not have been more different: the European Commission and Global Game Jam.
The EC sponsored permissions for translations, which sadly could not make it into the release just yet (see release notes for more details) and GGJ sponsored the implementation of making Group entities revisionable.
If I were to have done this on my one day a week, it would have taken me somewhere between six to twelve months to achieve. Now, we managed to finish all this work in a little over a month. It’s amazing to see what we can do when people decide to sponsor the volunteers so that they can spend more time on the things they do.
That’s basically all I had to say. The intro being longer than the meat of the story, I still thought it was worth posting nonetheless. Even if only to say “Thank you!”
In closing, I’d like to thank Factorial for obvious reasons and ANNAI for the previous sponsorship of the Subgroup module. They were the ones who set us on the path of seeking more sponsorships so it’s only natural we give them some credit too.
Entity types in core come with what is known as handlers: Various smaller classes that carry out a specific task for the entity type. Group copied this system for its own plugins, but quickly found out that there are severe extensibility limitations to how core deals with handler declarations.
As many of you know, DrupalCon Barcelona 2020 became DrupalCon Europe because of CoViD-19, turning what was supposed to be Europe’s annual Drupal get-together into a remote experience. Right off the bat I want to state that the effort that went into organizing this was stellar and the result truly showed.
After having worked on the Drupal 8 version for almost 5 years, the Group module has finally got its 8.x-1.0 release. I am personally very proud of this major milestone and am not even a little bit disappointed it took me longer than Drupal 8’s lifecycle to build.
It’s been a few years now, but I still remember the first time I saw a freshly installed Drupal 7 after being familiar with version 6. Or after I installed Drupal 8 for the first time and a “Woooow” went through my mind. Everything seemed familiar and yet new. But it’s exactly this wow effect that’s missing when upgrading from Drupal 8 to Drupal 9. And that’s a good thing.
Fields in Drupal 9 can be defined in code, or they can be defined in configuration. Both techniques have their uses and advantages. Typically code fields apply to all bundles of the entity type, as so-called base fields, while config fields apply only to a single bundle.