Saturday, December 28, 2019

Why I chose EPrints over DSpace for an institutional repository

Recently I had the opportunity to set up an institutional repository for Auroville, an international township in south India that has been around for 50 years and has a large collection of outputs from applied research and experiments in a variety of domains (notably architecture, education, ecology, and alternative economy).

As far as I know, DSpace and EPrints are two of the most widely used open-source applications for institutional repositories. At the outset, I was inclined to opt for DSpace because the user interface on the demo site was more appealing (DSpace demo site versus EPrints demo site). I'm new to both these applications - I may have downloaded stuff from some repositories, but I've never installed or managed one.

The DSpace documentation recommends a minimum of 3 to 4 GB of RAM overall, so as the first step, I signed up for a 4 GB cloud server plan. I chose Hetzner as they are cheaper than some of the other server providers I'm familiar with -- I am on a shoestring budget so every dollar matters. Then I followed the DSpace installation instructions. The going was hard and I was out of my depth quickly. I'm comfortable with the command line but I'm new to system administration. When I got the Dspace site running, I could sign in and do a few things, but I could not add any entries. I was going to troubleshoot this and look for help on forums, but I kept postponing it.

Meanwhile I decided to give EPrints a try, and having completed the installation I think I'm going to stick with it. This is why:
  1. Familiarity with the technology. I'm more familiar with the core technology behind EPrints (Perl) than with the DSpace one (Java).
  2. Quality of documentation. While both DSpace and EPrints have extensive wikis, the Training Materials section in the latter is an excellent resource for me as a novice sysadmin.
  3. Being able to make sense. The EPrints installation process with its verbose outputs felt like a walk-through and I started getting a sense of how it works. I've encountered a few issues after the installation, which is nothing unusual, and I've been able to fix them by looking for help online. I find that I'm actually learning and not mindlessly copy-pasting code from the EPrints wiki or Stack Overflow.
  4. Subject headings out of the box. I opted to use the Library of Congress Subject Headings (LCSH) while installing EPrints, which saves me the work of setting up a classification scheme for the repository items. I don't know if the LCSH is the best option for my repository in the long run, but having this in place helps me to populate the repository up to a level where I can confidently demonstrate it to stakeholders.
  5. Possibly cheaper. It seems like EPrints has more relaxed hardware requirements than DSpace at least for a basic installation. I've set up my site on a 2 GB server on Hetzner and it's really fast.
While the default EPrints site does have a plain vanilla quality to it, which did not appeal to me initially, I now find the layout and navigation to be quite sensible.
I would certainly not conclude that EPrints has compelling advantages over DSpace. EPrints just seems to be a more suitable application for me. YMMV :-)

Monday, December 23, 2019

Setting up automated reminder messages in a Moodle course

If you'd like to send automated messages to learners enrolled in a Moodle course, the reengagement plugin is what you need.


I recently set up time-based, contextualised reminder messages using this plugin, and this post might be useful if you're looking to do something like that.

The course I was working with is a self-study course that learners are encouraged to complete within 4 weeks. The course consists of three quizzes, and once they achieve a passing score on all the quizzes they receive a certificate of completion (generated automatically with the custom certificate plugin).

I wanted to send the learners an automated reminder message after week 1 about the first quiz, after week 2 about the second quiz, and after week 3 about the third quiz. Importantly, the reminder message would be sent only to those who had not completed the relevant quiz.

To accomplish this, I first added 3 reengagement instances on the course homepage and kept all of them hidden.

Below are the key settings I used in the first reengagement instance to trigger a reminder message after the first week. In addition, I wrote out a fairly detailed message in the 'notification content' field (not shown below), addressing learners by their name ('Dear %userfirstname% %userlastname%'), saying why they are getting this message (eg, they have not yet completed the first quiz), and putting the message in context (eg, they must complete all the quizzes to receive a completion certificate).

The reminder messages seem to be working: 47% of the learners who made a start on the course completed it within 4 weeks, which I think is not bad for a self-study course.

The reengagement settings I've used:


















Sunday, November 10, 2019

How to display a digital badge from a Moodle site on an Open Badges portfolio

(This post has been updated in 2019 following the transition of Open Badges from the Mozilla platform to the Badgr platform.)


Have you received a digital badge?
If you've received a badge from a Moodle site where you've completed an online course, you'll usually be notified by email, for example:













