Optimising Open Source Canvas

We recently tried to run an online quiz with about 200 students and quickly discovered that running a default setup of canvas on one machine was clearly not going to work. In short, nobody could log on.

In trying to fix this problem, I first moved the Redis Server onto its own box. It was consuming about 5GB  of the available RAM on the web machine. I had already turned off background saving to disk as another optimisation.

It turns out that the default Apache and Passenger settings aren’t that optimal either. If you are just using a single machine to run Canvas, then you can afford to tune the settings up.

So in mpm_event.conf I added:

MaxRequestWorkers 400

and in the apache site config I added:

PassengerMaxPoolSize 15

You should then check to see if you have done anything overt to your memory and cpu usage.

You can also check utilisation using:

sudo passenger-status

People moving on and OpenEdX

The two people that really were behind the inception of OpenEdX, Rob Rubin and Sef Kloninger have both left their respective organisations (edX and Stanford). Sef was the driver behind getting edX to finally open source edX when they did and pushed for Stanford to become a major part of the development effort.

The significance of them leaving at roughly the same time may be serendipity, but its impact on the project will be significant. New people coming into their respective roles will have different views and agendas. Certainly Sef was a tireless promoter of collaboration and open source and everything that was good about the project could be put down in no insignificant way to him.

That doesn’t mean to say that I necessarily agreed with Stanford’s move away from developing their own platform, Class2Go, to using OpenEdX. Although I understand the rationale, I still believe that the project hasn’t and won’t ever live up to its potential. Perhaps, this is something that Rob and Sef came to realise as well?

I wish them all the best with their new endeavours though.

Badges and Canvas

Now set up Open Badges with Canvas using Canvabadges by Brian Whitmer (one of Instructure’s founders). This turned out to be not so bad to set up although the instructions on GitHub are for development and I eventually moved it to a more production environment.

One of the issues with Ruby and Rails is the same as Python and Django – language versions, frameworks and different ways of running and managing the software. Because of this, I have managed to get Canvabadges and RubyCAS (for centralised authentication against AD) working with Ruby 2.1 and am using Passenger with Apache to run both. I have also settled on using PosgtreSQL as the database running on AWS RDS. 

It seems that most Ruby folk favour using Heroku as their hosting environment and so you have to do some changes when running on AWS – mainly because AWS provides load balancers and you can terminate SSL there.

However, all went well and a continuing stark difference compared to the general horribleness of OpenEdX which I still have nightmares about. 

 

Instructure Canvas LMS Setup and LTI

Setting up Canvas LMS (Git repo here) was a breeze (especially compared with OpenEdX). It took a few hours to get it running on AWS. An afternoon to re-theme and pretty much all working. I haven’t had much to do with Ruby or Rails – ironically, the piece of code I tried to submit to the edx development was a python replacement for the Ruby-based Rake configuration scripts on OpenEdX. It seems ok and I am glad I am seeing what it can do in comparison to python and Django.

I have to say that having the edit function built into the same product as the live function (it was like this on Class2Go) is so much better than having the two products separate as they are in OpenEdX. It also reminded me about how good Class2Go was as it wasn’t that dissimilar in approach to Canvas.

The next challenge for me was to get interactive code grading working. I wanted to continue to use interactive exercises that I had set up in Class2Go. The way that this is done in most LMS’s and in Coursera is via LTI. So after a good number of hours working my way through that process using some dodgy LTI code examples, I came across Instructures Ruby ims-lti  and then the python version of this ims_lti_py. Using that made the job pretty easy (well, easier).

The interactive grader is a python django app that executes python, sql, xml validation, matlab and other things in a jailed schroot on a grading server. The LTI interface launches the interactive exercise and the scores are returned after the student submits.

 

The end of OpenEdX

I have finally decided to ditch trying to get OpenEdX working for production at UWA and am switching to Canvas.

I would like to outline my reasons as I believe that anyone trying to do this in a University environment for both MOOC and internal use may run into similar issues.

