This month's featured plugin, the Attendance module, maintained by Dan Marsden, is used in more than 2200 sites around the world, has been localised into 22 languages, and is the 3rd most popular activity module in the Plugins directory.
The Attendance module has had a total of 26 contributors to the code to-date, including original developer Dmitry Pupinin, then Artem Andreev, and more recent contributors Davo Smith and Barry Oosthuizen - illustrating how plugin development and maintenance can be transferred and shared between developers.
I asked Dan, the current maintainer of the Attendance module, for an interview. Read on to find out how he felt about an early commit to Moodle core being destroyed and rewritten by Martin Dougiamas, Dan's advice on setting boundaries on support offered and plans for further development of the Attendance module.
Hi Dan. Can you tell us a little about yourself and your background?
Dan reads a book to his daughter Malea
I have an amazing wife with five great kids and work for the Moodle Partner Catalyst IT from a home office in Christchurch, New Zealand. I’ve been working as a software developer for around 16 years and on Moodle since 2004.
Recently I’ve been working on a project for a large multi-national on a packaged version of Moodle deployed to windows-based laptops which facilitates offline access to courses. Learners are able to download courses onto their locally installed Moodle and sync completion information to a centralised Moodle when an internet connection is available.
Can you briefly describe the Attendance module and its main features? Who is it primarily intended for?
The Attendance module allows teachers to maintain a record of attendance, replacing or supplementing a paper-based attendance register. It is primarily used in blended-learning environments where students are required to attend classes, lectures and tutorials, and allows the teacher to track and optionally provide a grade for student attendance. Sessions can be configured to allow students to record their own attendance, and a range of different reports are available.
The Attendance module was previously developed and maintained by Artem Andreev. How did it get under your wings?
Artem changed jobs and was unable to continue maintaining the plugin. We had a client using Attendance that was upgrading and provided funding for my time to update the code to work in Moodle 2.4. Artem handed the reins over and I took that opportunity to make a few other changes such as renaming the plugin from “attforblock” to “attendance”. I have continued supporting the plugin as a volunteer ever since.
You are a well-known Moodler, SCORM module maintainer, particularly helpful Moodler in the moodle.org forums, experienced GSoC mentor and plugins guardian - that’s really impressive! How did this all start? How did you get into Moodle and Moodle development?
I was employed at Lincoln University as the 'Educational Developer' where I inherited responsibility for the in-house-developed Learning Management System based on individual Microsoft FrontPage websites with various add-on tools providing functionality like interactive quizzes and tutorial selection. It was innovative for the time but was quite challenging to support. Languages used within the system included ASP, Visual basic, Perl, Java, ActiveX and Actionscript. I quickly went looking for replacement possibilities and found Moodle. Lincoln University then joined the NZ Open Source VLE project; a collaboration between New Zealand tertiary providers looking at open source learning management systems (from which Moodle was chosen).
After submitting a range of patches that were accepted into Moodle, I was given direct commit access to the source code repository which encouraged me to contribute further. One of my first commits to Moodle core was completely destroyed and rewritten by Martin Dougiamas. This was a new experience for me; it inspired me to improve my skills and helped me recognise the benefits of working in a collaborative open-source environment.
The Moodle community continues to teach and sharpen my skills and I enjoy sharing the knowledge that I have gained to others within the community.
What software and IDE do you use when developing for Moodle and what does your typical workspace look like?
I’m a bit of a screen-junkie; my main development machine runs Xubuntu with 4 x 23” screens and PHPStorm is my IDE of choice. I have a couple of other machines that I use for testing, monitoring and playing music. I use Synergy for sharing the keyboard and mouse across the 3 machines which drive the 8 screens.
What is your common plugin development workflow and how do you organise the code in terms of branching, tags etc?
I prefer not to have too many branches to maintain; I usually branch when a version contains changes that will break with an older release. This means the master branch will contain the latest code for the current release and possibly earlier releases if they are still supported by this branch.
Many Moodle plugin developers are looking for a business model that would, at least partially, cover the time spent on their plugin development and support. Can you give some recommendations based on personal experience?
The company I work for (Catalyst IT) has built a successful business providing open-source services. Our clients recognise the value in using open-source software and many pay for our time to contribute relevant development back to the community. Many of the features, improvements and bug fixes I develop are a result of direct funding from our clients.
It is important to set your boundaries well. I will often respond to private messages asking for support stating that free support is available within the community forums (with no guarantee on the level or time-frame) but direct one-on-one commercial level support and development is available at a cost. These private messages are only quick to answer if you have set expectations from the outset and placed a value on your time.
Do you have any plans for further development of the Attendance module?
I'd like to find time to restructure a lot of the code and improve the overall performance - a lot of data is passed around in-memory and the code hits the database a bit too much in some areas.
We’ve been lucky that several other organisations have made feature improvements to the plugin that I have been able to review and merge into the main code-base. Davo Smith from Synergy Learning just recently added some great features and Barry Oosthuizen from the University of Nottingham has been a great help.
Thanks a lot Dan. Best wishes with all your contributions to Moodle!