We’re looking into Learning Management Systems (LMS) and having some experience on the matter (see my co-founding venture, GradFly) I happily volunteered for the task.
Based on what I’ve seen so far, here are the best candidates:
Opigno – Opigno is a Drupal-based open source solution. Their business model is the usual, you can have the open source platform and go on your merry way, or you can have it hosted and tended to for some charges. So far I could not seen any small print within that business model, truly, if you download the open source version, that is yours. The code is released under GPLv2, which means you can make as much money selling it as you want. Basically, the question is – do you want it to be hosted as a service, or do you want to do the heavy lifting yourself?
Opigno’s UI looks absolutely sweet. Their website is Foundation for sure, indicating that the people developing Opigno have a strong sense of beauty. Opigno, by deafult, does not ship with Foundation, but fear not: there is a Drupal Foundation module for that. The Opigno distribution contains the Drupal core, so it’s enough to download and setup Opigno, no need to get the separate Drupal core beforehand. The installation will take 2 minutes if you have XAMPP, 30 minutes if you need to install XAMPP as well, and 2 hours if you need to install Opigno, XAMPP, and have to assign new ports for the bundle. Really, aside from my personal port-struggles (Pentaho runs on Tomcat as well, so now there are two tomcat instances on my sandbox) the installation process was a delight. Opigno is a beauty.
Moodle – Oh my God, I don’t even want to talk about it. Actually the reason I decided to write up this article was Moodle. I’ve been struggling with the installation for 2 hours now, and I needed to take a break.
Moodle is a well-known player in the arena, my alma mater uses it, too. It is also based on XAMPP, so it shouldn’t be a problem to install, right? I don’t know, my friend. This Moodle is bad, bad news. I exploded the package in the right directory, created a database, assigned the permissions and modified the config.php file. Two clicks into installation and Moodle throws the first error:
DDL SQL EXECUTION ERROR Debug info: Can't sync file '.\moodle\mdl_user_private_key.frm' to disk (Errcode: 22 - Invalid argument) CREATE TABLE mdl_user_private_key ( id BIGINT(10) NOT NULL auto_increment, script VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', value VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', userid BIGINT(10) NOT NULL, instance BIGINT(10), iprestriction VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, validuntil BIGINT(10), timecreated BIGINT(10), CONSTRAINT PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE = utf8_unicode_ci Error code: ddlexecuteerror Stack trace: line 449 of \lib\dml\moodle_database.php: ddl_change_structure_exception thrown line 833 of \lib\dml\mysqli_native_moodle_database.php: call to moodle_database->query_end() line 88 of \lib\ddl\database_manager.php: call to mysqli_native_moodle_database->change_database_structure() line 77 of \lib\ddl\database_manager.php: call to database_manager->execute_sql() line 417 of \lib\ddl\database_manager.php: call to database_manager->execute_sql_arr() line 369 of \lib\ddl\database_manager.php: call to database_manager->install_from_xmldb_structure() line 1486 of \lib\upgradelib.php: call to database_manager->install_from_xmldb_file() line 237 of \admin\index.php: call to install_core()
I check the database – there are 109 new tables sitting there. So it’s not a permissions issue. I drop and recreate the database, restart the install: another SQL error comes up. Quick google, turns out the error happens quite a few times on Windows boxes. Congratulations. This is an entirely different experience, conmpared to yesterday’s Opigno POC.
I gotta go now, and finish this Moodle install. I’ll let you know if I find a solution to the DDL execution error.
UPDATE: I will be posting every attempt’s error message for your entertainment.
Debug info: MySQL server has gone away
I don’t know what this little prick is trying to do, but we’ve now reached the points where MySQL just quits. I do not wish to express my opinion on the matter.
16:34: Debug info: The table ‘mdl_course’ is full
I haven’t even created the course table yet.
16:38: Debug info: MySQL server has gone away
16:39: Debug info: Debug info: Table ‘mdl_config’ already exists
Haaaa, tricked you! Didn’t drop the database before this round.
16:44: Debug info: Can’t sync file ‘.\moodle\#sql-1230_bd.frm’ to disk (Errcode: 22 – Invalid argument)
16:49: Debug info: Can’t sync file ‘.\moodle\#sql-1230_bd.frm’ to disk (Errcode: 22 – Invalid argument)
17:00: Debug info: Debug info: The table ‘mood_course_log’ is full
17:02: Debug info: Debug info: The table ‘mood_course_completion_criteria’ is full
17:11: Debug info: Debug info: The table ‘mood_course_completion_criteria’ is full
See how consistent the error messages are? In the meantime all I do is change table prefixes, drop databases, and change permission parameters (switching back and forth between ‘everyone can execute here’ to ‘only I can execute here’).
17:18: Debug info: The table ‘mdl_course’ is full
17:25: Debug info: MySQL server has gone away
MySQL gave up. Excellent idea, I call it a day myself.
Conclusion: Drupal – sí, sí, Moodle – no, no. Drupal – sí, sí, Moodle – no, no.
UPDATE: Here is the second part of the story, where I describe ‘The Ugly’ of the trio.