Thursday, April 28, 2011

Why a Publishing API? or What's a Publishing API?

The fellowship that I have through the Shuttleworth Foundation is officially “to foster an ecosystem around open education resources”.  The community creates great teaching and learning resources, and then the ecosystem makes it possible for educators, innovators, students, and life-long learners to use the resources, improve them, and connect them together in novel ways that enhance learning.

When you look at the details of my fellowship proposal, the first thing that I am starting with is creating a publishing API (application programming interface). The API part of that means that it is a language that software programs speak to each other. If you use TweetDeck to update your Twitter and Facebook accounts, then you are using software programs that are talking to each other using APIs. (Because Twitter provided a simple API early on, tons of services I had never heard of use the Twitter API. A cooler-than-me friend sent me this list of programs that use Twitter’s API -- “Brizzly, Seesmic, Tweetie, DestroyTwitter, TwitterFox, SoBees, Mixero”.  And another mentioned that all of our email programs communicate with each other via a lovely open API called SMTP. Email succeeded because it is easy for programs all over the world to talk to each other and deliver your email. In fact, the web and the way browsers display web pages are all built around API’s.

What do I mean by “publishing”? Here, I am talking about creating educational resources and then making them available to others in a library or repository. Making them available is the publishing part. So if you create a nice lesson for teaching fractions to middle school students and then want to share that lesson, you might publish it by uploading it to Connexions (cnx.org), or a Google Doc you make public, or your school’s website or Open Courseware (OCW) site. And then you might post a link to it on Facebook and Twitter and email the link to colleagues. Some of those colleagues might want to download it, add an exercise that they have used successfully, and share that updated version.

Now imagine that I have an idea for a simple editor that also creates really nice equations and that I want to build in a “publish” button that will let you choose where your content should be published, figure out what format it has to be in and convert it if need be, and will also advertise your content to your social networks.  If places to share the content (like Connexions) support a publishing API, then my editor can do all that for you. This scenario is only one example. I intend to blog many more examples from conversations I am having with other people and projects that are building software and content for education. These are the sorts of possibilities that a publishing API will support. I am also going to do a few more technical blogs on what things I think should be in that publishing API and what other APIs already do much of the work and provide a good place to start.

1 comment:

  1. Thanks for your post, Kathi. I would *love* to see a Connexions publishing API. It could really open up some new ways to move content into CNX.

    ReplyDelete