Repositories and the Open Web

I’ve written before about how I used EPrints as a back end for WordPress, which was a front end for some OERs which are aimed at anyone wanting to learn how to sketch. I didn’t really know where I was going with it, but it worked out OK. I’ve also written about how WordPress can be used for scholarly publishing with the addition of a few plugins. In that post, I showed how I deposited my MA Dissertation into EPrints via RSS from WordPress. I’m going to take a similar approach with the OERs we’ve created for the ChemistryFM project, using the repository as canonical storage and WordPress as a front end for the course. I think that for these reasons, I was asked to provide a brief ‘position paper’ for next week’s JISC CETIS event on repositories and the open web. ((The distinction between the open web and the social web isn’t very clear on the CETIS event page. I think that the open web is not necessarily social and that the social web is not necessarily open. For me, the open web refers to a distributed web built on open source and open standards like HTML, RSS, RDF, OAuth, OpenID. Although the two are converging, Twitter for example is not as good an example as Status.net in terms of the open web, but a better example of the social web in terms of its uptake.))

My position is pretty straight forward really. I don’t think it’s worth developing social features for repositories when there is already an abundance of social software available. It’s a waste of time and effort and the repository scene will never be able to trump the features that the social web scene offers and that people increasingly expect to use. The social web scene is largely market driven (people working in profit making companies develop much of the social web software) and without constantly innovating, businesses fail. Repositories, on the whole, are not developed for profit and do not need to innovate for the sake of something new that will drive revenue. That is a good position to be in. Why change it? When repositories start competing for features with social web software, it is the beginning of the end for them.

EPrints offers versioned storage for the preservation of digital objects and a rich amount of data in a number of formats can be harvested and exported from each EPrint. The significance of the software is the exposure of its data to Google, as you will see from looking at the web analytics for any repository.

In thinking about how to join EPrints to the social web, I’ve toyed with the idea of a socialrepo, where WordPress harvests one or more feeds from the repository. With a little design work, WordPress could be the defacto front end for the repository providing all the social features of a mature blogging platform.

We’ve also commissioned a couple of plugins for EPrints that extends the reach both to and from EPrints. The first is a simple widget that can be placed on any web page and provides a way for a member of staff to upload a paper to their EPrints workspace. The second is an XML-RPC plugin that allows you to post a summary of your EPrint to your blog at the end of the deposit process so that the item can be advertised in a place more meaningful to you than an institutional repository and discussed alongside all your other academic blogging.

As I’ve shown with my own dissertation, EPrints can consume RSS feeds and if we want to add social web compatibility to EPrints, why not focus on improving the ingest process so that data can be harvested from the feed to populate the cataloguing fields? And while we’re at it, recall that the social web is rich in multimedia. EPrints could be much improved in how it ingests multimedia and the batch editing functionality that is essential when dealing with hundred of images, for example. Much could be done on the inside of EPrints, but on the outside, EPrints is an excellent example of the open web but a poor example of the social web. But let’s not beat ourselves up about it. The social web thrives on the technologies of the open web. Give it what it needs to thrive and make it easier for users to feed the beast.

Ten years in the life of my Linux desktop

During some quiet time in the office last week, I decided to install Ubuntu 10.4 on my work desktop. It’s a nice 2009 24″ iMac and during the install process I was reminded of the first time I installed Linux ten years ago, which was also on an iMac (‘Summer 2000‘ model). It goes without saying that Linux on the desktop has come a long way, but it wasn’t until this particular version of Ubuntu that I would confidently say that it’s as hassle-free and useful as running OS X or Windows. For me, Linux is a better experience than either of them.

The first time I installed Linux in July 2000, I sent off for a CD of PPC Linux (no longer in business). USB support was experimental, which was a bit of a problem for Mac users, as Apple had switched to USB as their main type of connector. I spent many hours compiling experimental USB drivers from source. I stuck with the PPC Linux distro for a few months, but then SUSE released a much more polished version of Linux for the PowerPC and I switched to that. There were still problems with running Linux on a Mac and Linux desktop applications were still relatively immature but I was happy to use that for a couple of years until SUSE dropped support for the PowerPC chip. Then, around mid-2001, I made the leap to Debian, traditionally a distro for hardcore Linux users and stepped up my game a bit by running the bleeding-edge ‘unstable’ version – I think it was called ‘Sid’ at the time.

