Modules and plugins improvements
The Modules and Plugins database provides a convenient way for Moodle System Administrators to search for available plugins, patches, and tools to enhance their installation. While the basic structure has been reasonably helpful, there is much to be desired in order to help those administrators determine things like the quality of the code, the reliability of the code, and the popularity of the code. This page is to help identify the areas needed for improvement and to provide a path for implementing those improvements.
For example, I would like for there to be various code quality levels (perhaps with gold, silver and bronze medals). The first level (bronze) would be verifying that the code has been independently tested by a Moodle developer, Moodle Partner or PHM to verify that the program at least appears to do what it says by someone of some repute. To say that the code is verified means that the code appears to work without any obvious bugs, PHP warning/notices, etc.
The silver medal indicate that the code is "Moodle certified" which would mean that a Moodle developer or Moodle Partner has not only verified the functionality of the code but also the quality of the code. Certification would mean that the code conforms to Moodle's coding guidelines and basic security practices. Those wishing to have their code certified, could contact a Moodle Partner similar to how we handle the MCT. Code certification could be a service that Moodle Partners provide to allow developers in the community an opportunity to work with more experienced developers on how to improve their code. The goal would be to get the code certified; however, this would depend upon the complexity of the project as to how many hours of time a developer would have to work with them. Code certified by a Moodle Partner would indicate that the quality of the code has been reviewed by an experienced developer and that it is production ready. By certifying the code, the Moodle Partner is making a statement that they would feel comfortable running the code on their production servers (not that they would have to).
Perhaps we could also develop a Moodle Certified Developer (MCD) which would mean that they have completed the Moodle Developer Course under the tutelage of a Moodle Partner and demonstrated the ability to code well according to Moodle coding guidelines. Those reviewing code may need to have some specialized training from Petr to ensure that basic security protocols are being followed.
The gold medal would indicate that the code has been tested, reviewed, and that a special evaluation of the code's security has shown it to meet the same high standards of security as Moodle core. Secured code has been verified, certified, and also given a review by a security specialist (most likely Petr) to ensure that the code is unlikely to have any known security vulnerabilities. Here, I envision a Moodle Partner requesting that Petr review the code or training someone on their team to specifically identify potential security issues. A gold medal would indicate that the code would be ready to move directly into core (again, not that it would but the quality of the code is such that it could).
In addition to the code status indicator which serves as a type of quality assurance, it would be good to have popularity ratings. These should incorporate not only the number of downloads (from http://download.moodle.org/stats.php) but also the ratings that users give them. I would like to see some type of algorithm that would adjust the popularity based not merely on the average rating but also on the number of ratings such that the more popular plugins would outrank the less popular but highly rated ones.
Personally, I would like to receive an email with information about any new M&P entries. I would like to be able to filter the entries by various criteria and be able to do things like send a bulk message to all of those whose code is not on the Moodle CVS server (i.e. the download link does not contain http://download.moodle.org/download.php). As an aside, I am trying to ensure that I start adding the M&P entry URL to the component description to facilitate moving between the tracker and the M&P entry to discussions, Docs, etc.
Please continue to add ideas, hopes, etc. as to how the Modules and Plugins database can become a more useful tool not only for those who maintain it but also for those who make use of it, either here or in the page comments
Part of what makes a plugin reputable is how quickly issues are responded to. I would want to be able to assess someone how actively the code is being maintained. We have a number of possible pieces of data but I do not know how we could calculate things in a meaningful way. The average time difference between when an issue is created and resolved might be helpful. Good code will not have many issues and thus not much activity; however, high activity indicates that it is actively being worked on. Drupal provides some of this information about its modules.
In summary, here are some of the features that I think we are hoping for:
- Popularity (number of download, number of views, number of installations) - I would like to see us gather more information from site registrations to learn what contrib code is actually installed. This would help if a major security issue is discovered in contrib that we could send an email just to those site admins without alarming the whole community.
- Ratings (should there be a distinction between ratings given by a typical user vs. a developer rating?)
- Comments (need to make clear that comments are not for reporting bugs, that is what the Tracker is for)
- Filtering - It needs to be easier to filter and sort contrib code by version, type, popularity)
- Quality assessment (functionality, coding guidelines, security, performance, UI)
- Status - Is the code being actively maintained? How can we assess this?
Demo sites - Stuart Mealor shared with me a site (http://www.elearning.school.nz/) he set up that can serve as a bit of a demo site for CONTRIB code. I like the idea of having a CONTRIB demo site which folks could use to experiment with different plugins. It would be also interesting to have a patch demo site; however, each one would have to be it's own installation but it should not be too difficult to setup some automation of that. Besides demo (which should use the latest stable code), it would be good to have something similar for HEAD as a test site that also pulls the latest code from CVS.