Click one of the links in the email to access the badge on the Moodle site. You'll see your name, the issuer name, and other details. For example:
















If you know you've received a badge but don't get this email, don't worry. You can access the badge on your Moodle site by visiting <your Moodle site address>/badges/mybadges.php

Adding your badge on badgr.com 
Step 1: Download the badge from your Moodle site by clicking the 'download' link that appears right under the badge. (You may also see an option to add the badge directly to a backpack, but if you don't see this link or it doesn't work, you can add the badge manually to a badge portfolio by following the steps below.) 

Step 2: Create an account on the badgr.com website. 

Step 3: Login to your account on badgr.com and click the 'Add badge' button. Upload the image file of the badge that you downloaded from your Moodle site. 

Step 4: Adding a badge doesn't automatically make it public. If you would like to display your badge publicly, you have to create a badge collection. Click on the 'Collections' tab in your Badgr account and then click 'Create collection'. 

Step 5: Drag the badge you have uploaded into the collection you have just created. 

Step 6: Enable the 'Public' option right under the collection. Then click the 'Share' link to get the public link to your collection. 

Step 7: Add the public link anywhere you'd like! Any time you want to add a new badge to this public collection or to a new collection, simply repeat the above steps.

Thursday, September 19, 2019

Permissions snafu when importing across courses in Moodle

The import feature in Moodle allows you to copy over resources and activites from one course into another.

When you start the import process, you choose the source course (ie, the course with the stuff you want to import) and you get to choose what to import: activities/resources, question bank, filters, blocks, etc.

Consider this scenario:

1. You have a forum in an old course for which you have removed posting permissions (maybe because you have students in that course who stay enrolled but you don't want them to use the forums any more).

2. You want to import a Book resource from the old course into a new course. You do not want to import the forums.

When you carry out this import, you would of course have the Book resource in your new course, but you may find that the students in your new course can't post on the forums any more! This is because the import process brings in the forum permissions from the old course into the new one, even though you have not imported the forums themselves. In other words, all the user permissions from the old course are copied over into the new course, regardless of which activities or resources you imported.

I would definitely put this down as one of the idiosyncrasies of Moodle. I looked it up on the Moodle Tracker and indeed there is a bug report.

So the next time you import anything from one course into another, check the user permissions in the destination course to check and fix anything that has inadvertently changed.

Friday, September 6, 2019

Keyboard shortcut for "replace in selection" in Brackets

I recently moved from Notepad++ to Brackets for coding some of the dynamic elements in Moodle course content. With its modern UI, live preview feature, and very useful Emmet extension, Brackets has given a boost to my workflow. Strangely, a simple feature is missing in Brackets: you can't replace characters within a selection of text. There is however an extension for this called, quite simply, "Replace in selection". Finding and installing it is straightforward using the Brackets extension manager, and the brief help text says that the keyboard shortcut is Control + R.

But that shortcut didn't work for me. What use is a find/replace function without a keyboard shortcut?

Looking at the user key bindings in Brackets (Debug -> open user key map), I realised I had to figure out the command ID for this feature. The main.js file of this extension indicated that it might be "replaceInSelection.Replace". And that it was indeed - I added the following to the key map file and the keyboard shortcut worked!

"overrides": {
         "Ctrl-R":  "replaceInSelection.Replace"
    }

Wednesday, September 4, 2019

Questionnaire plugin in Moodle vs SurveyMonkey

A few years back I compared the "Feedback" tool in Moodle with SurveyMonkey.

"Feedback" is one of the standard Moodle activity types, but it doesn't seem to be getting a lot of love from developers. I haven't seen any major improvement in its features from Moodle 2.1 to 3.5 over the past eight years.

One major drawback of the Feedback tool is that it is still not possible to include matrix-type questions (with rows for statements and columns for marking choices).

Here's where the "Questionnaire" plugin offers a compelling alternative, because you can create questions such as this:

Source: Moodle Docs for Questionnaire plugin



SurveyMonkey will probably always have a better user interface, a greater variety of question types, and more options to analyse responses than any feedback/questionnaire tool in Moodle.

But the Moodle Questionnaire plugin may be a better option if the following statements resonate with you.
  • Your course participants don’t have to go to a different site to take the survey – there’s no break from the course experience.
  • You can make survey completion part of the formula/criteria for participants to complete the course.
  • Even if you set the survey in anonymous mode, you can check which participants have completed the survey (though you can’t match the responses with the participants) and you can send a follow-up message with the non-responders.
  • You can easily refer to surveys used in previous courses to check which questions were included, view/download the responses again, etc.

Monday, April 29, 2019

How to calculate the total number of forum posts from the course logs in Moodle

The course logs in Moodle contains a treasure trove of data for learning analytics. One of the numerous data points in the logs pertains to the forums in the course. If you'd like to calculate the total number of posts learners have made on the forums, how many posts were made in each forum, or who has posted how many posts, look no further than the course logs.

1. Go to Reports -> Logs from the Course Administration menu.

2. The default settings that you see on the Logs page gives you "everything but the kitchen sink" kind of data. For a course with 1000 learners, the Logs could have more than 300,000 events! At least that's my experience. You might not want to generate a spreadsheet with so much data. I prefer to use the "All changes" option instead of the default "All actions" option to zoom in a little closer to the events of interest, in this case, forum posts. This gives me a substantially smaller number of events to work with, for example, 50,000 instead of 300,000. This is of course still a daunting number but it yields a manageable number of categories for the next stage of spreadsheet processing.

3. Click "Get these logs".

4. Scroll to the bottom of the page and download the table data as a CSV or Excel spreadsheet. I'd suggest CSV for faster data generation and downloading. You can change the file format if you'd like when you open the sheet with Excel.

5. Once the sheet gets downloaded, open it with Excel (or LibreOffice/OpenOffice). Generate a pivot table with all of the data as the base.

6. In the new tab with the pivot table, put the following in the field list: "Component" in the Filters section, "Event name" in the Rows section, and "Time" (as count) in the Values section. Leave the Columns section empty. You can use some other field instead of Time for the values - this is simply to count the events.

You'll then see something like this (the numbers below are actual figures from a course with around 800 learners):


7. With this table, you can calculate the total number of posts made in all the forums in the course. Use either of the below formulas to get this data:

Discussion created + Post created - Post deleted
OR
Some content has been posted - Post updated - Post deleted

To find out the total number of posts made in each forum in the course, put "Event context" in the Columns section of the pivot table's field list. And to look at the posts made by each learner, put "User full name" in the Rows section - when you do this, you might want to choose either "Event name" or "Event context" for the Columns section, as using both together might make the data intractable to work with.

Wednesday, March 13, 2019

Emails from Moodle site marked as spam or not delivered to some domains

So you have cron working on your Moodle site but you have the annoying problem of emails from your site being marked as spam or not getting delivered at all to some email domains. For example, they might be delivered to a Gmail address (even if they're going to the spam folder) but not to an institutional email address.

If you see an email from your Moodle site marked as spam, download the email with full headers (in Gmail, you can do this through the “Show original” option) and check if there is a “fail” message next to SPF, DKIM or DMARC. This is a sign that something is wrong.

For example, if you see a “fail” or “softfail” message for SPF, the SPF DNS entry for your Moodle site may not be up-to-date. I encountered this problem recently after a Moodle site I administer was upgraded and it resulted in a change in the IP address as well as a transition from IPv4 to IPv6.

Google provides useful advice to deal with SPF, DKIM and DMARC.

It could also be that the IP address of your Moodle site has somehow been blacklisted. There are lots of email blacklists but only some of the blacklists influence email delivery to major providers such as Gmail and Yahoo.

None of the above - SPF, DKIM, DMARC, IP blacklisting - are Moodle-specific issues but they can affect your Moodle site, so you will need to consult a system administrator who has overall responsibility for the IT systems at your institution.

Friday, March 1, 2019

Moodling in 2018


Continuing in the series of my annual Moodling recaps (though this one has been delayed)...
  • What does "openness" mean in the context of an online course? At the most basic level, I would think it means open access to the course materials, that is, anyone can enrol in the course. What about reuse and adaptation? Can an online course be made available in its entirety - including source files of the resources and activities - and be ported to a different learning platform, where it can be freely adapted? And how about training people to make the most of the course as they embark on this embedding or localization? In 2018, I worked with my colleagues at INASP to address these aspects in relation to the popular AuthorAID online course in research writing. We developed and offered the AuthorAID Online Course Toolkit Programme to help experienced researchers in developing countries run the AuthorAID research writing course on their own, on their own Moodle-based learning platform. Hopefully we will be writing about our experience soon on the AuthorAID or INASP blog.
  • I implemented a new interface on the INASP Moodle site to help potential participants learn about our courses and enrol in them directly. Check it out: https://moodle.inasp.info/
  • With the emergence of GDPR, it was imperative for us to upgrade our Moodle site so it would be GDPR-compatible. I was involved in getting the site upgraded to version 3.5 and implementing the GDPR stuff. I'm yet to explore all the new features in 3.5 though!
  • And as usual I continued to be the technical administrator for online courses at INASP.
Compared to previous years I spent less time Moodling as a result of different work priorities. Let's see what 2019 holds!

Wednesday, August 29, 2018

Making the Moodle Calendar block neater by removing the Events Key

(I've updated this post for Moodle 3.5)

I think I prefer the Moodle Calendar block to the Upcoming Events block because it has a little more visual appeal and event dates are highlighted. However, I don't like the Events Key that appears in the Calendar block. I'd rather not distract learners with links on the course homepage that are not central to the course experience. The Events Key has four or five links -- that's a lot.


I wanted to hide the Events Key in this block while retaining it in the full view of the Calendar (which you see upon clicking the month name in the Calendar block) -- I didn't want to lose this set of links altogether.

Adding this CSS line in the settings of the Clean theme worked for me (on Moodle 3.5):

.block_calendar_month .calendar_filters {display:none;}


Earlier I used the below lines for Moodle 3.1:
  
.block_calendar_month.block .filters.calendar_filters 
{display:none;}

.block_calendar_month.block .eventskey {display:none;}



Now my course calendar looks neater:


Thursday, May 10, 2018

7 aspects of accessibility to consider when designing and developing online courses

I recently had an interesting discussion with a colleague about accessibility in online learning and I was inspired to make this table listing some aspects of accessibility for online course designers and developers to consider.

Wednesday, March 14, 2018

Making Moodle pages that are accessible site wide

If you'd like to add 'global' pages on your Moodle site that you can access anywhere, you might find the options in this post useful. These are the options I know of - I won't be surprised if there are more!

Option 1. As part of courses open to guests: You could create a course on your site that is open to guest access, and you could make pages and put publicly accessible resources here (as a kind of repository). The trouble is when you link to any page or resource here, the user will be taken to a completely different part of your Moodle site and this might break the user experience. The user might drift into the course with all the publicly accessible stuff and wonder what it's all about!

Option 2. Using the Main Menu block: On your site homepage add the 'Main Menu' block. Within this block you can add not just pages but any Moodle resource or activity that your site supports! I don't want my users to see the block itself on their homepage so I edit the block-level permissions to make it invisible to students and other roles. This does not affect the visibility of the pages I create in this block. I copy the URL and put it anywhere I like. And they appear neatly as 'Home -> Site pages -> Page title' in the breadcrumb without the confusingly long trail as in option 1.

Option 3. Using the Static Pages plugin: This plugin adds a feature to the Site Administration menu to let you create and maintain static pages. It's great but for one problem: spaces are not supported in the page title. So you are constrained to use one-word titles like 'FAQ' and 'contact', or you need to add hyphens/underscores between words in the title, which ends up looking weird in big font when the page is published.

Option 4. Adding a page directly on the site homepage: If you enable the setting 'include a topic section' in the Front Page settings of your site, you can add any resource or activity directly in the main section of your Moodle site homepage just as if it were a course section. I think the Label resource is particularly useful for the site homepage: with the right design or CSS you can add visually appealing content on the homepage. If you add any other resource/activity such as a page, the homepage develops a course-like character that you might not like! 

Thursday, February 8, 2018

Free Moodle test site with Bitnami and AWS

As a Moodler at a nonprofit I like to know how I can run a complete Moodle site on a low budget if I need to experiment. MoodleCloud is great to try stuff at the course creation level but it does not come with full rights for site admins. I'm a Moodle site admin, not a system admin, so I'm not too particular about server access.

A couple of weeks back I started on a project at work to make our Moodle site more visually appealing. I wanted to show prototypes as we went along without disturbing our production site, and I remembered that Bitnami has a Moodle stack. I opted for the Amazon Web Services (AWS) option as it seemed to offer the cheapest monthly price. Then I found out that I could sign up for the AWS Free Tier which offers 750 hours per month of compute time free of cost for 12 months! A month can have a maximum of 744 hours so I figured I should be able to run one Moodle 'instance' on the AWS Free Tier nonstop.

The process of setting up a Moodle instance on AWS through Bitnami was a bit intricate and I got stuck at the point of copying in the access key ID from my AWS account into my Bitnami account. There was something weird about the form field on Bitnami where I had to put in the access key ID. But soon it was a happy ending and I was lord of my own Moodle site in an obscure corner of the internet :)

Now I'm looking forward to tinkering on this site free of cost for up to a year!

Thursday, January 25, 2018

Moodling in 2017

It's that time again when I reflect on my Moodle experiences in the past year!
  • Last January I tinkered with the Moodle database for the first time soon after taking the MoodleBites MySQL Reporting course. My goal was to get a count of the number of forum posts that received 'useful' ratings. I posted a query and a solution on the Moodle community forums, and my friend Farhan posted a better solution in the same thread. I've not yet got a chance to try out his solution though.
  • In February I was busy revising a research article I'd written with my colleagues. We had submitted the article to a journal a few months before and we got a load of reviewers' comments. I thought the revised article would again be peer-reviewed so it was a huge relief when it was accepted a couple of days after we submitted it. The article, titled 'A MOOC approach for training researchers in developing countries', was published in the March 2017 issue of Open Praxis.
  • May and June are the hottest months of the year in south India, where I live, but luckily I had some travel to take my mind off the weather. I went to Hyderabad to speak at ICT4D 2017 (Hyderabad was also hot though!) and made two trips to Tanzania to conduct training-of-trainers workshops for university lecturers interested in running the AuthorAID online course locally.

  • I was inspired to look at the AuthorAID online course through a new lens after attending a scholarly commons workshop at Indiana University Bloomington in July, and I wrote this piece: Can an online course be a commons?
  • In August my colleague Andy Nobes and I were invited to give a talk based on our Open Praxis paper at a webinar series run by e/merge Africa. We had a really engaged audience who asked a lot of questions!
  • Last year we ran two AuthorAID MOOCs on our usual schedule: one in summer and one in autumn. Before the second one I had some time to make the course materials compatible with the Moodle Mobile app, and it was less work than I thought it would be. The course lessons are made with eXeLearning and I only had to change the theme for mobile compatibility. The core activities were of two kinds: quizzes and writing activities including peer assessment. Moodle Quiz is compatible with the app (even the offline feature of the app) but Moodle Workshop (for peer assessment activities) isn't compatible yet. Still, it was great to see that most of the course materials work well in the app! We got some nice feedback from the learners too :)
  • After another exciting year of Moodling, it was unfortunate that I couldn't attend the MoodleMoot in Mumbai that took place in December. But I'm happy that my friends Farhan and Michelle, two of the most high-profile Moodlers in India, were part of it. Martin (the founder of Moodle) even went to Michelle's school! I'll sign off with the video he made:

Tuesday, August 29, 2017

Is Moodle good for MOOCs? Let's inspect the question first.

Last week I had the pleasure of being a speaker in a webinar organised by eMerge Africa. My colleague and I spoke about MOOCs in the African context based on our experience running such courses on our Moodle site. During the lively chat one of the participants popped this question: 'Is Moodle good for MOOCs?' I didn't quite know what to say and I didn't want to start writing a 'yes, but...' response. Later I realised that the problem lies in the syntax of the question: 'Is X good for Y?' is not the best way to figure out the means to an end if the 'end' or goal is simplified or woolly to begin with.

Let's consider the Y in this case: MOOCs. What's a MOOC? A course with a large number of learners? Fine. What's this course about? What is this course made of - what kind of content and activities? What taxonomy levels do the learning objectives map to? What is the nature of student-student and student-teacher interaction? How will student work be evaluated, and how will the course itself be evaluated? Then, what does a 'large number of learners' mean? 100? 1000? 10,000? 100,000? We need answers to all these questions and more to make the Y concrete. After that we can take up the question 'Is Moodle good for MOOCs?', and there's a good chance you'll find that it is!