#d8rules

#d8rules reaches milestone 2

The last 4 months, we have been busy getting the MVP for Rules in Drupal 8 ready. Thanks to the funding by Acquia, drunomics & epiqo - fago and klausi were able to dedicate 316 hours on implementing the most critical features to complete milestone 2 (of 3) for #d8rules.

So what has been done:

  • Completed the Rules engine features (Metadata assertions, logging service)

  • Completed Rules plugins (Events, Loops, components API)

  • Completed configuration management system support (config entity, CMI support, integrity checks)

  • Completed action & condition APIs and used the improvements for the generic Rules integration

  • Basically usable UI (Nothing fancy yet) - auto-completion functionality has been added right now (in dev only), to make it easier to use.

  • Added API for embedding the Rules UI, such that modules can re-use it (e.g. for Commerce to embed Rules conditions UI)

  • Token replacement support based on a new Typed-Data based token replacement API

We have released Rules 8.x Alpha 1 with all the above mentioned improvements as a first, experimental preview of the Rules module in Drupal 8.

There are many exciting things, one of them we’d like to highlight: We implemented a reusable token replacement API that covers all entities and fields via Typed Data. Some examples of valid tokens would be:

{{ node.field_integer.2.value | default('0') }}

{{ node.title.value | default('tEsT') | lower }}

The replacement API makes use of twig style replacements and is extensible via further filter plugins (like default, or lower). As the token replacement API is independent of Rules, we are working on moving it and other Typed Data API improvements to another location, such that those APIs are re-usable independently of Rules.

Documentation for contributing or developing with Rules can be found at http://docs.d8rules.org. It currently mostly covers the essentials: Providing actions, conditions and events.

Also, we worked on improving our config exports to avoid future changes as far as possible - however, we won’t don’t support updates for the created configurations until the first beta.

Next steps

Milestone 3 is all about getting a final release of Rules for Drupal 8 ready.

We are now working on the caching improvements and adding auto-completion support for data selection and will soon tag another alpha release with those features included.

Besides that, we’ll work on stabilizing the Rules features and extend the UI capabilities to include features like loops or Typed Data widgets and formatters.

Today is a good day to go and dive into Rules for Drupal 8 for any developer. Our code base is full of Drupal 8 best practices, leverages plug-ins for Actions, Conditions, integrates with Symfony events and the Drupal 8 core context API. You will also find plenty of Unit and Integration tests - check out our roadmap that also lists entry points for new contributors.

Of course, progress we’ll be slower now as we are now out of the sponsored hours again. We are looking for a remaining amount of € 13.500 to complete milestone 3 and deliver a stable release of Rules for Drupal 8. If you’re an agency or a client wanting to use Rules in Drupal 8, we’d appreciate your support to speed up completing the module. Just drop me a mail or get in touch using our sponsor form.

Drupal 8 Rules M2 planned for March 2016

The #d8rules team is excited to welcome Acquia to our list of supporters. With their generous support of fully funding milestone 2, fago & klausi can plan dedicated time over the next months to focus on getting the MVP of Rules for Drupal 8 done.

Since finishing milestone 1 and DrupalCon Barcelona, we are basically in a developer preview state. The basic APIs of Rules 8 are pretty stable already, enabling contributed module porters starting work on their integrations.

Milestone 2

Milestone 2 now is all about getting a useable product to developers & end users of Drupal 8.

See what's planned for M2:

  • Completing Rules engine features (Metadata assertions, logging service)

  • Rules plug-ins part two (Events, Loops, caching,  components API)

  • Configuration management system support (config entity, CMI support, integrity checks & config schema)

  • Generic rules integrations (Typed data & entity support)

  • Entity token support

  • Basically usable UI (Nothing fancy yet)
  • Basic API for embedding condition and action forms

The estimated, remaining 316 hours for M2 are fully funded by Acquia, drunomics and epiqo. Acquia is putting € 14.220,- in to help us work continuously over the next months. drunomics & epiqo are providing 50 % by a lowered rate of € 45 for fago and klausi to work on #d8rules during office hours.