Debian was cool and I ran it on my old iMac until March 2007 at which point it was time to move on. I removed the hard-drive, smashed it with a hammer and then placed the whole machine in the bin before hitting the road and never looking back (more or less).

A couple of months later, I bought my first laptop with Linux pre-installed. The Lenovo N100 is a well supported and well built machine – the display doesn’t flop about in the wind like on some cheap laptops. On the whole, Ubuntu on the Lenovo was pretty good although the brightness control never did seem to work very well. When I was given a Dell D430 laptop at work, I took the ‘pesky penguin’ as my wife calls Linux (Lord only knows why!?), off the Lenovo, and offered the Lenovo up to her. No more trouble and strife.

Still with me? Well, as soon as I was given the Dell (about a year ago), I wiped the corporate install of XP (sorry ICT colleagues, but I never have to hassle you for support now, which I would if I was running Windows) and made it a single boot Ubuntu machine. I love this little laptop. Everything works.

Anyhow, the real test was last week when I installed Ubuntu Lucid beta 2 on both the Dell and the iMac. It’s remarkable. Faster than OS X for the applications I use and it uses less RAM overall, too. Ubuntu has ditched the brown theme (about time!) and have adopted a dark default theme with hints of purple. Sounds awful doesn’t it? But it looks slick and everything works great.

Ten years later, with my hand on my heart, I can say the ‘journey’ was worth it. Let it be known, Linux on the Desktop has arrived. I think it’s time that all Educational Technologists in every corner of the world, took a Linux CD to their corporate machine and showed it what a real OS looks like. I guarantee that your day will be more interesting. ūüėČ

Spinning a different kind of WPMU platform with JISCPress

We finished JISCPress. If you’re interested, I’ve written a long overview of the work we’ve done with WPMU as a document discussion platform, based on WriteToReply. You’ll see that the project has, among other things, produced three plugins: digress.it, and two Linked Data plugins that run as background services across the platform, create relationships between documents and document sections and post RDF to the Talis Data Store. Fancy!

Jailbreaking WordPress with Web hooks

As is often the case, I struggle at first glance to see the full implications of a new development in technology, which is why I so often rely on others to kick me up the arse before I get it. ((I am not ashamed to admit that I’m finding that my career is increasingly influenced by following the observations of¬†Tony Hirst. Some people are so-called ‘thought-leaders’. I am not one of them and that is fine by me. I was talking to¬†Richard Davis about this recently¬†and, in mutual agreement, he quoted Mario Vargas Llosa, who wrote: “There are men whose only mission is to serve as intermediaries to others; one crosses them like bridges, and one goes further.” That’ll do me.))

Where I ramble about WordPress as a learning tool for the web…

I first read about web hooks while looking at WordPress, XMPP and FriendFeed’s SUP and then again when writing about PubSubHubbub. Since then, Dave Winer’s RSSCloud has come along, too, so there’s now plenty of healthy competition in the world of real time web and WordPress is, predictably, a mainstream testing ground for all of it. Before I go on to clarify my understanding of the implications of web hooks+WordPress, I should note that my main interest here is not web hooks nor specifically the real time web, which is interesting but realistically, not something I’m going to pursue with fervour. My main interest is that WordPress is an interesting and opportunistic technology platform for users, administrators and developers, alike. Whoever you are, if you want to understand how the web works and how innovations become mainstream, WordPress provides a decent space for exercising that interest. I find it increasingly irritating to explain WordPress in terms of ‘blogging’. I’ve very little interest in WordPress as a blog. I tend to treat WordPress as I did Linux, ten years ago. Learning about GNU/Linux is a fascinating, addictive and engaging way to learn about Operating Systems and the role of server technology in the world we live in. Similarly, I have found that learning about WordPress and, perhaps more significantly, the ecosystem of plugins and themes ((Note that themes are not necessarily a superficial makeover of a WordPress site. Like plugins, they have access to a rich and extensible set of functions.)) is instructive in learning about the technologies of the web. I encourage anyone with an interest, to sign up to a cheap shared host such as¬†Dreamhost,¬†and use their one-click WordPress offering to set up your playground for learning about the web. The cost of a domain name and self-hosting WordPress need not exceed $9 or ¬£7/month. ((I am thinking of taking the idea of WordPress as a window on web technology further and am tentatively planning on designing such a course with online journalism lecturer, Bernie Russell. It would be¬†a boot camp for professional journalists wanting (needing…?) to understand the web as a public space and we would start with and keep returning to WordPress as a mainstream expression of various web technologies and standards.))

