PENS versus Podcasts – What’s the best way to publish e-learning content?
Posted by Ian Leader - September 4, 2008
Ian Leader and Paul Nebel look at the tools available for publishing e-learning content and propose an unlikely tool many of us use on a daily basis.
Before Apple’s iPod brought us PodCasting, there was no universally accepted way to get rich media content from the server where it was produced to the people or systems that would actually use it. You would have to search web sites, or maybe you would get email notifications that new documents of other media were available.
Only then could you download the content from the web site and put it wherever it needed to go). PodCasting (based on the open RSS standard) changed the way we found rich media by allowing users of iPods to subscribe to ‘feeds’ that contained audio and video files. These are automatically downloaded and copied to the users’ iPod or other audio device)
The same evolution has been playing out in the e-learning world. There are many tools for creating e-learning but most learners interact with e-learning through a Learning Management System (LMS), which delivers the content and tracks the learner’s progress through it. We are seeing organisations increasingly adopt Learning Content Management Systems (LCMS) to author their e-learning, or manage content authored in other tools. There are numerous benefits to using an LCMS, including version management and better work flow, but their use does raise one problem: how to get content from the LCMS (similar to the website in the PodCasting example above) into the LMS (analogous to the iPod).
To solve this problem a standard called PENS (Package Exchange Notification Services) was created by the AICC to define a standard way for LCMSs to publish content to LMSs. PENS defines a way for an LCMS to tell an LMS that a piece of content is ready for deployment, and where this content can be found. PENS adopts a centralised ‘push’ model (see diagram below):

An administrator on the LCMS must enter the details of each system which might want to be notified of the presence of new or updated content. When content is published, the LCMS sends a message (in the form of an ‘HTTP request’) to all of these systems. This message tells them various things about the content, including from where to download it.
PENS is a fairly simple standard – the requirement is fairly simple after all, but we wonder why the authors didn’t use an existing and widely used format: Really Simple Syndication (RSS)? RSS is a ubiquitous de-facto standard for syndicating (or pushing out) information on the web. Virtually every blog, news site, or other web site that is regularly updated has an ‘RSS feed’. Using an RSS reader you can subscribe to these feeds, and get a notification when there is a new blog post, breaking news, or an update to a site. (Visit this YouTubeVideo for a great explanation of RSS). RSS is also used to deliver Podcasts and Video Podcasts – the format is extensible, and additional fields were added by Apple so that it could be used to push audio and video files to iPods (and most other audio player devices). We designed an alternative implementation of PENS based on RSS/Podcasting, which we call ‘PENCasting’. The architecture is shown in the diagram below:

