Dev8ed – Birmingham, 29th – 30th of May 2012

Having finishing my last exam on Monday, I made my way down to Birmingham for the Dev8ed Conference, with two of my colleagues, Alex Bilbie and Jamie Mahoney from the University of Lincoln. Jamie is working on an ongoing project called ON Course, while Alex is about to start the new Linkey project, which involves tying OAuth to other authentication protocols, such as SAML. All of these projects are funded by JISC.

Dev8ed is a JISC funded event which involved people from a variety of JISC projects. During the two days, there was a selection of workshops and lightening talks on subjects ranging from the publishing of OER’s to the use of Personal Learning Envionments (PLE’s). Alex even presented his traditional and famous HTML5 talk.

I went to Dev8ed with two main objectives. The first objective was to attend all the workshops on the learning registry/JORUM and PublishOER, As well as have some developer time which I could devote to installing the LifeStream and BuddyStream WordPress plugins. This would give me the opportunity to evaluate how they are used and how they work, in order to identify if and how they can be used in the bebop project.

Workshops

The first workshop I attended was based around the JORUM project. This workshop was interesting because it was based upon one of the OER’s providers that are of interest to the bebop project. The workshop focussed mostly on how the JORUM project was created, and how it can be useful to other projects in the future. We hope to utilise JORUM as an OER provider, and will feed resulting OER results into our university BuddyPress profiles.

I also attended a workshop based around the publishOER project, which opened my mind as to how OER’s can be published and shared. While this has no direct link to the bebop project, it was still a very interesting workshop which allowed me to understand some of the factors involved with the publication of OER’s.

Alex Bilbie presented the key new features of HTML5 and CSS3, such as new tags, form elements, providing brief examples of their use. These new standards will be utilised in bebop where necessary to create a more semantically rich plugin.

Development

The second objective was to install the LifeStream and BuddyStream plugins onto the installation of WordPress I created in my previous blog post. We had previously identified the LifeStream and BuddyStream plugins as potentially useful for the bebop project, so I wanted to fully evaluate how each of these plugins are used to determine how i might be able to use parts of them in this project.

LifeStream

Lifestream is a plugin which pulls RSS feeds from multiple sources together, and places them into the WordPress activity stream. The RSS feeds are configured in the admin panel, and hence are more to do with the owner of the blog than anything else. This means that individual user RSS feeds cannot be imported into WordPress, only the generic feeds for the blog owner can be utilised. The bebop plugin which we will be developing over the coming weeks/months will need RSS feeds for multiple users, and hence the LifeStream plugin isn’t really what we are looking for in terms of usability. However, there is nothing to stop us from creating a plugin which utilises RSS feeds based which can be used by individual users. If I am honest, the LifeStream file-system is also rather complicated and bloated for what is a pretty simple task.

BuddyStream

Unlike LifeStream, BuddyStream is integrated into BuddyPress. BuddyStream also utilised data API’s to provide user specific content feeds, powered by a CRON script. This allows individual users to pull data in from other sources such as Twitter. While social networking is not in the scope of bebop, BuddyStream provides a structure which is exactly what we are looking to do with bebop. The only difference is that instead of pulling in social networking content, we will be pulling in user specific OER content to enrich our BuddyPress profiles. We will therefore use data from both RSS and API sources for the bebop plugin from as many OER providers as we can.

The evaluation of these plugins has provided me with a good idea of how I can structure the bebop plugin and what features it should have. The next stage of the project is to set up the development environment, which will take place next week. The development environment will use a set of tools established by the LNCD department, including the Jenkins continuous integration server and PivitalTracker.

More to follow in the coming weeks.

Beginning with WordPress and BuddyPress

The fundamental outcome of this project is to design and build a WordPress/BuddyPress plugin which ‘consumes’ OER’s from 3rd party content providers. To accomplish this the developers should have an understanding of these platforms, and how they can be extended and modified. As a first time user of WordPress and BuddyPress, I needed to learn how to use them, and how to develop on them. This was originally a daunting challenge. Fortunately, I am set next to Alex Bilbie, who I can learn from, as he is already experienced in WordPress development.

I began by downloading WordPress and BuddyPress, and spent several hours rummaging through the filesystems to understand how they are structured, and what each file does. My first impressions were that both WordPress and BuddyPress seemed to be very large and complex, with some files containing just 20 lines of code, while other files contain 15,000 lines of code (the WordPress class-simplepie.php for example). However, tracing through each file and seeing how they link together is one of the best ways for me to learn, and I picked up the structure pretty quickly.

I then installed WordPress and BuddyPress onto my personal web domain, which went smoothly. I then decided to research the plugin creation process, which led to me developing my own simple (and functionally useless!) plugin. The plugin I created is  much a “Hello World!” style plugin, simply outputting text to the WordPress header element. I developed this to use the WordPress database, saving a random phrase to the ‘wp_options’ table, which is then retrieved and outputted to the web browser when the user accesses the blog main page. For a working example, see dalemckeown.co.uk/bebop/. The black element at the top of the page labelled “Bebop Test Plugin” shows the plugin working. I then implemented some admin functionality, adding an item to the “Settings” tab in the WordPress admin section, enabling the saved phrase to be changed easily.