… and back to web hooks

Within about 15 minutes of Tony tweeting about HookPress, I had watched the video, installed the plugin and sent a realtime tweet using web hooks from WordPress.

It’s pretty easy to get to grips with and if a repository of web hook scripts develops, even the non-programmers like me could make greater use of what web hooks offer.

Web hooks are user-defined callbacks over HTTP. They‚Äôre intended to, in a sense, ‚Äújailbreak‚ÄĚ our web applications to become more extensible, customizable, and ultimately more useful. Conceptually, web applications only have a request-based ‚Äúinput‚ÄĚ mechanism: web APIs. They lack an event-based output mechanism, and this is the role of web hooks. People talk about Unix pipes for the web, but they forget: pipes are based on standard input and standard output. Feeds are not a sufficient form of output for this, which is partly why Yahoo Pipes was not the game changer some people expected. Instead, we need adoption of a simple, real-time, event-driven mechanism, and web hooks seem to be the answer. Web hooks are bringing a new level of event-based programming to the web.

I think the use of the term ‘jailbreak’ is useful in understanding what HookPress brings to the WordPress ecosystem. WordPress is an application written in PHP and if you wish to develop a plugin or theme for WordPress you are required to use the PHP programming language. No bad thing but the HookPress plugin ‘jailbreaks’ the requirement to work with WordPress in PHP by turning WordPress’ hooks (‘actions’ and ‘filters’)¬†into web hooks.

WordPress actions and filters, are basically inbuilt features that allow developers to ‘hook’ into WordPress with their plugins and themes. Here’s the official definition:

Hooks are provided by WordPress to allow your plugin to ‘hook into’ the rest of WordPress; that is, to call functions in your plugin at specific times, and thereby set your plugin in motion. There are two kinds of hooks:

  1. Actions: Actions are the hooks that the WordPress core launches at specific points during execution, or when specific events occur. Your plugin can specify that one or more of its PHP functions are executed at these points, using the Action API.
  2. Filters: Filters are the hooks that WordPress launches to modify text of various types before adding it to the database or sending it to the browser screen. Your plugin can specify that one or more of its PHP functions is executed to modify specific types of text at these times, using the Filter API.

So, if I understand all this correctly, what HookPress does is turn WordPress hooks into web hooks which post the output of the executed actions or filters to scripts written in other languages such as Python, Perl, Ruby and Javascript (they can be written in PHP, too) hosted elsewhere on the web. ¬† In the example given in the HookPress video, the WordPress output of the action, ‘publish_post‘, along with two variables ‘post_title’ and ‘post_url’, was posted to a script hosted on scriptlets.org,¬†¬†which performs the event of sending a tweet which includes the title and URL of the WordPress post that has just been published. All this happens as fast as the component parts of the web allows, i.e. in ‘real time’.

In other words, what is happening is that WordPress is posting data to a URL, where lies a script, which takes that data and creates an event which notifies another application. Because the scripts can be hosted elsewhere, on large cloud platforms such as Google’s AppEngine, the burden of processing events can be passed off to somewhere else.¬†I see now, why web hooks are likened to Unix pipes, in that the “output of each process feeds directly as input to the next one”¬†and so on. In the case of HookPress, the output of the ‘publish_post’ hook feeds directly as input to the scriptlet and the output of that feeds directly as input to the Twitter API which outputs to the twitter client.

