BuddyPress, Bebop and building the staff directory

The Architecture

This blog post discusses the overall ouput of the Bebop project, referring back to the diagram below, which we included in our initial funding bid. Click on it to have a good look.

You might also want to open a new tab on your browser and take a look at the reference sites, too. Here’s a link to the Staff Directory home page, and here’s a link to my staff profile. You could also try searching for something, too, such as ‘prof’ or ‘Library’ or ‘science’, to see how it works.

The Directory began as a lunch-time project of Nick Jackson, who wanted to build a better phone number search tool than was then currently available. A year or so later, and it’s been adopted as the official directory of staff profiles at the university and is linked to from the lincoln.ac.uk home page.

The Directory is published to the web using the HTML5/CSS3 Common Web Design presentation framework that Alex Bilbie has developed. Over time, the CWD has integrated more and more features from other common HTML5 frameworks, so that now CWD v4 is mostly a branded Twitter Bootstrap framework that is distributed to multiple sites via Rackspace’s Content Delivery Network. Changes to the CWD are then made immediatley available to all sites to which it is served, which means that changes like our recent switch from a Minerva logo to the University Crest, can be rolled out easily.

As you can see from the diagram, the database behind the staff directory is Nucleus, our warehouse of data for application development. Nucleus is a NoSQL MongoDB database that holds a variety of non-sensitive data collections, such as basic information about people, bibliographic data, geo data about our campus buildings, curriculum data, and timetable data.

Working with BuddyPress (pre-Bebop)

To develop a phone book into a tool for managing and publishing staff profiles, we decided to use BuddyPress as an additional source of data because it already provides a convenient way for a user to update and maintain their own profile information. It is a social network afterall and people are at the heart of social networks. We’ve been running BuddyPress at Lincoln since 2009 and because all staff (and students) have access to a BuddyPress profile (here’s my example), we felt that it was a tool already available to us and that by requiring staff to use BuddyPress to maintain their profiles, they would also be exposed to the WordPress blogging platform and therefore social media in general.

BuddyPress has a fairly rudimentary form builder for profiles and having decided what information we wanted staff to fill out, we added the extra fields to the BuddyPress form. In addition to pulling in data from BuddyPress, we also pull in data via RSS from our ePrints institutional repository, so that under the Research tab you see each academic staff member’s research outputs. If they have not deposited anything in the respository (i.e. they are non-academic professional staff), the repository section of the profile won’t show at all. That is, as information from BuddyPress and ePrints is provided, the person’s profile visibly grows with the addition of new sections.

We have also experimented with displaying blog posts which the individual has written using blogs.lincoln.ac.uk. More or less any information can be added to the Directory as and when we have it. We just ‘plug it in’ to the Staff Directory block in the diagram above.

Working with BuddyPress v2 (post-Bebop)

All of this was in place prior to the Bebop project. Over the last six months Bebop has made two significant contributions to the Staff Directory. Dale has written a new profile editor for BuddyPress which provides a much more structured form for staff to use when adding information about themselves. We found that with free text fields, different people offered similar information in quite different ways and this led to a number of presentation errors when pulled into the Directory from BuddyPress. The code for our new BuddyPress profile editor is on Github and may prove a useful starting point for other organisations wishing to use BuddyPress in this way. Note that it’s not as straightforward as installing and activating the plugin. It requires additional development dependent on your specific use case.

Most notably though, the Bebop plugin has provided a way for staff to publish a curated list of their teaching resources, which can be displayed on their official Staff Directory profile. As you can see in the screenshots below, we’ve added a new ‘Teaching’ tab to the Directory and moved any ‘Teaching Resources’ from ePrints into this tab, along with any items from Bebop, such as slides on Slideshare, images on Flickr, videos on YouTube, etc. Bebop also harvests RSS feeds, so staff can create a university WordPress blog to publish their teaching resources if they wish. WordPress offers a very flexible way of publishing OERs, as we found during our ChemistryFM project. Here’s a screenshot of the Bebop plugin being used on a BuddyPress profile. The information curated here is automatically pulled into the Staff Directory profile.

A video tutorial posted on YouTube
A video tutorial posted on YouTube, displayed in my BuddyPress profile.

The images below shows a staff profile with the new ‘Teaching’ tab, where resources from Bebop will be displayed. The second screenshot, shows a teaching resource harvested by Bebop and originating from ePrints. The third image shows resources originating in Slideshare, but again, being fed to the Directory via Bebop. We still need to do work on styling the Slideshare links, so that titles are hyperlinked, rather than the raw hyperlink displaying.

Profile Home Page
A staff profile, showing the new ‘Teaching’ tab.
Staff profile with RSS import
A staff profile, showing (via RSS) a teaching resource held in our Institutional Repository.
Staff profile, showing Slideshare resources
A staff profile, showing resources held on Slideshare.