First, as I have mentioned before, the goals of the edX team and the use of the OpenEdX software are clearly not aligned despite the efforts of certain individuals on the team. The edX team’s priorities are running software that services the needs of the edX consortium and that means something that will scale and deliver MOOCs. There is a support team to assist academics, there is an ops team to run the production environment.

If you are an individual or small team looking to run something that can do MOOCs or run as an LMS in a University environment, OpenEdX is not the right product for you.

If you are an individual wanting to contribute significantly to the development of the product, OpenEdX is not the right project to be involved in.

My goal was to use a leading edge platform that could do MOOCs, could deliver flipped classrooms and could incorporate contemporary educational technology in the platform. OpenEdX was not the right choice for this. It is far too complicated a platform, with too many components and with to vast an array of technologies.

In short it is a dog’s breakfast.

So – I am getting Canvas set up. This is not to say that the Canvas open source culture and environment is necessarily any better but it took me a few hours to set up the environment and get *all* of the components working. In 9 months of working with OpenEdX it took weeks to get most of it going and I never succeeded in getting everything working.

I will be archiving the edX content I have written into edX and starting a Canvas one. Hopefully I will be able to draw parallels between the two environments.

It is possible that OpenEdX will change one day and become something useful on a wider scale – it is a shame it hasn’t because the idea was great. We will see.

OpenEdX 9 months on – nothing has changed?

I have just got around to updating our production machines with the latest versions of OpenEdX and getting the external graders working. Since setting up the production environment, we put moving to OpenEdX on the back-burner because it was too hard to get everything working in time for the teaching semester. There was also the lack of functionality in terms of reporting that was also an issue.

I would like to say that things have improved since then – nearly 6 months on – but unfortunately not. It was surprising really why it has taken so long to get some fairly basic functionality into the product. This reflects, I have come to realise, the fact that the product is really aimed at the running of edx.org and the edX operation and it was never intended to be a general purpose course platform.

The other aspect is the overall complexity of the product with “more moving parts than a swiss watch – but without the precision engineering”. Couple this complexity with a development team that is somewhat chaotic – especially in their dealings with outsiders and you really have a recipe for something that is not long for this world. Another point is that many organisations – Stanford and UWA are trying to use these platforms for dual-use – as a MOOC platform and as a contemporary LMS. I will say straight up that OpenEdX will never be an LMS. The key here is that academics really want to spend a minimal amount of time in managing the software around a course. Without functionality that allows this, you either have to have a support team that does it for them or have the academics know how to do things like parse JSON etc.

Anyway, I am going to get what I can working and then try running it next semester. In the meantime, I am investigating Canvas from Instructure. Hopefully will be able to do a compare-and-contrast.

Welcome

This site is about OpenEdX  the open source MOOC platform created by edx.org. It will hopefully contain information for anyone wanting to evaluate, deploy, use or extend the OpenEdX platform. Reading source code is great and various bits of documentation and readmes is great but it would have helped me if I had access to what I know now. Also, by setting expectations, it is likely that the whole experience of using OpenEdX can be made more fruitful.My story with MOOC platforms started with a collaboration with Stanford University’s Class2Go platform. This is what we used at UWA to set up UWA Class2Go. In that process, I have contributed some elements to the code base to support Class2Go in our environment. The plan is to move to OpenEdX and that required me to look at modifying the platform again to fit in with our environment.

OpenEdX is a more complicated collection of software than Class2Go. It uses multiple languages, database technologies and about 100 different packages requiring some familiarity with a lot of different things. Deploying a platform like OpenEdX is one thing, managing it is another. Hopefully though, through efforts of the various development teams and contributors, the platform will stabilise and become more manageable. In the meantime, there are a number of advantages that this platform brings over a conventional Learning Management System and so it is worth exploring and persevering. Eventually, Google will support the platform in such a way that anyone could use a hosted solution and so that may be the answer for many users.

A disclaimer. This site is my own initiative and all opinions, information given and mistakes made on the site are mine.