We are expecting a release for M2 for beginning of March, 2016. This should allow the 25 % Drupal 7 sites which use the Rules module to start building for Drupal 8. Of course, we are also looking forward to see new adapters making use of flexible, UI-driven workflows.

Thanks again for everybody helping speeding up our work of porting Rules to Drupal 8. If you'd like to help out getting funding secured for Milestone 3, let's get in contact.

#d8rules finishes milestone 1

We are proud to announce completion of milestone 1 for the #d8rules initiative. After a year of intense working on porting the Rules module to Drupal 8, we can now officially close the first round of implementation.

As Drupal 8 by itself was delayed, so did we spend more time trying to fix Drupal core issues. Yet, all in all good progress was made and we are happy to present the results: not only milestone 1 has been finished, we also trained dozens of new contributors and already started implementing parts which originally had been scheduled for later on. Before we get too deep into the details, here’s a quick overview, what happened so far:

How the #d8rules initiative came along

In the beginning of 2014, a year and a half ago, fago & me sat together to discuss the future of the Rules module. With Drupal 8 on the horizon and fago being busy with running his own company drunomics, working on Drupal 8 core itself and maintaining various Drupal 7 modules, we were pretty worried: without something to happen, the complex task of porting the Rules module to Drupal 8 would probably be delayed years after the release of Drupal 8 

So we sat together and decided that a funding campaign would be an interesting idea to allocate money to free up development resources currently not available, but also to provide a structure & goal to help move the project forward. The #d8rules initiative was born and at Drupal Developer Days Szeged, we reached out to members from the community and captured their voices supporting for our cause. A month later, we started the crowdfunding campaign on drupalfund.us. Combined with corporate funding we were able to get milestone 1 funded by July 2014. EUR 18.000 could now be used by fago & klausi to finish ⅓ of porting the Rules module to Drupal 8 

We finished milestone 1 and a lot more

These are the main achievements of the first milestone 

  • Rules core engine, plugin architecture & interface

  • Worked on 27 core issues related to Rules in Drupal 8

  • Integrated the context system which is used for parameters and provided variables in Rules

  • Extended the conditions API and context system as needed

  • Forked the actions API to work based upon the context system also. Improving this in core is planned but not possible anymore

  • All the basic Rules expressions such as Actions, Conditions, Rules components, action sets etc. have been implemented.

  • Automated tests via Travis CI

While working on milestone 1, we also completed various additional tasks that originally were not planned for the first phase:

Many sprinters, 27 code contributors already

The #d8rules initiative for us is not only about asking for money to get something done. A major focus was also laid on sprinting with the global community of Drupal contributors to teach them Drupal 8 and allow to help out with porting the module.

So far, we conducted 11 sprints, 3 full training workshops and presented at various conferences about the status of the Rules module for Drupal 8. The sprinting experience over time got better and better: we developed a routine of getting contributors up to speed with new coding patterns for Drupal 8.

Newbies helped porting an extensive amount of conditions, actions & event integrations from D7 to D8. These tasks make for a great introduction to the plugin system, context API but also unit testing. Beyond the valuable part of porting those basic integrations, we saw a great amount of advanced & creative contributions already. Derivative plug-in tests, Flag action integrations, Rules documentation, Personas, Webprofiler & a mathematical expression lexer/parser are some examples that are listed in more detail in our Drupal Developer Days Sprints wrap-up.

What’s next? Our updated roadmap for #d8rules

Planning ahead is always a tricky task but it is good to have a goal. We identified some problems in our initial planning where for example event plugins and the Rules UI where planned too late in the development cycle. We realized that in order to accelerate momentum, we need those motivational gains earlier on and re-prioritized accordingly. The updated roadmap can be found on drupal.org, here's the current overview: 

Developer preview after DrupalCon Barcelona

