Do one thing and do it well is a software design principle I particularly like. It makes me happy to see a robust functionality split into separate modules that can interact and be used creatively in many ways. Today's featured plugin PoodLL Anywhere by Justin Hunt is an example of such software. This Atto widget plugin must really be seen as a part of the bigger plugins set that allow users to easily record and store video, audio and drawings almost anywhere in Moodle.
Read on to see how PoodLL started to solve specific pedagogical use-case and teacher's need, why the phase of plugins design and specification should not be underestimated and what is the business model running the recent PoodLL development.
Interview with the maintainer
Hi Justin. Can you shortly tell us something about yourself and your background?
"Looking like Martin Dougiamas"
How did you get into Moodle and Moodle development?
In the high school I mentioned above, I wanted the students to record audio for an activity but found the language lab we used too restrictive for the task I had in mind. I installed Moodle and soon got the Moodle bug, and have been using and writing code for Moodle ever since.
Next to the PoodLL Anywhere, there are also other plugins in the PoodLL set. Can you shortly describe them and explain how they all work together?
PoodLL the set, basically enables the submission of audio/video recordings and whiteboard drawings as content to Moodle. All of that core functionality is in the PoodLL filter. PoodLL Anywhere and the other PoodLL mods use that functionality in their own way. PoodLL Anywhere adds video recording, audio recording, drawing, and webcam snapshot icons to the HTML editor. So students or teachers can easily record their voice or draw a picture into an html area. Other popular PoodLL plugins are the PoodLL Database Activity Field and the Online PoodLL assignment type and the PoodLL repository.
What software and IDE do you use when developing for Moodle and how does your typical screen look like?
A legacy of coding PoodLL at nights, and between classes while teaching in high school was that I became used to coding in short sessions from different computers. So I used a programmers text editor, an FTP client and a remote server. That is still my preferred PHP development environment. On Windows I use Notepad++ and Filezilla. On Mac I use TextWrangler and FileZilla. Using an IDE makes a lot of tasks easier, especially debugging and jumping all over Moodle looking at the code. So I do use an IDE sometimes, and in those cases I use Netbeans,
What is your common plugin development workflow and how do you organise the code in terms of branching, tags etc?
I am a late convert to Git, but have grown quite dependant on it. That said I don't maintain separate branches publically. Each of my repositories on Github just has the master branch. I have written around 30 plugins for Moodle now, only some of them are on Moodle.org. If the project is for someone else (usually) the process of designing the plugin can take quite a while. Usually we pass Balsamiq mockups and tech docs back and forth and have a number of Skype calls. Once I really understand the vision for the plugin, I start coding. Inevitably if this lead phase is not thorough enough it comes back to bite me. So i consider it very important.
I usually start with the closest thing available to the plugin that I am developing, and base my plugin on that. I use my text editor search and replace features to rename all instances of the frankenstyle component name to the new plugin name. I remove all the code I don't need and add in my own. Then its just "code and page reload.” The final programming task is usually implementing backup and restore. The fun part is writing docs and doing screencast walkthroughs at the end. I use BitBucket in place of Github for projects that are not public. By this time next year I hope to be a late convert to behat.
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?
PoodLL is free and always will be. I have been fortunate that some requested PoodLL features and one of the PoodLL plugins were funded. But PoodLL itself has never paid its way. I have tried donation buttons and offering support packages but these come nowhere close to covering my time. My current development income comes from partly from customizations of PoodLL for specific uses, and mostly from custom plugin development.
But PoodLL is now a brand. Everything from the name, to the logo, to my twitter handle @poodllguy, and having its own site led to that. Though at first I did not consciously work towards it, later I realised that the brand had value behind it. So though PoodLL the set of plugins never paid its way, as a brand it has definitely opened doors and given me an advantage over others in getting work and opportunities.
Do you have some particular plans for further development of the PoodLL plugins?
I have a big list of plans. PoodLL 3 development gets underway this year, and it is scheduled to arrive in time for Moodle 3.0. It will feature full HTML5 audio and video recording, a common API that other developers can hook into, and a subplugin structure for alternate recorders. There will be also be "storage adaptors” so that PoodLL recordings can be stored off Moodle, eg at Amazon S3 or Dropbox. The current ability to use PoodLL as an alternate to the Multimedia plugins filter will be split into a separate plugin just for that purpose. It will be based on my VideoEasy filter. The current PoodLL widgets (flashcards, stopwatches etc) will be split off into a separate plugin based on my Generico filter.
Thanks a lot Justin. And good luck with all your contributions.
I asked Mary Cooch, the Moodle HQ's Community Educator, for a review of PoodLL plugins from teacher's perspective. Mary says ...
My favourite Moodle plugins tend to be the ones created by practising teachers who actively use the plugin with their own classes. They discover a missing feature, fill that gap and now other educators in similar situations can benefit. Such is the case with PoodLL, versatile and user-friendly, simplifying magnificently the addition of audio and video (and a few other cool things too!) into Moodle activities. Justin's background is in language teaching, like mine, so I'll start there. I always struggled with assessing students' speaking skills individually: light-years ago as a novice teacher, I would take home a box of 32 cassette tapes (later morphing into usb pen drives), onto which each student had recorded the weekly homework, and I would spend whole evenings slotting them into my recorder, listening and commenting back. Now students record themselves speaking directly into Moodle with PoodLL and my colleagues in the Languages department sit comfortably with their iPads moving from one submission to the next and then use PoodLL to record their feedback. (OK grading still takes hours, but we've cut out the tedium and streamlined the process for all concerned!) But what if your language is not spoken? I've seen great examples of PoodLL being used in the teaching of Deaf Sign Language - video instead of audio - and when PoodLL Anywhere is used in a forum, other classmates can watch and respond too.
PoodLL is more than just a tool for language teachers; anywhere that audio and video can be useful, PoodLL fits the bill, from young students with special educational needs who speak their assignment instead of typing it, to adults on a presentational skills course who collaborate in a workshop activity, videoing themselves delivering a speech and getting constructive feedback from their peers. And PoodLL is more than just video and audio: it makes adding handy teaching widgets very straightforward - dice and counters for games and timing activities available to both teacher and students. Combine these with flashcards or video and you quickly generate fun tasks which allow for practice and independent learning. Display a clicker counter with a YouTube video and get them to count how often a certain type of key term for your subject is used - then move on to a flashcard activity with a timer for testing understanding of these key terms.
I particularly value PoodLL for its ease of use on different devices; while we normal mortals may be aware of different file types and of Flash issues on some devices, we don't want to be troubled with figuring out the details. PoodLL does the detective work for us so we can just get on with using it. Many students now will be accessing Moodle either at home from their iPads or smartphones or in class if the BYOD policy allows. How neat to complete a tech project, take a snapshot of it with your iPad and and share it in a forum with PoodLL Anywhere. Or use the whiteboard feature to draw a picture. Or handwrite an assignment response straight from your tablet. Or... well.. I will stop, and let you discover its versatility for yourselves
Thanks a lot Mary
Dances with devs
One of the reasons I started this blog about featured Moodle plugins was that I wanted to present developers as real humans behind the software. With real faces, background, families and hobbies. I am really happy I got permission to share this awesome video of Justin dancing.
If you have not yet tried it yet, check PoodLL. It's a robust, well written and - which is most important - well maintained Moodle plugin doing one thing (well, three things) well.
I'd like to add 3 more points:
- 'Poodll DB field' uplifts Database activity to supreme level
where the 'BB'(Other LMS) never be able to catch up.
- 'Generico' makes bosses' dream comes true --- Apply the consistent/standard
content to each page, site wide.
- Poodll.com -- the best documentation site I ever seen: clean
design, clear structure, up to date in every page, and very very helpful.