Developer Area/Developer Meetings/52
From Mahara Wiki
< Developer Area | Developer Meetings
Agenda for the 52nd Mahara developer meeting on Thursday, 28 April 2016, 7:00 UTC
The developer meetings are held on IRC in the #mahara-dev channel. An IRC bot will be used to take minutes of these meetings and agendas made available on these pages before-hand.
If you don't have an IRC client, you can join us using your web browser.
Chair: Kristina
Agenda:
- Topics from previous meeting
- mingard will work on finding and documenting duplicated sections, and maybe do a bit of a proposal on how we should restructure the scripts generally
- anzeljg will try to create some plans/wireframes for simplifying Mahara create page procedure
- Drop support for PHP 5.3? --aaronw (talk) 18:42, 29 March 2016 (NZDT)
- Latest version of PEAR, a Mahara dependency, now requires PHP 5.4 or later. Perhaps it's time Mahara should raise its supported PHP version to 5.4 as well.
- We previously discussed this topic 1 year ago, Dev Meeting 43, in April 2015. The decision then was to gather more data about which PHP versions are in use by expanding the site data registration.
- The latest stats (from Dev Meeting 50 in Feb 2016) still had 20% on PHP 5.3. I'll try to gather more stats before the next meeting.
- Switch to PSR-2 coding standard? --aaronw (talk) 16:21, 1 April 2016 (NZDT)
- http://www.php-fig.org/psr/psr-2/
- Should be easier to find auto-formatting tools; less barrier for devs new to the project
- Namespaces & autoloading? --aaronw (talk) 16:21, 1 April 2016 (NZDT)
- Currently Mahara has a lot of standalone methods, and after a recent performance patch that removed an unnecessary loading of *every* artefact class on *every* page load, we now have a "dependency hell" situation where some random actions will fail because they expect a function to be present (usually artefact_get_descendants()) but no scripts have yet loaded it.
- We could avoid that problem if we did this:
- Move all standalone methods into static class methods (perhaps one class per library file)
- Put Proper PHP namespaces on all of our library files (namespace supported was added in PHP 5.3)
- Add an autoloader method that loads up the correct Library file based on the class name and namespace: http://php.net/manual/en/language.oop5.autoload.php
- This will have the added benefit of "modernizing" our code and getting it more compatible with the modern PHP code ecosystem.
- Downside: all code that calls standalone Mahara functions will need to be fixed to include the classname for each function.
- We can write automated tools to fix most instances of this (although I would not be surprised to discover there are cases where the function name is determined dynamically).
- For backwards-compatibility with 3rd-party plugins, could make a "compatibility" module that declares a standalone method matching each of the current ones in Mahara and simply passing through the call to the new static one. e.g.: function artefact_get_descendants($ids) { return \Mahara\Artefact\ArtefactUtil::artefact_get_descendants($ids); }
- Next meeting and chair
- Any other business