Learning Blog

Random despatches from places where L&D meets software and systems

Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/37/d420554721/htdocs/makemhome/makemhomenew2/components/com_k2/models/item.php on line 881

Open source road trip

Open source software has gone mainstream and it's all happened while I was looking the other way. Time for me to try to catch up. Come with me now on a journey through time and cyberspace ...

Every New Year’s Eve I do at least the following two things: I set myself a small number of resolutions in each of “Health, wealth, work, fun and misc”. There tends to be a lot of DIY in the misc. I also work out a percentage score for the previous year’s efforts. I’m into my second decade of doing this and I’ve come to realise that, to be realistic, resolutions need to be carefully blended and that scoring less than 50%, which frequently happens, still means more fun, satisfaction and learning than had I not bothered at all.

I usually set between three and five goals per category, making twenty or so in total. Some get carried forward between the years, some get fully discharged, some partly, some abandoned and some I’ll never finish. Part of the blending process means ensuring there are activities which require different levels of investment and have different levels of return. So this year, for example, I finally managed to get a will written (tick one of the boxes in the “wealth” category), which happened not because it didn’t actually require that much investment but because I’d had enough of carrying it forward. This year I’ve been putting disproportionate effort into a couple of the “work” boxes to try to explore some less familiar territory.

At work we have getting on for 85,000 learners, for whom we provide “learning services”. This covers a broad range of activity, including contracting, QA, design, development, delivery and admin. The admin part is a volume business in which shaving a small amount of time off a particular transaction can save the business a lot of money. Many of our transactions are facilitated by a Big Learning Management System (BLMS), which is plumbed into the HR bit of our ERP system and pipes are currently being laid to connect it to Finance as well. These are solid systems, the mechanics of which I’ve come to know a fair bit about, but they are expensive. Our learning delivery cum management is blended, though, and we also operate an instance of Moodle (not a BLMS), which, hitherto, I knew a good deal less about. Hence I resolved to open the bonnet on a number of open source systems so that I could find out about a little about how they worked, take a couple for a spin and see where they took me.

As you know, there are loads of different kinds of open source system: image editors; Office clones; operating systems; mail clients; even whole ERP systems. It’s a very long list. There are even magazines you can buy in newsagents that are about open source, that’s how mainstream it’s become. But if, like me, your bag is some combination of learning, engagement and comms, you can’t fail to have heard of Moodle, Drupal, Joomla and Wordpress, all XAMPP technology and all written in the scripting language PHP, the engine under the bonnet, which seemed like a good place to start.

Being an ENTJ activist Sagittarian nettle-grasper, I duly rolled up my sleeves, enrolled at a college and spent the first few months of this year doing a weekly night class in PHP. Does that count as “getting out more”, I wonder? Interestingly, although our teacher was nothing short of brilliant and the input materials superb, very little use was made of the college’s Moodle system (!) and it was the very antithesis of a social learning experience, which just goes to show that there are still parts of the educational sector, even, trying to plug the gap between theory and practice.

The following little test program, which I wrote as one week’s homework on arrays, reads questions, candidate answers and feedback from a separate text file, stores them in a multi-dimensional array, presents the quiz with both the order of questions and answers randomised and then a separate script marks the learner’s answers:


$in= fopen( "triv.txt", "r" );

 $numberOfQuestions = 100;

 $numberOfPartsToEachQuestion = 7;

 $numberOfQuestionsToAsk = 10;

 $answerArray = array(3,4,5,6);


 echo "<b>Trivial Pursuit Quiz.</b><br /><br />";

echo "Select the answers you think are correct and then hit the Submit button.<br />Good luck!<br />";

 for ($i=1; $i<=$numberOfQuestions; $i++)


  for ($j=1; $j<=$numberOfPartsToEachQuestion; $j++)


   $QuestionArray[$i][$j] = fgets($in, 1024);






echo "<form name='input' action='trivResult.php' method='post'>";

 for ($i=1; $i<=$numberOfQuestionsToAsk; $i++)


  echo $i . ") ";

  echo $QuestionArray[$i][2] . "<br />";


  for ($j=0; $j<=3; $j++)


   $answer = $answerArray[$j];

   echo "<input type='radio' name=$i value=$answer/>";

   echo $QuestionArray[$i][$answer];

   echo "<br />";


 echo "<br />";


 echo "<input type='submit' value='Mark it' /></form>";


More experienced PHP developers will have things to say about the elegance or otherwise of the code above. But at least it works and it’s not rocket science. Key to the open source movement is the idea that one should write one’s code in ways that are as easy to understand, modify and improve as possible, with large sprinklings of comments peppered throughout – another black mark for the above. But the point is that the above isn’t impossible to get your head round, that quite a lot of work is being done with not a lot of script and that the script can be put together quite quickly. The real power of PHP is unleashed when running in tandem with a database and different systems expose users to different levels of conversation between the two. So, driving test passed (just), time to get on the road.

The nice thing about learning a smattering of PHP is that, suddenly, customisation (or going your own way) seems less terrifying a prospect. Pandora’s box is eased open and the world continues to turn. Big, scary stuff seems probably no less complicated but a lot less big and scary. For example, there are “only” 34 database tables in Joomla; Wordpress’s installer zip file is “only” 4.7 mB; you can write your own custom report for Moodle using a script no bigger than the listing above. These are potentially big value systems, which can be customised so as to better fit your organisation’s needs and situation with a little bit of specialist knowledge and a large dollop of determination. Just be sure you’ve got updating and impact assessment covered.

To cut the middle part of the story short, I’ve spent the last few months prototyping (what I hope will become) a (collaborative) website to carry and develop something we call the process model, which I described a couple of issues ago. In the end I went for Joomla, largely because arguably it’s the one that demands least programming cum design experience (so that more people in our organisation can take it up) but it still does 0 – 60 in a small number of seconds. You will already know that Joomla is a content management system but did you know that there is a recently released extension called “Joomdle” to seamlessly integrate Moodle and Joomla facilitating single sign on, the display of course content within Joomla, consistent user profiles, electronic payment and so on? (Obviously they couldn’t call it “Moola” because that would be contrary to spirit of the open source movement!).

In the main my Joomla-learning experience was predictably book-based but I did use forums, emails and webchat more than ever before, which was fun as well as useful. Joomla’s gaps are pluggable by extensions which necessitate getting your hands dirty doing a bit of PHP jiggery pokery. Extensions come in three types: plug-ins, which are relatively small, hang off events and take some getting your head round; modules, which typically occupy a discrete block on a page; and components, which are usually much chunkier. Extensions can be incorporated, given away, sold, or, as is case with the module I’ve started to write to provide a visual progress snapshot of the process model, bespoked for one off use. Fast forward two or three months and Joomla has enabled us to put together plausible-looking stuff much more quickly and cheaply than we’d previously thought possible.

Now, of course, comes the truly difficult bit. Once we’re confident that our process bus is roadworthy, there remains the small matter of getting people to climb aboard. As with any collaborative website, its value will be determined by the quality and quantity of the contributions and the interworking and new thinking it engenders. This is the scary bit because I know how busy people are at work and how little chance “another website” has to grab someone’s attention, still less become an everyday part of their work life. But, hey, there are nearly 100 days left of this calendar year. What am I getting worried about?

Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/37/d420554721/htdocs/makemhome/makemhomenew2/components/com_k2/templates/default/item.php on line 248