Besides creating notifications from WordPress actions, the other thing that HookPress does (still with me on this ‘learning journey’ ??? I’ve been reading, writing and revising this blog post for hours now…), is extend the functionality of WordPress through the use of WordPress filters. Remember that filters in WordPress, modify text before sending it to the database and/or displaying it on your computer screen. The example in the video, shows the web hook simply reversing the text before it is rendered on the screen. ‘This is a test’ becomes ‘tset a si sihT’.

The output of the ‘the_content‘ filter has been posted to the web hook, which has reversed the order of the blog post content and returned it back to WordPress which renders the modified blog post.

Whereas the action web hooks are about providing event-driven notifications, the filter web hooks allow developers to extend the functionality of WordPress itself in PHP and other scripting languages. ¬†In both cases, web hooks ‘jailbreak’ WordPress by turning it into a single process in a series of piped processes where web hooks create, modify and distribute data.

Finally, I’ll leave you with this presentation, which is all about web hooks.

In the presentation, there are two quotes which I found useful. One from Wikipedia which kind of summarises what HookPress is doing to WordPress:

“In computer programming, hooking is a technique used to alter or augment the behaviour of [a programme], often without having access to its source code.”

and another from Marc Prensky, which relates back to my point about using WordPress as a way to learn about web technologies in a broader sense. WordPress+HookPress is where programming for WordPress leaves the back room:

As programming becomes more important, it will leave the back room and become a key skill and attribute of our top intellectual and social classes, just as reading and writing did in the past.

Reading ‘The Edgeless University’ and ‘HE in a Web 2.0 World’ reports

I have been asked to present the recent Higher Education in a Web 2.0 World report to the University’s next Teaching and Learning Committee. The report came out shortly before, and is referenced by, The Edgeless University. Why Higher Education Must Embrace Technology, which was launched by David Lammy MP at the end of June. I’ve been going through both reports, pulling out significant quotes and annotating them. Here are my notes. It is not a comprehensive nor formal review of the reports, nor a statement from the University of Lincoln. Just personal reflections which I will take to my colleagues for discussion. I don’t whole-heartedly agree with every statement made in both reports or even those quoted here, but I do take government promoted reports, and the funding that accompanies them, seriously.

I include quotes from¬†David Lammy’s speech, as it can be read as a formal statement from government on the recommendations of the ‘Edgeless’ report and a commentary on future funding priorities.

If you’ve not yet read the reports, my notes might provide a useful summary, albeit from the bias of someone charged with supporting the use of technology to enhance teaching and learning. ¬†I am also an advocate of Open Access and Open Education on which the Edgeless report has a lot to say. Methodologically, the writing of both reports combined both current literature reviews and interviews across the sector and as I write, they are the most current documents of their kind that I am aware of.

If you have commented on either of these reports on your own blog or have something to say about the excerpts I include here, please do leave a comment and let me (and others) know.  Thanks.

Continue reading “Reading ‘The Edgeless University’ and ‘HE in a Web 2.0 World’ reports”

PubSubHubbub: Realtime RSS and Atom Feeds

It’s made Dave Winer happy, which is no easy task, so I think PubSubHubbub is worth mentioning here. If it’s working as it should, this post should appear in my Google Reader, almost immediately after I’ve published it. That’s because PubSubHubbub is “a¬†simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom [and RSS].” My blog feed is managed by FeedBurner which has already implemented the new protocol, as has Google Reader FriendFeed. They should therefore ‘talk’ to each other in realtime. Watch the video and you’ll see how it works. It’s pretty straightforward. It just takes a company the size of Google to push it through to adoption. The engineers say they were using it like Instant Messaging the night before the demo, which says something about how responsive this is. Technically, it should be another challenge to Twitter in that it allows for a distributed method of near realtime communication. ¬†I’d like to see that. I feel like an idiot communicating within the confines of ¬†Twitter, sometimes.