Case Study: DfES Adoption Act Training
In 2005 LINE provided a turn-key solution to the DfES to train a diverse audience of approximately 10,000 learners in the implementation of the new UK Adoption Act. As well as developing e-learning content, we provided a delivery and tracking system by partnering with e2train. As project deadlines were extremely tight we decided to follow the ‘Agile’ development practice of ‘release early and often’. We developed an integration between our content production environment and e2train’s Kallidus LMS so that each time changes were made to the content, it would be automatically transferred to the Kallidus LMS. This meant that any problems with the content or its integration with the LMS were spotted early on, rather than being discovered days before the final release! The DfES Adoption Act Training example shows that the benefits of integration between content authoring and content delivery environments extend well beyond the delivery of signed-off content at the end of the production process.
We believe that there are several advantages to using PENCasting rather than the existing PENS architecture:
- Because RSS and Podcasting are so widely used, and a de-facto standard, they are already well understood by developers and users. Moreoever, there are existing (free and open source) code-libraries which make implementation and testing quicker and easier.
- PENCasting is more scalable. In PENS a central administrator of the LCMS has to set up and maintain a list of web addresses to which notifications are sent. The subscription model of PENCasting lets recipients subscribe to the feed themselves just like any other RSS feed. What’s more, this approach makes it easy for LMSs to choose what kind of information they wish to subscribe to: an LCMS could publish several different PENCasting feeds (e.g. sales training, after sales training and technical training). By just subscribing to the relevant feed, an LMS would only pick up content that was relevant to the audience it served.
- RSS allows you to retrieve historical publications as easily as new ones. What happens if you deploy a new system, or a system is down when the content notification is sent by PENS? RSS feeds typically provide some history; so, even if a system is down for a whole day, it can catch up once it’s back on line. You can also provide two RSS feeds: one which has, say, a week’s worth of announcements, the other with a full history that can be used to ‘seed’ a new system.
- RSS works transparently through firewalls. An LMS behind an organisation’s firewall can receive notifications from a hosted LCMS outside, whereas PENS needs HTTP access in both directions.
- You can monitor new content publications using standard tools (the ubiquitous RSS reader) – so anyone can stay informed of new publications and download them if they desire.
The final point is perhaps the most exciting: we already use Podcasting to grab audio and video material from multiple sources and download it for use on iPods and other mobile devices at our convenience. As mobile phones get smarter with better user interfaces and display capabilities, driven by the popularity of the iPhone and Google’s Android initiative, why shouldn’t we get our e-learning content delivered the same way as well? Why not get content from whatever sources we want, whenever it’s ready, and delivered straight to our desktop, phone or PDA?
by Ian Leader & Paul Nebel
This article was planned, researched and written collaboratively in London and Zurich using Google docs and Skype. When we weren’t working together in real-time, we used the RSS feature of Google Docs to keep us notified of changes the other author had been making.
So what would the RSS files for PENCasting look like? The following table maps the key fields from the PENS standard onto elements and attributes or RSS (some standard, some extensions we have added in the ‘pens’ namespace). Some fields are not required and have not been mapped. The main example is authentication information, which is not required as subscribing systems would use the same credentials to download content that they had already used to access the PENcasting RSS feed . In any case, it’s not best practice from a security perspective to be passing around username and password pairs in plain text.
| Element | Value | Description | Equivalent PENS attribute |
| <pens:package/> | Enclosing tag. | Specifies a content package. It has 4 required sub-elements:
It has one optional sub-element:
|
N/A |
| <pens:type/> | string (required) | Allowable types of content packages: AICC assignable unit (aicc-au), SCORM package (scorm-pif) or IMS package (ims-qti). | package-type |
| <pens:version/> | string (required) | Identifies the version of the packaging specification relevant to the package to be processed, e.g., for ADL SCORM “scorm-pif” packages, a system might use “1.2″ or “2004″. | package-type-version |
| <pens:id/> | string (required) | Unique identifier required for package. ID is a Uniform Resource Identifier (URI) conforming to RFC standard 2396 and consisting of two parts; a globally unique namespace taken from the url associated with the LCMS generating the ID, plus an ID unique within the LCMS itself. | package-id |
| <pens:url/> | string (required) | Location of package archive ready for download (this will be a url). | package-url |
| <pens:urlExpiry/> | string | The content package is expected to be available for processing until at least the date and time specified (this will be a Coordinated Universal Time – UTC – conforming to ISO standard 8601). | package-url-expiry |
| <textInput> | string | This is a standard (but often overlooked) RSS field used to provide a simple text input form for subscribers to respond to feeds. We propose that this would be used as the mechanism for responding to the LCMS with alerts. | alerts |
And here is what the code looks like:
Note that the URL used to define the namespace definition (http://www.pens.org/pencast/) is hypothetical and does not exist.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:pencast="http://www.pens.org/pencast/">
<channel>
<title>Making Soup</title>
<link>http://www.goodsoup.com</link>
<description>Learn how to make great soup from professional chefs.
</description>
<pubDate>Fri, 25 Apr 2008 13:00:00 +0100</pubDate>
<item>
<title>Soup making techniques explained</title>
<description>Learn how to make any kind of soup using the
techniques employes by top soup makers.
</description>
<pubDate>Fri, 25 Apr 2008 13:00:00 +0100</pubDate>
<enclosure url="http://learning.goodsoup.com/scorm/cooking/techniques/
makingsoup.zip" length="5259231" type="application/zip" >
<pencast:package>
<pencast:id>
http://learning.goodsoup.com:2631e419-1573-4720-b4c6-8701f960
</pencast:id>
<pencast:version>1.0</pencast:version>
<pencast:type>scorm-pif</pencast:type>
<pencast:url>http://myauthoringtool/makingsoup.zip</pencast:url>
<pencast:urlExpiry>2008-07-22T06:51:29</pencast:url-expiry>
</pencast:package>
</enclosure>
</item>
<textInput>
<description>Please provide an update alert</description>
<name>alert</name>
<title>Update alert</title>
<link>http://learning.goodsoup.com/alerts/receiveAlert.php</link>
</textInput>
</channel>
</rss>