While I am yet to produce anything of real value for this project, I believe that the research I have performed will be vital (we all have to start somewhere, right?). However, I now feel comfortable using and developing on the WordPress and BuddyPress platforms. We can now concentrate on defining what our Bebop plugin is going to include, and what are the most useful OER hosting platforms to incorporate into our BuddyPress profiles. Joss’ last post, regarding this matter, looked into the RSS endpoints for each potential OER hosting platform. Our next task is to select the relevant OER hosting platforms, so we can begin development.

RSS/Atom endpoints for user profiles on OER hosting sites

While Developers, Dale and Dave, are finishing off their third-year dissertations, I’ve been scouring potential OER services for user profile RSS and/or Atom endpoints. As Boone suggested in a recent comment, dealing with feeds can be a lot less hassle to maintain that writing a BuddyPress plugin that interacts at the API-level of multiple services.

Martin Hawksey at JISC CETIS provided this spreadsheet which pulls together information from PROD about the technologies that ukoer projects have identified they are using. There is also a useful summary of ‘ukoer sources‘. Taking the most popular 50 technologies in the PROD spreadsheet, I narrowed it down to the following ‘hosting’ platforms for OERs. Example URLs for user feeds are also given, where I could find them. It’s not always easy and I don’t have access to all platforms. If you can fill in the gaps, please leave a comment. I’ll update this post accordingly. Remember, I’m looking for feeds that record activity of individual users, ideally linking to resources they have uploaded to the/a hosting service.

Where are the user profile feeds?

  1. Moodle. Feed: ???
  2. YouTube. Feed: http://gdata.youtube.com/feeds/base/users/user_id/uploads
  3. WordPress. Feed: http://joss.blogs.lincoln.ac.uk/author/user_id/feed
  4. Slideshare. Feed: http://slideshare.net/rss/user/user_id
  5. Flickr. Feed: http://api.flickr.com/services/feeds/photos_public.gne?id=user_id&lang=en-us&format=rss_200
  6. Xerte. Feed: ??? Does it include user profiles?
  7. Facebook. Feed: ???
  8. Blackboard. Feed: ???
  9. Drupal. Feed: ??? Possibly dependent on use.
  10. Sharepoint. Feed: ??? Not version 2003, which I was able to test.
  11. Confluence. Feed: None that I could find.
  12. Vimeo. Feed: http://vimeo.com/user_id/videos/rss
  13. Mahara. Feed: None.
  14. iTunesU. Feed: None.
  15. Google docs. Feed: None.
  16. EPrints. Feed: http://eprints.lincoln.ac.uk/cgi/search/advanced?screen=Public%3A%3AEPrintSearch&_action_search=Search&_fulltext__merge=ALL&_fulltext_=&title_merge=ALL&title=&documents.title_merge=ALL&documents.title=&creators_name_merge=ALL&creators_name=&creators_id_merge=ALL&creators_id=user_id&abstract_merge=ALL&abstract=&date=&documents.description_merge=ALL&documents.description=&keywords_merge=ALL&keywords=&subjects_merge=ALL&divisions_merge=ALL&editors_name_merge=ALL&editors_name=&refereed=EITHER&publication_merge=ALL&publication=&satisfyall=ALL&order=-date%2Fcreators_name%2Ftitle
  17. webCT. Feed: ???
  18. DSpace. Feed: https://www.dspace.university.ac.uk/open-search/?scope=/&rpp=10&sort_by=0&order=DESC&query=author:%22LASTNAME,%20FIRSTNAME%22&format=rss
  19. Pebblepad. Feed: ??
  20. Joomla. Feed: ??
  21. Cloudworks. Feed: http://cloudworks.ac.uk/event/user_rss/user_id
  22. OpenJorum. Feed: Jorum is a DSpace repository but doesn’t seem to use the URL syntax I’ve been given above for DSpace.
  23. Ning. Feed: http://ning_address.com/activity/log/list?fmt=rss&screenName=user_id

But are they really OER platforms?

Personally, I have two criteria for whether the platform is suitable for hosting OERs:

  1. Can other people discover your resource on the World Wide Web? If it’s on an Intranet or walled garden that blocks search engines, it’s not an OER. Discovery is not the same as download either. I think it can still be an OER if it is discoverable but you charge for download and it is appropriately licensed for re-use, modification and re-distribution. It’s not really in the spirit of openness, but as copyright owner, you could try charging for initial access to the resource. Good luck to you!
  2. Can the resource be openly licensed? For the resource to be an OER, it must have an open license (e.g. Creative Commons) that permits re-use, modification and re-distribution. The license can be embedded in the resource, (e.g. a PPT slide that has a CC license logo on the first slide), but a platform suited to hosting OERs should allow you to display a license next to the resource and, ideally, include that license in the metadata of the resource.

So based on those two criteria (discovery and licensing) , which hosting services/platforms are ‘OER services and platforms’?

My list is:

  1. YouTube
  2. WordPress*
  3. Slideshare
  4. Flickr*
  5. Vimeo*
  6. EPrints*
  7. Jorum/DSpace
  8. Joomla
  9. Drupal
  10. Cloudworks*
  11. Ning*

The asterisk refer to what I shall call ‘attractive feeds’. That is, easy to discover and contain links to resources which the user has uploaded to the hosting platform/service. These are the kinds of feeds we’re interested in for the bebop project.