We are again running the traditional challenge for the Moodle plugins developer community - a chance to receive a special award "Moodle 3.6 Early bird". This award will be given to plugins having a tested working 3.6 compatible version available on the release day. Moodle 3.6 is scheduled to be released on Monday, 3rd December 2018.
As before, it is not enough to simply mark you current versions as 3.6 compatible. Plugin maintainers are supposed to:
- Test plugins intensively against Moodle 3.6 beta (Behat and PHPUnit tests help a lot).
- Fix all eventually raised warnings, notices, regressions and problems.
- Release a new compatible version in the Plugins directory, or mark the existing one as compatible.
We reserve the right to not grant or revoke the award from a plugin if there is a suspicion that it was not tested well. There will be no exceptions for late submissions.
Many thanks to all the plugins maintainers for keeping their plugins up-to-date with latest Moodle versions!
The biggest thing I found when updating our plugins for 3.6 is that there are 2 new functions that need to be implemented in the privacy class for plugins that store user data:
(those new functions are also required for Moodle 3.4.6, 3.5.3)
The moodle upgrade.txt file can also be useful to review when updating your plugins:
The biggest thing I have found so far is that this breaks many of my Behat tests:
001 Scenario: Create a pattern match with JME question # /home/travis/build/moodle/question/type/pmatchjme/tests/behat/add.feature:22
And I navigate to "Question bank" node in "Course administration" # /home/travis/build/moodle/question/type/pmatchjme/tests/behat/add.feature:19
Exception: Deprecated step, rather than using this step you can:
- I navigate to "PATH" in current page administration
- I navigate to "PATH" in site administration
- I navigate to "TAB1 > TAB2" in the course gradebook
- I navigate to course participants
- If some items are not available without Navigation block at all, one can use combination of:
I add the "Navigation" block if not present
I click on "LINK" "link" in the "Navigation" "block"
- Set $CFG->behat_usedeprecated in config.php to allow the use of deprecated steps
if you don't have any other option
From what I can see, privacy providers need to implement an additional interface, but it does not seem that the plugins will break if it's not implemented. It also doesn't seem that there are unit tests to check whether providers are implementing that interface. Not sure how "breaking" not implementing it actually is. Aside from breaking the GDPR laws obviously.
I'd like to point out a problem that came up with trying to implement the new privacy API functions and maintaining one version of a plugin across multiple Moodle releases. See the discussion here - https://moodle.org/mod/forum/discuss.php?d=379580
Essentially, for 3.5 and 3.4, if they upgrade the plugin without upgrading their Moodle first, the Plugin privacy page has a fatal error. This is due to the missing core_userlist_provider interface. So the plugin works on 3.5.3 but not 3.5.2, and works on 3.4.6 but not 3.4.5.
Also refer to CONTRIB-7557
For the record, total of 192 out of 1537 plugins had a Moodle 3.6 compatible version available by yesterday (23:59 GMT) and were granted the Early bird 3.6 award. See the list at https://moodle.org/plugins/?q=award:early-bird-36%20sort-by:sites