Remembering CAREO

Today is a memorable day. It’s the day that CAREO, the learning object repository we built at The University of Calgary, is being officially decommissioned. Unplugged, mothballed, and put into storage. It’s been a wild rollercoaster ride for these 6 years, but that ship has sailed. Back in 2001, when CAREO was first created, there was a need for a concrete prototype of a repository. Other available software didn’t quite do what we had in mind, and it was relatively easy to just go ahead and build some software to test out some ideas.

I was just coming out of the First Dot Com Bubble Burst, having just gone down with the ship at an eLearning company in March 2001. So I had some free time, and wanted to learn something new. I was asked if I could put together a working repository, and naively said “sure”. I’d never built any server software, but wanted to play with WebObjects. This was the perfect opportunity. The project picked up a shiny new PowerBook G4 (400MHz! Holy cow!) for the repository to be built on, and I got to work from my home office. Things went well, and I was using EOModeler to implement the nearly-final IMS LOM metadata specification as a set of 80-or-so tables with joins all over the place. Oy.

The first alpha version went live from my home office, served up over my home cable internet connection, and using DynDNS to make it available. Worked like hot damn. The hardest part of the whole process was in learning to stop thinking so hard and just let WebObjects work its magic.

Soon, CAREO was scaled up, features added, and content contributed. A server was acquired (a shiny new XServe rev 1.0). It was a self-contained, standalone repository. Others started to show some interest, and I had the pleasure of working with Brian Lamb, the Learning Objects Discoordinator at UBC’s OLT. We set up a copy of CAREO on a UBC XServe. Gerry Paille set up a copy of CAREO at Peace River. There was a copy at the University of Ottawa (they actually got significant funding to run their copy – much more than we ever saw to cover the building of the thing in the first place…).

Over the first 3 years of CAREO’s life, there was a flurry of development activity. I added features such as wiki pages and threaded discussions tied to each learning object. A “theme engine” was built so people could customize the look and feel of the repository application interface. A custom “SciQ” K-12 science repository was built, and used in the Alberta science curriculum. I added RSS feeds for the “newest objects”, “top objects” as well as for user-defined searches. Support for Trackbacks from other software was implemented, letting people add context to the learning objects via weblogs or other trackback-enabled services.

The custom relational database for storing metadata was replaced with a multifunction generalized XML-in-MySQL store written by Julian Wood, along with adoption of the JUD XML-RPC API. A repository using an API to connect to the separate data store. People could use the ALOHA client application to manage their learning objects – adding metadata, uploading media, etc… and CAREO would pick it up automatically because it was talking to the same abstracted metadata store through the same API.

A bridge to the EduSource network of learning object repositories was built, making it possible to search from one repository and find learning objects scattered throughout the network through a custom inter-repository API. That API and network cost a lot of money and time. And didn’t work as well as Google.

I spent a fair amount of time experimenting with native XML databases to store the LOM metadata – BlueStream XStreamDB and eXist have both matured so much over the years. A Sherlock search widget (this is pre-Dashboard) was built to let people search the repository from their desktops. Installers were built to make it easier to get your own copy of CAREO on your own server.

Heady times. And most of the work was done with surprisingly little financial support. We were able to do a hell of a lot with what we had, though.

Then, things pretty much stagnated. Development stopped, as we focussed on higher priority (i.e., funded) projects. Other software matured to the point where it was difficult to justify maintaining a custom repository application. If I were to start from scratch now, I could deploy a more fully-featured repository powered by Drupal without having to write any code.

Over the years, I’ve been asked several times by people investigating learning object repository software to implement at a national level. Each time, I said that although the source code for CAREO is available, it would be a much more effective use of resources to just go ahead and use Drupal. Work with the larger community, and don’t write (or sustain) code that you don’t absolutely have to.

CAREO was important, back in 2001-2004, as a prototype. As a sandbox for trying out some of these concepts. As a place to easily host metadata and content and try the repository model. From that perspective, I think it was a huge success. Without CAREO, I would likely still be saying that we need centralized institutional repositories to tightly manage resources.

But, because of CAREO, I now know that we don’t need repositories at the institutional level. Personal repositories are much more powerful, effective, and manageable. They’re called blogs, maybe you’ve heard of them? And small pieces, loosely joined. Want to manage photos online? Use Flickr. Videos? Use YouTube/GoogleVideo/etc… We don’t need a monolithic institutional repository.

RIP CAREO