By the end of DrupalCon Barcelona, we want to ship a first developer preview with all the basic APIs in place needed for other module developers to write their integrations. In Drupal 7, over 300 modules come with Rules integrations so this is a major milestone to unblock development of the ecosystem.

Milestone 2: Rules core completion with basic UI

We have re-prioritized so that milestone 2 would be a MVP with the basic functionality needed to use Rules for early adopters on their Drupal 8 production websites. Most of the APIs will be complete and a minimal user interface will be provided. 

Milestone 2 is estimated for 316h of remaining work (EUR 14.220 based on the community rate of EUR 45,-) 

Milestone 3: Rules 8.x release

After the MVP has been released, milestone 3 completes a couple of Rules core engine follow ups, provides a more sophisticated user interface as well as the rules scheduler. Existing integrations are already pretty much done, but will also be completed then.

Milestone 3 is estimated for 240h of remaining work (EUR 10.800 based on the community rate of EUR 45,-)

How you can help

Donate to unblock time of the Rules core developers fago & klausi. Contact me via josef@amazeelabs.com or use our invoice form. We have sponsor packages between € 450 and € 7500 available.

Together we can make this happen. Thanks a lot to everyone involved so far,
Josef / dasjo on behalf of the #d8rules team

#d8rules update April 2015

We are growing, we are hiring... well not in a sense of spending money, but the #d8rules initiative is proud of already having 26 contributors who got their pull requests merged on github. But how did that happen and what exactly happened since our last update by the end of last year? Drupal Dev Days Montpellier are definitely the most exciting part of this list so we'll keep it for the end :)

#d8rules Presentation

We travelled all around South America and Europe to give people an update on the initiative, including DrupalCon Latin America BogotáDrupalCamp LondonEuropean Drupal Days Milano, Drupal Dev Days Montpellier. You can watch a video recording on youtube.

Workshops & Sprints

At Global Sprint Weekend Zurich we sprinted with some first-time #d8rules contributors mainly on porting actions. For example, vasi worked on porting some actions but also dermario and me started working on a Rules component admin UI

At European Drupal Days Milano, we did a full workshop to teach new contributors the underlying concepts of Drupal 8: dependency injection, plugins, typed data, unit tests etc. With the following sprints, we were able to make good progress with porting actions. Special thanks to bojanz for writing the first derivative plugin: The Entity create action plugin will generate derivatives based on the entity types available, for example "Create a new user", "Create a new node".

Drupal Dev Days Montpellier

We have counted at least 20 people involved in the #d8rules sprints last week in Montpellier, France which is well - awesome and a bit overwhelming at the same time :) Thanks to the great excitement of so many new and recurring contributors, we were able to make major progress not only by finishing most of the action ports but also by starting work on other areas of the Rules module and its integrations. You can find a more detailed summary of everyone has been working on in our meeting minutes. Let me name a few examples:

  • mariancalinro wrote the first automated tests for derivative plugins, picking up bojanz' work, investigated about the extracting the Views fields & filters selection widget and started mentoring other sprinters on that topic. 
  • a.milkovsky ported various actions, started working the Rules settings UI and also mentored other contributors with the gained knowledge.
  • czigor ported various actions and started the porting the first Flag action. I won't repeat has mentored others because one of the most exciting parts of this sprints was seeing everybody mentor each other on what they know.
  • katia and pjezek also dove deep into porting the flag and unflag actions.
  • Steve Purkiss amongst porting actions started extending the Rules documentation.
  • nielsdefeyter picked up the work on the Rules component UI and helped us to get it together with a Rules UI skeleton committed during dev days. 
  • lewisnyman helped us define personas, user stories & user journeys in order to validate the usabliity of the Rules 7.x UI and target improvements for the Rules UI in 8.x
  • m1r1k did reworked the logging service and even started integration with webprofiler 
  • xano joined us for the discussion on implementing a generic plugin selector widget and even created Plugin Selector as a spin-off from what he implemented for payment.
  • fubhy started implementing a lexer/parser for mathematical expressions
  • nlisgo, claudine, branislav, mikl & martin also joined us for porting actions & cleaning up inconsistencies in the code base
  • klausi, fago & fubhy provided guidance, reviews & were able to merge many pull requests besides working on improvements of the Rules engine

