This is part of a blog series of short profiles on plugin developers within the Moodle community. Today it is Justin Filip.
Tell us something about yourself
I am the manager of software development at official Moodle partner Remote-Learner. I work out of our Waterloo, Ontario, Canada office with the rest of the Remote-Learner development team.
As of February 2012 I will have been working with Moodle (and Remote-Learner) full time for six years.
When did you first start programming?
In elementary school I managed to figure out how to enter and run some BASIC programs from my Math textbook but that doesn’t really count. The first language that I really learned anything with was Turing which is a Canadian-developed language meant for teaching. It had some graphics capabilities and ran on DOS/Windows. I did managed to convince my high school math/programming teacher to switch to Java for my last year of high school which was great for me because the first language we worked with in university was Java.
When did you first encounter Moodle?
I first encountered Moodle in October 2005 when I first started doing contract development work for Mike Churchward who then was the sole member of the Moodle partner Open Knowledge Technologies (we later merged with Remote-Learner to become Remote-Learner Canada).
What did you use Moodle for?
I mainly use Moodle as a developer but I’ve been toying with the idea of creating some courses within the system to use as training for newly hired developers.
What was your first Moodle plugin? Why did you write it?
I think the first Moodle plugin I fully wrote was the Sidebar Block. It was created because one of our clients wanted a way to put activities in a course that were inside a block and not contained within one of the course sections. Basically we replicated the functionality of the front page Main menu block but made it work within courses.
What is your latest Moodle plugin & why did you write it?
I recently worked on the release of ELIS for Moodle 2 – it has many Moodle plugins as part of it. But it’s been some time since I personally wrote a Moodle plugin just by myself.
I want to “pretty up” a rough script I created that can do a database-to-database Moodle schema and data copy and add some kind of web-based UI to it before releasing the code to the community. The script is meant to transfer a Moodle database from one kind of DB backend to another (i.e. MySQl to Postgres) using the Moodle database API. This was born out of the need to convert a client’s database from PostgreSQL to MySQL and there being no tools out there that could handle it correctly.
What would you say to someone who is considering writing a Moodle plugin?
Take a look at the code for some of the existing plugins for Moodle to get a feel for how the code is structured. Also, start with something smaller and easier like a block rather than creating an activity module as your first try. It will introduce you to a lot of concepts and Moodle APIs that you will expand upon when working with more complex plugin types.
Get involved with the community, particularly the General Developers forum on moodle.org. There are a lot of helpful people in the community.
And there is also the Moodle 1.9 Extension Development book written by Remote-Learner’s Mike Churchward and Jonathan Moore. Even though it focuses on Moodle 1.9 it does contain a lot of lessons that also apply to Moodle 2.x, even though the underlying Moodle code has changed quite a bit in some cases.
And the developer documentation is getting better! There is a strong push right now for better code-level documentation as well as developer information in the MoodleDocs wiki.
Moodle is like any other open source project: it ‘s strength lies in it’s community. If you want to help out and participate in that community you will get more out of your time with Moodle. Share your code and use a site like Github to make it available for others who can help fix bugs or make improvements to your code. Get involved in the forums and the Moodle bug tracker.
Also, don’t forget to have fun.
This is a list of the plugins that Justin has either contributed to or is the lead developer on. To view all these check the Remote-Learner Github
|Questionnaire||This module provides an easy way of creating your own surveys using a range of question types.|
|ELIS Reporting||This Plugin provides enhanced reporting for curriculum and user sets in the Moodle extension ELIS.|
|ELIS OPENID||This is the OpenID authentication add-on for ELIS.|
|ELIS CM||This plugin is the primary ELIS Curriculum Management component.|
|ELIS Alfresco||This plugin is the ELIS Alfresco Integration component.|
|ELIS Base||This plugin is a group of base modifications to Moodle which are required for other ELIS components.|