And now, it’s Halloween 2007. And we’re about to decommission our CAREO server here at UCalgary after 6 years. The software has been acting up, and it’s just not worth the time and effort to figure out what’s gone krufty. So it’s time to put it out of its misery. Farewell, CAREO. Thanks for the good times. I’ve learned a LOT about software design, information architecture, and metadata. More importantly, I had the pleasure to meet and work with a LOT of awesome people, all working on similar projects because they believe (as I do) in the greater good. Sure, we were naive, but we meant well. And now, hopefully, people will learn from our successes, failures, and mistakes, and not be doomed to repeat them.

LOR Typology: CAREO errata

I just poked through Rory’s A Typology of Learning Object Repositories article, starting with the tables, and found a few errors relating to his description of CAREO. Here are the corrections (I don’t have Rory’s email handy, and there aren’t comments on the DSpace page for the article):

  •  CAREO supports hosting content as well as linking to other servers. That was one of the primary goals of the project – to allow people to easily post content without having to know FTP. I don’t have the stats on this, but about half of the items in CAREO were uploaded to the CAREO server via the “add object” form.
  • For “maintaining” an object – CAREO lets the owner of the object edit the metadata, including replacing the media with an updated version.
  • CAREO does allow retrieval of metadata – there’s a “metadata” button on every object – which shows up once you are logged in.
  • CAREO requires an account to submit objects, but anyone can create an account.
  • The metadata schema used was IMS LOM (and later IEEE LOM).

But, it’s all a bit moot, as institutional and provincial support for the CAREO repository evaporated long ago, and the application itself is on its last legs. It’s no longer supported, is barely functioning at the moment, and will be decommissioned at the end of the month.

Learning Object Repositories 2.0

I (still) spend a fair amount of time thinking about the learning object repositories work that was done back at the turn of the century. A bunch of folks (myself included) took up the task of building software to let people easily publish, describe, share, find (and hopefully use) digital assets or learning objects (assets with a bunch of metadata tacked on the side).

I think it’s fair to say that the experiments failed pretty dramatically. The only content that was added to CAREO was done under the auspices of Large Projects and/or Institutions. Individuals, by and large, didn’t spend much time with it, or its ilk. Why is that? Why have other applications and platforms gone on to be much more successful, by any definition of the word? Well, here are some reasons:

  1. Sharing. With all of the talk about interoperability, all that really happened was some loose agreement that “metadata is important, for some reason, and that people will want to write lots and lots of stuff to describe every resource, for some reason.” We wound up with a bunch of quasi-standardized metadata, but no real way to share it – sure, there was the OAI. That’s a pretty powerful end-user strategy.
  2. API. The closest the Learning Object Repositories got to an API would be either OAI or EduSource. Name 3 apps that you use today that use either or both of those. Both are rather cumbersome to implement, and not too mashup-friendly. Nowadays, as David Wiley is fond of saying, people “just use RSS”. Sure, you can add other APIs if needed (atom? custom?), but RSS is good enough for most interaction between systems.
  3. Social. Sure, CAREO had a threaded discussions feature, and a wiki for every resource in its database, but without PEOPLE, it was just a bunch more empty web pages. One of the lessons I’ve learned from David Wiley’s recent presentations is that we should be leveraging what people are already doing, where they are already doing it. Don’t make them come to CAREO to comment on something. Let them comment on del.icio.us, or digg, or wherever. And work on ways to tie those conversations together. That’s not to say that this functionality isn’t necessary, but that it shouldn’t be exclusionary. Play well with others (see points 1 and 2 above).

I’ve mentioned before that much of the functionality of a “learning object repository” could be implemented for free with Google and del.icio.us. That’s a bit facetious, but not that far off the mark. I’m seeing some recent stuff that is really promising. Most recently, fOUnd It, from the Open University. It’s just a Pligg install. That’s it. But it lets people add resources (“news items”) that can be tagged, referencing any web page. And it supports rating/reputation (thumbs up/down, promoting to front page, etc…) and discussions. This takes care of 99% of CAREO’s functionality. For free. And, because it’s not a Learning Object Repository project, there are more developers working on it (because it’s more generalizable – there is NO need to build special apps just for education).

Or, you could just grab a copy of Drupal, install a couple of modules, and have a learning objects community site that could connect with del.icio.us, flickr, or any other app/platform that supports RSS. And have full-on blogging, forums, etc… for free, out of the box. Without any focus on metadata, or interoperability, or any of those other helpful things that just get in the way of individuals connecting. If we’d just waited 5 years, the “learning object repository” work would have been completely different, and would have been able to focus on important stuff, like content and context.

CAREO: Resurrection

One of the tasks that’s been on my desk for awhile has been giving some love to CAREO. It sorta stopped working a few months ago, and nobody really cared enough for it to be a High Priority Urgent Fix. The hard drive started to corrupt, and services went from spotty to unavailable. And stayed that way.