Thank you so much everyone for participating and helping out! I hope I covered most of the things. Personally, I was really glad to be able to focus on motivating people. Somehow it felt like we all got into a good flow with a self-organising team that started mentoring & reviewing each others work.

It isn't over yet

As we gained so much good momentum during the recent sprints, we would like to invite everyone interested in joining our weekly calls on Google hangout: every Thursday at 4:30pm CEST we announce them on IRC: #drupal-rules. Also check out the meeting notes.

 

#d8rules update October-November 2014

Curious why the Rules module still isn't finished, even when our initial milestone planning aimed to ship Rules 8.x by 2014? The bad news is we are a bit delayed, but that pretty much aligns with the state of Drupal 8 core. And we are working hard on solving problems in a generic way for entire Drupal core instead of having to fork APIs in Rules.

DrupalCon Amsterdam Recap

We were quite active at DrupalCon Amsterdam: I gave a 12 minutes update on the #d8rules initiative (video & slides) and we had some productive discussions on crowd funding in general at the community summit (notes & related core conversation).

On Thursday, we had a BoF to get contributors up to speed with development for Rules in Drupal 8 and on Friday we sprinted the whole day to port actions and get Milestone 1 finished.

Development status 

As [META] Rules 8.x Roadmap states, most of the funded Milestone 1 tasks have been finished but a number of core integration tasks are still in progress. The unified context system is going to be used across Blocks, Conditions and Actions API as well as related contrib modules like the Drupal 8 version of Page Manager. In Drupal 7 CTools and Rules together with the Entity module basically invented two separate "context systems", so compared to that this is a big step fowards and will bring site builders and developers a much better plugin interopability & re-usability in Drupal 8.

Some core tasks we are currently working on are:

In Rules 8.x-3.x, we recently finisihed the conversion of all condition and action test cases to PHPUnit based integration tests, what helps to test the plugins including their annotation and runs very fast (without a full bootstrap). During the sprints in Amsterdam we worked with contributors on porting more of Rules' actions to the new Action API, including test coverage. We'll continue to work on porting actions with contributors via the issue queue and run sprints on the coming events we attend.

Next steps & events

We anticipate to use the budget raised by the end of 2014. Next year, we will have to look for further funding resources or limit work on Rules 8.x to our free time. Thanks again to everyone supporting us so far!

There are already some great Drupal events lined up for next year where the #d8rules initiative will be present:

DrupalCon Bogota, 10-12 of February 2014 will feature a full session on upgrading modules to integrate with Rules in Drupal 8 by dasjo: #d8rules - Web-automation with Rules in Drupal

European Drupal Days Milano, 19-21 of March 2015  will include a session, training workshop & sprints provided by fago & dasjo.

Let us know if you want to get involved at any of these events and see you the core & Rules issue queues!

dasjo on behalf of the #d8rules team 

#d8rules updates, BoF & sprints at DrupalCon Amsterdam

Hello everyone!

DrupalCon Amsterdam is coming close and we are working hard to get Milestone 1 for porting the Rules module to Drupal 8 done. Here's an outline where you can join fago, klausi, nico and many others for updates on the initiative, discussions and hands-on during the sprints!

Drupal 8 Contrib Module Update (shared session)

Tuesday · 14:15 - 15:15, Room: Auditorium (Wunderkraut)
https://amsterdam2014.drupal.org/session/drupal-8-contrib-module-update

A quick, 12-minutes update on the status of Rules for Drupal 8 together with Webform (quicksketch), Display Suite (by aspilicious), Media (by daveried/slashrsm), Search API (by drunken monkey), Commerce (by bojanz), Redirect, Global Redirect, Token, Pathauto (by berdir), Panels (by japerry) & Simplenews (by miro_dietiker/ifux).