These changes to our Staff Directory have not gone live yet… but they will do soon, once we’ve migrated the existing profile data over to the new BuddyPress profiles – a task which requires a certain amount of data cleaning first. Once the new  profile editor is in use, the more structured data that staff enter will be checked against any existing data we hold and used to improve that data thereby helping to validate information which we know may not always be accurate. By giving staff a greater opportunity to directly maintain their own staff profile, we are assuming that the information will be kept more up-to-date.

In Summary…

The Bebop project has further developed our initial use of BuddyPress to provide a flexible way for staff to update and maintain their professional profiles. By processing data from a number of sources, we have re-presented it in a way that helps improve the corporate website, helps validate and update existing data about staff, and mandates staff to use a social networking tool in order to maintain their public, professional web presence. Furthermore, the Bebop plugin, provides a way for staff to link to teaching resources which they are publishing on a number of platforms and aggregate them into their staff profile, alongside information about their research and other professional responsibilities. The work of teaching is therefore given more equal standing alongside the work of research and ‘teaching in public‘ through the publication of OERs is promoted and better supported at the University of Lincoln.

Commons In A Box

One of our original project aims was that the Bebop PuddyPress plugin would be part of the CUNY Commons In A Box project, a turnkey version of CUNY’s Academic Commons. Yesterday saw the launch of Commons In A Box and I’m pleased to say that Bebop is included as one of the ‘a la carte’ plugin options.

Commons In A Box (CBOX) is a free software project aimed at turning the infrastructure that successfully powers the CUNY Academic Commons into a free, distributable, easy-to-install package. Commons In A Box is a project of the City University of New York and the Graduate Center, CUNY and is made possible by a generous grant from the Alfred P. Sloan Foundation.

CBOX takes the complexity out of creating a Commons site, helping organizations create a space where their members can discuss issues, collaborate on projects, and share their work. CBOX also provides:

  • Out-of-the-box functionality with an intuitive set-up that guides site administrators through each step of installation.
  • A powerful, responsive, highly customizable theme developed for community engagement, based on PressCrew’s Infinity Theming Engine.
  • Responsive design for easy viewing on many devices, including tablets and smartphones.
  • Collaborative document creation and file sharing.
  • Reply-By-Email functionality for quick, on-the-go communication.
  • Compatibility with many other WordPress and BuddyPress themes and plug-ins.
  • Expansive wiki options.

CBOX will be useful to any organization that is looking for a shared space in which to build an engaged community of users and developers.

Congratulations to Matt Gold, Boone Gorges and everyone else involved in the Commons In A Box project!

The Bebop plugin and documentation

The main public outcome of the Bebop project is the BuddyPress plugin, which allows a BuddyPress user to import resources (slides, images, video, etc.) hosted on third-party websites (Slideshare, Flickr, YouTube, etc.). The plugin has two homes:

If you run a WordPress/BuddyPress site, you can install Bebop from the Plugins panel in your site Administration area. Bebop works on both standalone and network/multisite installs of WordPress. Of course, you must have BuddyPress installed on the site, too.

A screenshot from the Bebop documentation
A screenshot from the Bebop documentation

Documentation on how to use Bebop is provided on our Github site, alongside the code. Documentation is provided for the following people:

General users

Site Administrators


Developers may be interested in extending Bebop as a flexible, general purpose social media aggregator. Documentation is provided on how to create new Bebop extensions for additional resource providers.

If you find a problem with the Bebop plugin and documentation, please tell us via the Github issue tracker. If you wish to discuss Bebop more generally, please use the WordPress support forum for the plugin.

What benefits and impact has/will Bebop have?

  • Bebop is having institution-wide impact due to the work we have contributed to the development of our Staff Directory. We have documented this in more detail in a separate blog post and also published the code for our custom BuddyPress profile editor.
  • The Bebop plugin has been publicly released on wordpress.org and has so far been downloaded around 450 times. Furthermore, we are waiting for confirmation that the Bebop plugin will be recommended by the CUNY Commons In A Box project. The plugin is also being used by a new Swiss OER portal, where Dale, the Developer of the Bebop plugin has written a blog post discussing the Bebop project.
  • Bebop provided an opportunity for staff development, providing a focused project through which new staff could learn WordPress development and other associated skills. This is been discussed in a separate blog post. The mentoring opportunity afforded by the project has been especially valuable. Now at the end of the Bebop project, these staff have been seconded to work on our HEA-funded project to embed the practice of Open Education across the university. They will be developing a showcase and portal for OER at Lincoln, as well as implementing a dedicated ePrints OER repository for Lincoln.
  • By mandating the use of BuddyPress for updating and maintaining staff profiles at the University of Lincoln, we expect more staff to become aware of the WordPress platform in general and adopt it for a variety of web publishing requirements. Over 400 staff have already used BuddyPress to update their professional profile and we will be supporting this initiative through the provision of staff workshops starting in November. In effect, we expect Bebop to contribute towards promoting and supporting the digital literacy of our staff.



