The Google Plus logo

My first Moodle plugin

This blog was written by Andrew Downes and first appeared on the Epic blog on 2nd October 2013.

my first moodle pluginOne of the great things about open source projects is that anybody can get involved. That might involve writing code, but could also mean writing documentation, reporting issues, creating graphics and discussing ideas. Moodle, one of our favourite open source LMSs, is such an open source project.

Recently I decided to have a go at writing and contributing some code to Moodle, and it’s been an interesting experience so far!

Submitting my plugin

The code that I’m working in is what’s called a plugin. This is a small but discreet parcel of functionality that can be added on to your Moodle platform to provide an extra feature. In this case, my plugin will let you launch Tin Can learning activities from Moodle. There are nearly 600 plugins in the Moodle Plugins Directory which let you add all kinds of features to your Moodle, from a block that displays Wikipedia articles to the integration of a full virtual conference tool; there are all kinds of assets in there.

Part of the process has involved submitting my plugin to the Moodle community. The thing that’s struck me the most was how strict and tight the processes are. You might expect an open source community to be pretty disorganised, but that’s not the case. Everything has to go through the correct process, and all code is reviewed and tested before it can even be listed in the plugins directory, let alone incorporated as part of the standard Moodle.

This level of scrutiny could have been quite daunting for a Moodle development newbie like myself, but I found plenty support and friendly help available each step of the way. A couple of people have reviewed and suggested improvements to my code and others have answered my questions or offered advice. There’s plenty of documentation online to read, although there are occasional gaps and out-of-date information that can be very frustrating.

Writing a plugin has been a great learning experience for me. I’m not a professional programmer (I work as a Learning Designer, not a Developer at Epic). On top of that, Moodle uses the PHP programming language which I’ve not had much experience with before. There’s been a lot to learn!

Thinking back over how I’ve learnt during this experience, all of my learning has been informal. There have been some great advantages to this; I can learn exactly what I want to learn when I want to learn it. Even when I had to ask questions, I generally got a response back within 24 hours and sometimes much sooner.

There are some areas though where I could have done with some formal learning. Early on in the project, I would have loved to take an e-learning course on Moodle plugin development. That could have saved me tons of time searching for answers and randomly trying different approaches. As a self-taught programmer I sometimes wonder how robust my code is; some formal training would be very helpful in giving me the confidence that I’m doing things properly.

So, in summary: Moodle is a great platform with a wide range of plugins available and a helpful, professional community behind it. Getting involved in an open source project like Moodle has been a great learning experience for me. Most of my learning has been informal, but a bit of more structured formal learning in a few key areas would have been really helpful too.