Actually, I think it’s a pretty impressive statement about Institutional Repositories that something that was once trumpeted as The Next Big Thing can be out of action for 9 months without many people even noticing. Relevance of top-down, centrally ordained institutional Repositories?

Personally, I just kept feeding my stuff into del.icio.us, Flickr, and my blog, completely (and blissfully) unaffected by the crumbling of an aging prototype repository.

But, apparently, some people still wanted access, so I spent the day getting my head back into the code (mmm… spaghetti….) and realizing just how much I dislike Java (or, perhaps, all compiled languages). I spent SO much time wasted in compile-recompile-forcecompile-compile-deploy-launch-test-fix-repeat that it was way more frustrating than it needed to be. With an interpreted language, I could be modifying the code on the fly and seeing the changes in realtime. Much better for fixing and debugging stuff.

Anyway, CAREO is back on the air, with its library of 4145 contributed “learning objects” (of which, the vast majority don’t really provide much context for learning, but are rather simple assets or resources to be used in other contexts…

It’s now running on my old dual-800MHz-G4 desktop box, which would sound slow except that CAREO is now running on a box that has more than 4x the horsepower it did before The Fall From Grace. Pretty sure it won’t handle a Slashdotting, or even moderate use. But it should work well enough for people to refer to again.

My first reaction on seeing it again after over a year was “Blech! THIS was the best we could come up with?” – The interface is pretty hideous, especially by “modern” standards. And it’s so un-Web2.0 that it hurts. I did bolt on wiki and discussion features, but that’s what they are – bolted on grift.

Of course, it was pre-Web2.0, so it’s funny how perceptions change with experience.

ps. the CAREO Project Website, which was hosted by Athabasca, is unavailable for completely different reasons (they let the domain lapse and didn’t renew it. doh.)

One of the tasks that’s been on my desk for awhile has been giving some love to CAREO. It sorta stopped working a few months ago, and nobody really cared enough for it to be a High Priority Urgent Fix. The hard drive started to corrupt, and services went from spotty to unavailable. And stayed that way.

Actually, I think it’s a pretty impressive statement about Institutional Repositories that something that was once trumpeted as The Next Big Thing can be out of action for 9 months without many people even noticing. Relevance of top-down, centrally ordained institutional Repositories?

Personally, I just kept feeding my stuff into del.icio.us, Flickr, and my blog, completely (and blissfully) unaffected by the crumbling of an aging prototype repository.

But, apparently, some people still wanted access, so I spent the day getting my head back into the code (mmm… spaghetti….) and realizing just how much I dislike Java (or, perhaps, all compiled languages). I spent SO much time wasted in compile-recompile-forcecompile-compile-deploy-launch-test-fix-repeat that it was way more frustrating than it needed to be. With an interpreted language, I could be modifying the code on the fly and seeing the changes in realtime. Much better for fixing and debugging stuff.

Anyway, CAREO is back on the air, with its library of 4145 contributed “learning objects” (of which, the vast majority don’t really provide much context for learning, but are rather simple assets or resources to be used in other contexts…

It’s now running on my old dual-800MHz-G4 desktop box, which would sound slow except that CAREO is now running on a box that has more than 4x the horsepower it did before The Fall From Grace. Pretty sure it won’t handle a Slashdotting, or even moderate use. But it should work well enough for people to refer to again.

My first reaction on seeing it again after over a year was “Blech! THIS was the best we could come up with?” – The interface is pretty hideous, especially by “modern” standards. And it’s so un-Web2.0 that it hurts. I did bolt on wiki and discussion features, but that’s what they are – bolted on grift.

Of course, it was pre-Web2.0, so it’s funny how perceptions change with experience.

ps. the CAREO Project Website, which was hosted by Athabasca, is unavailable for completely different reasons (they let the domain lapse and didn’t renew it. doh.)

Web 2.0 vs Repositories

Thanks to Scott for linking to this in his del.icious.net linkstream. It’s a nearly-year-old article about implementing a “learning object repository” using the Small Pieces philosophy. For me, the takeaway message was a reinforcement of something I’ve been seeing a lot of lately.

My feeling is that the Capital R “Object” Repositories beloved of systems designers of the old fashioned IMS school are rapidly losing currency in higher education, but – bizarrely – gaining credibility among decision-makers in the schools sector.

It’s amazing just how many questions I’ve been getting about CAREO recently. From all over the place, from various levels of administration.

Just as the main CAREO project website went dark due to lack of provincial support. And the CAREO repository itself is slowly failing while being neglected on life support.

It seems as though we went through a phase where the IMS/Large Tools approach was favoured, and that’s how many of us mocked up the first round of Learning Object Repositories. But – we were a couple of years too early. The whole “Web 2.0” thing wasn’t quite there as a concept yet, otherwise I’m positive that’s the tack we would have taken.

It’d be a shame to have others doomed to repeat our entire process. We tried the Repository approach. It didn’t work too well. Learn from that and start with the Small Pieces Loosely Joined / Web2.0 approach.

Thanks to Scott for linking to this in his del.icious.net linkstream. It’s a nearly-year-old article about implementing a “learning object repository” using the Small Pieces philosophy. For me, the takeaway message was a reinforcement of something I’ve been seeing a lot of lately.

My feeling is that the Capital R “Object” Repositories beloved of systems designers of the old fashioned IMS school are rapidly losing currency in higher education, but – bizarrely – gaining credibility among decision-makers in the schools sector.

It’s amazing just how many questions I’ve been getting about CAREO recently. From all over the place, from various levels of administration.

Just as the main CAREO project website went dark due to lack of provincial support. And the CAREO repository itself is slowly failing while being neglected on life support.

It seems as though we went through a phase where the IMS/Large Tools approach was favoured, and that’s how many of us mocked up the first round of Learning Object Repositories. But – we were a couple of years too early. The whole “Web 2.0” thing wasn’t quite there as a concept yet, otherwise I’m positive that’s the tack we would have taken.

It’d be a shame to have others doomed to repeat our entire process. We tried the Repository approach. It didn’t work too well. Learn from that and start with the Small Pieces Loosely Joined / Web2.0 approach.

Drupal as Learning Object Repository

I was forwarded an email last night by someone asking where they could download a copy of CAREO to use as a national learning object repository (in a nice, tropical country south of here). I’ve been thinking about it since I checked email early this morning. There is no need for CAREO (or its ilk) anymore. Other solutions have evolved and surpassed what we came up with as a prototype Learning Object Repository.

If I was to start an organizational/institutional/regional repository of resources, I’d just use a copy of Drupal.

Yes. Drupal. It provides every feature that CAREO does/did, and many many more that we would have never had time to implement.

You can create custom content types, and any taxonomies you like, so it would be perfectly possible to create a full LOM record as a Drupal node. Or, you could stick with simple nodes and multiple free taxonomies and have a more organic system.

It can handle internal content (uploads of files – even resizing images) as well as external (simple hyperlinks). It can handle access control (either role based, or group based, and I’m working on user-based). Threaded discussions can be tied to any piece of content. Rating systems and voting is supported. Full searchability and browsing is supported out of the box. Multiple themes – users can even select their own themes if needed. Multiple websites on the same instance of the application. LDAP authentication. Nice rich text WYSIWYG editors. RSS feeds all over the place (even podcasting!). Tracking statistics (popular items, etc…). The software scales pretty well, too (handling big sites like The Onion, NASA, SpreadFirefox and many others).
And it’s a widely used, free, open source project that can run on literally any webserver (or desktop box) that can handle PHP and MySQL (and if your server can’t handle that, it’s crap).

So, there it is. Drupal would provide a more robust, flexible, and extensible solution than CAREO could. I might have to look at migrating the data from our instance of CAREO into Drupal…

I’m not the first to realize this, either. The folks at SocialLearning.ca are building what is essentially a learning object repository and community support system. In Drupal.

With that said, if you STILL want a copy of CAREO, the instructions to install it are here. Contact me for a download package, but I won’t be able to provide support.

I was forwarded an email last night by someone asking where they could download a copy of CAREO to use as a national learning object repository (in a nice, tropical country south of here). I’ve been thinking about it since I checked email early this morning. There is no need for CAREO (or its ilk) anymore. Other solutions have evolved and surpassed what we came up with as a prototype Learning Object Repository.

If I was to start an organizational/institutional/regional repository of resources, I’d just use a copy of Drupal.

Yes. Drupal. It provides every feature that CAREO does/did, and many many more that we would have never had time to implement.

You can create custom content types, and any taxonomies you like, so it would be perfectly possible to create a full LOM record as a Drupal node. Or, you could stick with simple nodes and multiple free taxonomies and have a more organic system.

It can handle internal content (uploads of files – even resizing images) as well as external (simple hyperlinks). It can handle access control (either role based, or group based, and I’m working on user-based). Threaded discussions can be tied to any piece of content. Rating systems and voting is supported. Full searchability and browsing is supported out of the box. Multiple themes – users can even select their own themes if needed. Multiple websites on the same instance of the application. LDAP authentication. Nice rich text WYSIWYG editors. RSS feeds all over the place (even podcasting!). Tracking statistics (popular items, etc…). The software scales pretty well, too (handling big sites like The Onion, NASA, SpreadFirefox and many others).
And it’s a widely used, free, open source project that can run on literally any webserver (or desktop box) that can handle PHP and MySQL (and if your server can’t handle that, it’s crap).

So, there it is. Drupal would provide a more robust, flexible, and extensible solution than CAREO could. I might have to look at migrating the data from our instance of CAREO into Drupal…

I’m not the first to realize this, either. The folks at SocialLearning.ca are building what is essentially a learning object repository and community support system. In Drupal.

With that said, if you STILL want a copy of CAREO, the instructions to install it are here. Contact me for a download package, but I won’t be able to provide support.

(Finally) Removed Test Items from CAREO

I finally got around to removing some of the krufty old test records from CAREO. I did a few searches, and came up with a list of 76 records that shouldn’t have been left in the “live” CAREO database – they got added during various stages of software building/testing, by various developers.

Searches should turn up fewer “testing” results, and the “Newest Objects” isn’t polluted by crap added by folks just kicking the tires…

So, now our usual test search of “earth” only has 14 results…

Note to self: make sure all develoeprs are using either private or staging databases, rather than the Real Deal…

I finally got around to removing some of the krufty old test records from CAREO. I did a few searches, and came up with a list of 76 records that shouldn’t have been left in the “live” CAREO database – they got added during various stages of software building/testing, by various developers.

Searches should turn up fewer “testing” results, and the “Newest Objects” isn’t polluted by crap added by folks just kicking the tires…

So, now our usual test search of “earth” only has 14 results…

Note to self: make sure all develoeprs are using either private or staging databases, rather than the Real Deal…

Experimental Wiki Integration With CAREO

I’ve just added some potentially cool functionality to CAREO. Every object in the repository now has a link to its own Wiki page, where a freeform discussion or whatever can take place.

I’m not sure if people would actually use it. I think it’s different enough from a traditional threaded discussion to warrant inclusion of both solutions.

In my head, I’m picturing the Wiki pages becoming more teaching-oriented than a threaded discussion could. Something more like the Wikipedia.

The cool thing about the wiki pages (apart from being more freeform) is the automatic cross-linking of pages. This could have the potential to make a richly networked set of resources wrapped around learning resources.

As an aside, I’m using phpWiki to provide the wiki functionality. I find it more full-featured than UseMod, and it supports creating wiki pages with full URLs as page names (that’s all this feature is based on).

I’ve just added some potentially cool functionality to CAREO. Every object in the repository now has a link to its own Wiki page, where a freeform discussion or whatever can take place.

I’m not sure if people would actually use it. I think it’s different enough from a traditional threaded discussion to warrant inclusion of both solutions.

In my head, I’m picturing the Wiki pages becoming more teaching-oriented than a threaded discussion could. Something more like the Wikipedia.

The cool thing about the wiki pages (apart from being more freeform) is the automatic cross-linking of pages. This could have the potential to make a richly networked set of resources wrapped around learning resources.

As an aside, I’m using phpWiki to provide the wiki functionality. I find it more full-featured than UseMod, and it supports creating wiki pages with full URLs as page names (that’s all this feature is based on).

Wiki Format Text Display Enabled in CAREO

I just threw the switch to enable Wiki Formatted Text in CAREO, specifically in learning resource descriptions (any time you see a resource listed – search results, main page, whatever), and discussion post entries. This will let folks just go ahead and enter plain text, and CAREO will try to Do The Right Thing to display it as nice HTML.

Something like this discussion on “Earth At Night” looks a wee bit better now that it’s not all munged into one paragraph per entry, or faking formatting using the icky <pre> tag…

I’m using the RADEOX RE java rendering engine. Looks like it’s doing a decent job, but it appears to require double carriage returns before it will paragraphize some text, whereas most folks will use a single return to break up a long block of text. I’ll look into changing this behaviour.

I just threw the switch to enable Wiki Formatted Text in CAREO, specifically in learning resource descriptions (any time you see a resource listed – search results, main page, whatever), and discussion post entries. This will let folks just go ahead and enter plain text, and CAREO will try to Do The Right Thing to display it as nice HTML.

Something like this discussion on “Earth At Night” looks a wee bit better now that it’s not all munged into one paragraph per entry, or faking formatting using the icky <pre> tag…

I’m using the RADEOX RE java rendering engine. Looks like it’s doing a decent job, but it appears to require double carriage returns before it will paragraphize some text, whereas most folks will use a single return to break up a long block of text. I’ll look into changing this behaviour.