What lessons have we learned?

Bebop has gone remarkably smoothly – not all projects do – and I’m pleased to say that we’ve achieved everything we set out to do. We did learn things along the way and things we already knew were reconfirmed:

  • WordPress/BuddyPress is a viable and versatile platform for managing staff profiles at a university and brings the benefits of mandating staff to engage with a popular social media platform if they are to update and maintain their professional profile.
  • WordPress has a very active and open community of users and developers and consequently values contributions from HEIs. It is a versatile technology that can bootstrap different types of projects where content management is key. We knew this before the project started, but through releasing a plugin and responding to its use by different people, the benefits of contributing to such a community have been reaffirmed. For developers new to writing open source software, WordPress offers a mature community with a very low barrier-to-entry.
  • When working with third-party services, each API is different and takes time to learn. Maintaining compatibility with changes to third-party APIs is a problem for the sustainability of the software. It’s important that there is institutional value to integrating such services with your software so that there is the justification for maintaining compatibility.
  • Identify an expert partner and cost them into your project for evaluation purposes. It doesn’t matter where in the world they live. Expert code review improves staff skills and the quality of code, benefitting all involved.
  • OERs are teaching and learning materials that are  licensed for re-use. Often, the licensing information is not provided as part of the API or syndication feed. Bebop overcomes this by providing a curatorial tool that allow the user to select specific resources for re-publication. There is less ambiguity about whether a resource is avaialable for re-use if the user has selected to include it in their profile.
  • There are a limited number of platforms that are widely used for publishing OERs in the UK. We were surprised that Jorum, the main national repository for OERs, does not yet have a method for extracting information about the resources deposited by a specific individual. The benefits of publishing OERs have often been discussed in terms of institutional benefits, but in order to provide individual benefits and therefore incentives, work on user profiles and OER use seems key.

What has the Bebop project delivered?

At the beginning of the project, we set out to deliver the following:

  • Documented Use Case of BuddyPress in an educational environment, including Lessons Learned and a technical implementation plan.
  • Documented development of the BuddyPress plugin(s) to integrate third-party APIs into a BuddyPress profile.
  • A BuddyPress theme which is compatible with the above plugin(s).
  • Documentation on the implementation of OAuth at the University of Lincoln. cf. our open source OAuth Server (https://github.com/alexbilbie/CodeIgniter-OAuth-2.0-Server and http://sso.lincoln.ac.uk)
  • Technical design documentation for the aggregation of staff profile data at Lincoln, which demonstrates our use of MongoDB for data warehousing of people data from disparate systems.

Let’s take these one by one…

  • The BuddyPress use case is written up here and in the early days of introducing BuddyPress at Lincoln, Joss blogged about our use of BuddyPress over on his personal blog.
  • Throughout the project, Dale has been blogging the development of the BuddyPress plugin. The plugin was publicly released at the end of August and has been downloaded around 450 times by the end of the project. Documentation has been provided for both users and developers. We have also released the code to our BuddyPress profile editor, which provides other institutions with a starting point to develop their own bespoke BuddyPress profile editor.
  • Bebop was developed so that it will work with any BuddyPress theme that is based on the default BP theme. At Lincoln, we have our own custom theme for BuddyPress, which is a ‘child theme’ of the default theme and it works well. So, we have not delivered a compatible theme for BuddyPress, but rather we have ensured widespread compatibility of our plugin with existing themes.
  • Since the Bebop project began, we have also been funded by JISC to do work around the use of OAuth for SSO. You can expect to find much more information on OAuth on the Linkey project website over the next few months. The use of OAuth in the Bebop project is confined to the Twitter and Slideshare extensions, negotiating directly with their authenticated APIs. In this way, the Bebop plugin has no dependency on Lincoln’s Single Sign-On service.
  • Perhaps not a deliverable, but certainly an outcome: One of the reasons why funded projects are important to us is they they also provide us with the time and capacity for specific areas of staff development and the Bebop project is a good example of this. Both Dale and Dave were new Developers to ICT when the Bebop project began, and through working on the project they have had to learn WordPress/BuddyPress development (which means our WP platform is better supported), developing with our Common Web Design presentation framework (which means they are able to contribute to a number of services, such as the Gateway and Directory), and consequently have been seconded to our HEA-funded OER project to implement a (WordPress) portal for OER at Lincoln and a dedicated (ePrints) repository for OERs.
  • We have documented our building of the university’s staff directory in another blog post. Bebop has furthered this development by enhancing it with teaching resources that are aggregated via the Bebop plugin and then re-published via RSS to the Staff Directory.