I almost made my peace with Blackboard for the upcoming semester. I recently discovered that they support WebDAV for transferring files in and out of the ‘content collection’. Although WebDAV largely sucks, this was a revelation. It meant I could use real tools like rsync instead of clickety-clickety-uploading files one at a time. I pictured using Blackboard just as a shell, with its discussion fora and gradebook, but with most of my content (notes, assignments) in uploaded HTML. I don't want that kind of content managed directly by Blackboard, which makes it way too hard. There are plenty of great tools to generate HTML from simpler sources – with syntax highlighting for code – such as pandoc.
Of course, while experimenting today I found not one but two showstopping misfeatures. The first is that, once in a while, Blackboard decided not to display the HTML content within its frame, but rather to download it. I couldn't for the life of me figure out on what it based this decision. In one case I opened an editor over WebDAV, added one line, and thereafter it would switch from download to inline display.
The second problem was that, after an rsync, Blackboard would decide that, because the file I had linked into the content area had changed, it wouldn't link to it anymore, and instead display the title with the message “(Invalid File)”. Helpful. Clickety-clickety to fix them all again.
(It's conceivable that some of these issues are due partly to buggy WebDAV on either end, but I'm unwilling to investigate too far just to exonerate Blackboard.)
So I'm back to linking to the course web site (which I'll probably build with yst) on an external server. I think what I most need in an LMS is for it to be a (very) thin layer on top of static HTML that can be generated however I want. I'm inspired by how easily you can add something like Disqus to static HTML. An LMS could just be an integrated collection of similar tools to provide discussions, gradebooks, assignment drop boxes, student profiles, etc.
I started to hack on something like that, but I'm not happy enough with it to use it for Fall 2011. (And if I resume hacking on it, I'll probably start over and scrap Python.)