Bebop in a nutshell

Bebop is developing BuddyPress as an institutional academic profile management tool which collects and displays a person’s Open Educational Resources.

The project has two parts: 1) We are developing BuddyPress to consume OERs using third-party feeds and APIs into academics’ profiles and, 2) investigating the possibility of BuddyPress becoming an application which produces data for re-publishing on other institutional websites and to third-party web services.

The main outcome of this work will be a plugin or set of plugins that can be used with BuddyPress to extend an individual’s profile to re-present resources that are held on disparate websites such as YouTube, Slideshare, Jorum, etc. The plugins will be open source and made available via the official WordPress.org plugin repository.

Finally, working with the CUNY Commons In A Box project, we will extend our user testing to that related project and seek advice from their staff, who are core contributors to BuddyPress. It is our intention that the work of this project, complements the overall CUNY project.

 

 

Flow diagram

 

 

 

 

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.

Related BuddyPress plugins

One of the comments that came back from the panel that marked the Bebop project bid was that we should make sure there isn’t already a plugin or method of aggregating resources from third-party websites to BuddyPress. Fair comment. It was the first thing I did when I started thinking about submitting the bid to JISC. I collected links to related plugins but there was nothing I could find that did the job.

There have been some efforts at using BuddyPress for teaching and learning, as can be seen by the Courseware plugin and there are efforts to integrate specific third-party services such as Twitter, Google Plus and Mendeley, and there’s also a plugin for badging achievements, which I can see being used (or modified for use) in an educational context. There’s a plugin that allows you to enrich your activity updates with media that is uploaded locally. There’s a plugin that we already use at Lincoln, that allows you to pull an RSS feed into your group activity stream, (and another one here) as well as various uses of OAuth with BuddyPress and WordPress. BuddyPress is also being used as a collaborative project management tool and a collaborative document editing tool.

Clearly other developers are thinking along the lines of what we’ve proposed for Bebop, which is how BuddyPress can be used in an educational context and reflect a user’s activity external to the platform, but as far as I can see, there isn’t a plugin that allows a user to  easily add their username from YouTube, Jorum or Slideshare, for example, and have those resources aggregated and filtered nicely into their academic profile. The closest there is to that is this RSS aggregation plugin, which is designed to pull in external blog posts. It’s a start though and something we should look at early on.

The Bebop project aims to do more than this though by attempting to pull from the APIs of third-party services and organise the resources into collections on a user’s profile, as well as publish them to their activity stream. It involves more than simply pulling from RSS feeds (although we’ll include this, too), and once the data is being pulled in, we’ll provide a way for it to be pulled out again and re-purposed, assuming the T&C allow us to. Taking Slideshare as an example, could we re-use the data we get out of Slideshare within our organisation?

YOU SHALL NOT: sell, lease, share, transfer, or sublicense the SlideShare APIs or access or access codes thereto or derive income from the use or provision of the SlideShare APIs, whether for direct commercial or monetary gain or otherwise, without SlideShare’s prior, express, written permission;

It’s the word ‘transfer’ that worries me…. Jorum devs, please ensure that the T&C for your forthcoming APIs clearly state that the data via the API carries the same license as the resource itself. (We’ll post more about the T&C of APIs at a later date. If you have any advice, please do tell us).

Ideally, we’d like to be able to warehouse data about resources staff have published elsewhere on the web and have that data accessible over APIs on data.lincoln.ac.uk, like we’re doing with more and more of our data, so that we can build stuff with it. Getting data into BuddyPress is just one part of our project, but showing how the data can be made available for re-use is, arguably, the more interesting aspect.

Where are the OERs?

Here’s a quick poll. Our project will develop a plugin for BuddyPress that allows academics to connect their BuddyPress profile to third-party websites where they host their OERs and display those resources on their BuddyPress profile. Sites like YouTube, Scribd, Slideshare and Jorum seem like popular choices. There are a lot of these services and we need to prioritise which ones we work on first. Help us decide by completing this short poll.


Feel free to ask questions or leave comments below. Thank you!