#d8rules initiative meeting (BoF)

Thursday 13:00 - 14:00, Room: Emerald Lounge E
https://amsterdam2014.drupal.org/bof/d8rules-initiative-meeting

Let's get into a deeper discussion about the #d8rules initiative in this birds-of-a-feather session. We'll inform you about the current state of funding & development and prepare you well for the sprints on Friday.

#d8rules sprints

Friday 9:00 - 18:00, Coder lounge in the venue
https://groups.drupal.org/node/427578

Sprinting at DrupalCon is THE way to learn about contributing to Drupal in general. With our training experience from DrupalCamp Alpe-Adria and Drupalaton we know that working on Rules 8.x is a great way to get started with the new programming paradigmes of Drupal 8. Join fago, klausi to port actions, fix integrations for Drupal 8 core and get Milestone 1 done in general.

#d8rules sprints are focused mainly on Friday, but we will also be around for extended sprints prior and after the conference. Check out the information about all the sprints at and around DrupalCon Amsterdam by gabor. And please don't forget: thank you for helping us estimate the number of people attending and sign-up using the sprints spreadsheet.

#d8rules trainings & sprints at DrupalCamp Alpe-Adria, Slovenia, May 2014

We are looking forward meeting everyone there. As always, you can find us on irc: #drupal-rules and don't forget to use the twitter hashtag #d8rules.

dasjo on behalf of the #d8rules team

#d8rules update July-August 2014

Since our last update, May 2014, the #d8rules initiative was able to complete funding for Milestone 1 and has made major development progress with two unstable releases and loads of commits on our GitHub repository.

Thanks to 142 great supports, we were able to raise $ 15k on Drupalfund. In addition to that, Technocrat stepped in with buying our second largest sponsor package "Reusable component providers" which helps us cover 100 hours of Rules 8.x development. All in all, we are excited to say that Milestone 1 is now fully funded thanks to the crowd funding and 10 companies sponsoring #d8rules.

If you are interested in more background on the #d8rules Drupalfund campaign, make sure to Virginia's blog post with all the details

#d8rules Rulers & invoices info

As promised, everybody who has donated $65+ on the Drupalfund will get one of the fancy Rulers provided by Nico from Ausgetrock.net! We just finished production & packaging and will send them out by the next week!

Development update

Development has mainly focused on working with Drupal's context system. Rules actions and conditions need parameters (for example a node object), which is represented as plugin context as used in Drupal core. They also need to provide variables (for example an entity load action will provide the loaded node object), which is implemented as provided plugin context in Rules itself. Provided context might be interesting for other Drupal 8 modules as well, so this might be moved out of Rules either into Drupal core or a Ctools-like project in D8 contributed space.

Currently we try to figure out all parts of the Rules core engine, how context is passed around and how data selectors are applied (example: node:uid:entity:mail:value to access the email adress of a node author). We implemented prototypes of those system parts, but the API is still experimental and we expect to change and improve things here a lot.

A number of action and condition plugins have been ported from Drupal 7 with the help of new Rules contributors, thank you to fubhy, paranojik, jibran and ndewhurst!

We are currently working towards milestone 1 of our roadmap and we are doing monthly unstable releases to keep you up to date with development progress.

Drupalaton training & sprints: Porting Actions

After a great training/sprint session at DrupalCamp Alpe-Adria Portoroz we finished porting most of the conditions. This weekend, at Drupalaton we just delivered our second training session to get contributors up to speed with Rules in Drupal 8. Topics delivered include our git pull request workflow and the new and shiny things about Drupal 8 including the plug-in system, CMI and many more.

Follow [META] Port all actions to 8.x to find out about the current status of actions being ported. Our getting started google doc provides steps in addition to the documentation available on fago's Rules GitHub repository

Upcoming sprint: DrupalCon Amsterdam

Thank you all for contributing.

Josef / dasjo on behalf of the #d8rules team