Drupal as an LMS
I just finished teaching my Content Management Systems class. This time it was online, taught to library and information science students. I will write more about that experience and compare it with the first time I taught it; for now I wanted to share my thoughts on Drupal as an LMS.
Why not just use BlackBoard?
Many years ago, when I taught at OU, BlackBoard was actually cool and nice. It was pretty lean out of the box, but you could learn the tricks and re-arrange the blocks and then even embed HTML into them - paving the way for RSS and all other kinds of import tools, meaning you could pretty much have anything you wanted in it. When I saw it again after a long break last year, I had the impression that their developers have spent the last five years cramming every bit of fancy (but largely useless) tech into it and burying the simple and elegant stuff so deep that it is next to impossible to find.
I hope bloating can be resolved in future versions, but one thing can't - the closed proprietary nature of commercial LMS. I think using proprietary systems for simple things like LMS in public universities is tantamount to high treason - especially when there are beautiful and reliable open source projects like Moodle (I taught a class in Moodle in 2007).
So it is clear why BB is not a winner - it sucks and it costs money; but why not use Moodle? Normally, you wouldn't want to re-invent the wheel, so an existing solution is better than a custom-made one. I went with Drupal over Moodle for two reasons: one, this is a CMS class, so what better way to get the students to experience a CMS than to let them use it from day one because the course support site runs on it? Two, I was curious to see myself if it could be done. There is a joke in the Drupal community that you use WordPress to build a blog and you use Drupal to build WordPress; I think there is a grain of truth in it. I have spent days and weeks as a child with LEGO and it clones; Drupal is my grown-up LEGO, it is awesome to be able to build complicated systems out of a pile of parts.
Limitations and logistics
There were two issues that I didn't want to deal with. One, I would have very limited flexibility if I stayed on university-run services and servers; I needed a Wild West environment for my students to be able to experiment in. So I ran it off of my own shared hosting server. Two, I didn't want the responsibility of handling sensitive information like grades. So I kept all my grades in Blackboard because everyone at my university already has an account in it and we are paying for it, so we might as well use it to do the dirty work.
Keeping it lean
If I proclaim that BB sucks only because it has too many features, then the last thing I want to do is re-create the monster in Drupal. I want my LMS to be lean and clean. That means several things:
- if not sure about a feature, leave it out
- use core modules and core functionality as much as possible
- do not use contributed modules that hack core, i.e. try to force Drupal to behave like not-Drupal
- keep the number of contributed module to a minimum
- prefer general-purpose contributed module to highly-specialized ones
There was a panel at DrupalCon Denver where the presenter asked how many people had sites with over 50 contrib modules - almost all hands went up. Hands still went up when he raised the number to 100; a few went up even at 200. To me that sounds scary, and it sounds lazy. It is like sending 200 people to the ISS, knowing that most of them are certified psychopaths, and expecting the station to function smoothly in the long run.
Modules: Content organization
Views / CTools http://drupal.org/project/views
Starting the Drupal module list with these two is like listing your lungs as part of the equipment for a diving trip. They are indispensable because they are awesome by themselves but also because there are many wonderful things that have been built on top of them.
Date / Calendar http://drupal.org/project/calendar
Chronological organization of content is essential in a course that has a fixed schedule, due dates, holidays, and office hours. Date and Calendar running on top of Views is winning combo. There are other modules like Full Calendar; but all I want is a simple well-integrated calendar, and good support for Date fields in my content types, so this is all I need.
Tokens make Views ten times more powerful by allowing re-writes. Tokens also come handy in other places like webforms and email templates. I iz in love with tokens.
I think you can't really claim that you are in the content management business unless you are creating links between related pieces of content. References allow you to do that. Relation does it better but I am used to References and they work, so I won't abandon them just yet although I am keeping my Relation knowledge current (like the Mac OS X of PowerPC days having a clandestine clone in x86).
Automatic Nodetitles http://drupal.org/project/auto_nodetitle
A beauty of a module that depends on another beauty, Token, to allow you to hide the title field on content creation forms. It works wonderfully when no meaningful title exists, or when a meaningful title is best created on the fly from a combination of other fields.
Comment Notify http://drupal.org/project/comment_notify
We definitely need discussion board functionality, but it cannot live by itself - it needs to be situated with the content it describes and discusses, so comments on every page are better than a standalone forum; but once you have that, you need a good way to be notified when your questions are answered, and this is what this module is for.
Sometimes there is a lot of content that all belongs together on one page but it is too long for one page; making some parts of it collapsible makes it manageable.
Field Permissions http://drupal.org/project/field_permissions
I locked out all unregistered users from the course by unchecking the "View published content" permission for anonymous users; I then used content-type level permissions to control what students could and couldn't do. But there were times when I needed to delegate access at the field level - for example, I created an appointment system where I wanted the students to be able to grab a slot they need (=edit the name field) but not be able to change the slot time (=edit the date field). Field Permissions allow me to do just that.
This is not technically about usability or user experience, but it can be, if you have an anonymous webform available at all times for people to submit ideas and vent - and be able to say things they may not say to you in person, so you can continually improve your teaching and the tools through which you deliver it.
Module Filter http://drupal.org/project/module_filter
There are tons of things you can do on the admin side, but there is only one thing that you can't do without once you try it - the Module Filter module that reduces that endless module page to a manageable length, lets you search modules, and hit the save changes button without having to scroll.