Gareth Barnard needs no introduction to Moodlers. As the creator and manager of the Essential theme and a host of other plugins for Moodle, he is one of the most experienced and insightful developers for the gargantuan eLearning platform.
We recently got to pick his brains on the various aspects of his theme and plugin development process and the ups and downs while creating each new plugin! Read on to catch the complete interview.
How did you get started with e-learning and what made you do it?
I was teaching at ICT and there was a mandate from the government that all schools should have an eLearning coordinator. So I applied for the position and got the role on top of my teaching. Also at the time, I was creating a mini internal website where my students could download instructions rather than the old boring ‘go to folder y on the network drive’ so thought there should be a better way.
Why did you pick Moodle over other Learning Management Systems?
At the time it was more flexible and faster with the workflow than the competing LMS being considered.
You have authored many plugins. How exactly does the plugin building process start?
By having a real world user problem to solve or a desire to learn a new technology through the creative process of making something useful.
What is your typical workday like?
Random! Moodle is global so with the time-zones you can get questions/work at any time.
Of all the plugins that you have developed, which one was the most challenging?
Very good question with no definite answer. They all have their challenges in different ways, so really:
Essential because of its complexity.
From what I’ve read there seem to be quirks in the language to get around things that really should be solved in a neater fashion.Also with my plugins, the challenging bit is keeping them up to date with core API changes and ensuring that the functionality is the same across current maintained versions.
PHP and Java are your favourite languages. Can PHP compete with other languages like Java given that Java is generally considered to be technically superior?
It’s not about competition but suitability for a solution. I do find PHP, not as object orientated as Java and miss type safety and the fact that you need to run the code to find syntax issues. I think it’s more of a question of that I perceive PHP to be more modular and flexible for plugins where you can just add a new file in a given path on a running system whereas I think in Java and J2EE you have to start/stop the container application (say on Tomcat).
Also a question of scale, I think that Java and specifically J2EE is more enterprise and can cope with large scale enterprise applications, whereas PHP works best with medium and small systems.However, it is more about how the languages are used by the developing / management team. PHP and Java are just tools, if used badly then you’ll get bad results – Garbage In Garbage Out. If you don’t have good sound principles of software engineering or management who are understanding of what it really takes to develop and especially maintain software then you’ll end up with a bad result regardless of language.
For example ‘Refactoring’ (Martin Fowler) is a process to help improve code such that improvements can be made without creating a mess and yet adds nothing from a layman’s terms to the software and thus can be seen as pointless, however understanding that it needs to be done and financed is important in making progress and facilitating software survival.
Any advice to anyone who wishes to contribute to Moodle?
-Ask questions on the forums when you’re stuck, but do read the documentation first and try and solve the problem.
-Be patient, Moodle is complex because of the problem it is solving, its not COTS but rather a collection of technologies combined for a multi-user environment.
-Have a real world purpose and context.
-Learn software engineering not just code, so fundamentals of requirements, design, implementation, testing, maintenance and version control.
-If you want to fix Moodle core issues then you need an account on the Moodle tracker – do be patient and follow the documented procedure, it is long but the process is there to keep bad code out.
-Work hard, persevere and try and solve the problems yourself. You will learn more from your failures and progress rather than relying on others completely. If you just copy / paste a solution then you’ll not really understand what is going on.
-Read the documentation about contributing and the code standards.
That’s all for now folks! Thank you, Gareth for taking time out of your busy schedule and talking to us. It has been a great pleasure! 🙂