Category Archives: Technical

PHP API for FE Skills Window released

Why an API – The problem

In developing the FE Skills Window, an application that will offer access to a range of Jisc resources for Further Education, we were faced with some interesting problems. We needed to come up with a unified way of accessing disparate resources, or the application would have to “talk” a series of dialects, one for each service.

We decided that the aggregation of the various resources would be achieved by utilising Elastic Search. This meant that talking one “dialect” for all content services was essential.

In addition to technical uniformity, an extra challenge had to be met; the curriculum and subject area mappings of different kinds of services. Again the ideal would be for all resources to expose the same kind of curriculum and subject area related properties in consistent way.

The approach

At the time only Jorum provided a REST API, whereas Hairdressing Training didn’t, and so we decided that an API to cover these two services would be a good starting point. We felt that a uniform PHP API would allow us to quickly develop the FE Skills Window application, as it will consume it whilst at the same time allow the Elastic Search indexing to take place, without it “knowing” the difference between the two services.

An extra benefit of this approach is that, being open source and available on open source code repositories, it could potentially encourage 3rd party developers to explore and use the various Jisc resources. We are hoping that the features of the implementation and its detailed documentation will increase its chances of adoption by other developers.

Implementation

Warning: this is where we get into further technical detail, so read on if you need to understand how we are going to implement the PHP API!

The PHP API for Jorum and Hairdressers Training was created with the following goals.

  • To provide a modern, Object Oriented PHP API for accessing the two resources.
  • To be easy to install and use.
  • To abstract and unify access to the two different resources (more to come).
  • To become a building block for the release of additional APIs such as Mediahub and eBooks.
  • To allow Elastic Search indexing of our resources through a unified interface.

In order to achieve those goals the two APIs were developed following the latest PHP proposed or accepted standards, specifically PSR-0 (autoloading) and PSR-1 (coding standards).  Additionally, the API is implemented as a Composer downloadable package. That means that it can be dropped in any project that follows namespaces and uses Composer.

The coding standards compliance and extensive use of “docblocks” mean that when using an IDE that “talks” PHP you get auto-completion for the various classes and methods, as well as code hints. The idea is that one shouldn’t have to know the whole API by heart and in advance in order to use it. The API documentation is available on Github and can be also viewed online.

Image1a

To make it easy to install and use the code is organised as a Composer package and hosted on Github. It means that installing it simply involves adding a few lines in a configuration file and running composer install or update.

Composer

The composer.json file for this install was as follows:

{
"repositories": [
  {
    "url": "https://github.com/pdiveris/mimas.git",
    "type": "git"
  }
],
"require": {
  "pdiveris/mimas": "0.9.*"
 },
"psr-0": {
    "MIMAS": "app/lib"
    }
  }
}

Currently the API uses some facilities provided by Symfony2 and Laravel, however we are working fast to remove these two dependencies, as they are superficial. This is planned for release 1.0 which is coming soon.

By implementing the Jorum API in PHP, that is reading it, creating native PHP objects and then outputting in various formats, we are in a position to adjust the output or add properties without changes in the core API. We also have the added flexibility of been able to use caching systems like REDIS, should performance become an issue. With Hairdressers training, which is based on Drupal, the advantage is that it now “talks API” in a unified way. Extra fields for Curriculum Mapping and Subject Areas were added using the build in Drupal functionality and exposed by the API just as they appear in Jorum.  We feel that this approach will allow us to provide a single interface, through a uniform access point, for more resources in the future. Finally, the API is designed to support versioning.

Image3b

The image above show Hairdressers Training Collections – a concept that doesn’t exist in the actual Drupal application.

Resources

Making Progress – an update on the project

 If you’re reading this blog then you probably familiar with our project, as a reminder the vision is to provide teaching practitioners in the FE Skills sector with simple, flexible and easy to navigate routes to Jisc digital content that are directly relevant to their curriculum, qualifications and working practices.

Progress builling a bridge

Making progress! Photo attribution: Dave Bushe at http://flickr.com/photos/64465535@N00/2516387700, shared under (CC BY-SA 2.0).

A lot has been happening so I thought I’d put together a progress update on some of the key areas.

Firstly the content audit – the overarching Purpose of this work is to undertake an audit of existing digital content from across Jisc that supports teaching practitioners in the FE Skills community. The audit is progressing well, a blog post with more details (including the aims and purpose of the audit) is available here: feskillswindow.jiscinvolve.org/wp/jisc-fe-skills-window-digital-content-audit.

Gathering user requirements – we have three main pieces of work going on in this area, market research, a survey and a practitioners group. The market research is being led by the marketing team here at Mimas, it will include a large piece of work to interview practitioners which will be run by an external research company. This larger piece of work will focus on understanding the needs and requirements of FE Skills educators in relation to the use of digital resources.

Secondly we’re looking for people to be part of our practitioners group. The point of this group is primarily to provide feedback throughout this process and to act as advocates for the project. For example we have just Amazon Gift Certificatereleased a survey (you could win a £25 Amazon voucher) and we’ll be asking the practitioners group to help us get respondents, we’ll also use them for activities like beta testing. Without this group of people we’d find it very hard to undertake iterate development, particularly in terms of the technical solution. More information on how to get involved is available here: feskillswindow.jiscinvolve.org/wp/would-you-like-to-help-us-test-stuff. Mark (our Community Engagement Officer) has also been out and about running workshops, collecting requirements and raising awareness of Jisc services suitable for the FE Skills sector.

Meanwhile our technical developers have been working on the infrastructure that will be needed to aggregate/cross search the Jisc services and their content. They have started work to implement a system to extract the metadata from Jorum and Hairdressing Training (HT) (utilising the Jorum API and the newly created HT API). We have also been working on a way to search across multiple qualification and curriculum schemas, so work has also been going on to map these across the UK. This is where it starts to get very technical – if you do want to know more please get in touch: https://feskillswindow.jiscinvolve.org/wp/contact-us.

service-logos-long-indiv bannerThe project aims to map existing Jisc digital content, for learning and teaching, to the curriculum. To enable this to happen a great deal of work is going on technically and around the mapping of qualifications and curriculum. The big question is how are we going to physically get the content mapped? Initially we thought we would find an organisation to do this, one with links to practitioners, but a number of our contacts have suggested using a crowdsourcing methodology. Crowdsourcing is “the process of obtaining needed services, ideas, or content by soliciting contributions from a large group of people”, I took this quote from Wikipedia, probably the best well know example of a successful crowdsourcing project. It is extremely important with crowdsourcing to understand your community and their motivations, how do we motivate busy teachers to help us (for free) to map content? The museum sector have successfully used gamification, for example http://museumgam.es/dora, but will this work for the FE sector? The project team is currently talking to people in the education sector with experience of crowdsourcing to try and ascertain if this is a feasible option for our project.  If you have experience of running a crowdsourcing project in the education sector please get in touch: https://feskillswindow.jiscinvolve.org/wp/contact-us.

Twitter logoPlease do get in touch if you’d like be involved in our project, it’s all about developing tools based on your requirements so we need your input. You can also follow Mark (https://twitter.com/markpower) or I (https://twitter.com/Lauraar) on Twitter to get updates.