Along with several colleagues I've come to the opinion that the current OpenURL implementation workflow and user experience is wholly insufficient. There's too much maintenance overhead on both sides of the library/publisher equation. There's too much work for small publishers to be able to participate. There's almost zero possibility that a tiny publisher (like a single weblogger somewhere) will be able to put useful OpenURL links on their own little sites.
What we need next if we really want to spread OpenURL-based services more widely is a no-configuration, no-overhead, inexpensive solution that works for the widest possible range of libraries, publisher/vendors, and users. (The usability of the prevailing OpenURL resolution click-flow is a wholly separate matter with its own insufficiencies, but we can't solve everything at once.)
COinS [1], as cool as it is, remains inadequate for meeting this need statement because it requires every user to twiddle bits on their desktop, although it pushes us a step closer by *allowing* users to benefit by twiddling bits, which wasn't possible before.
What to do? Use registries.
The OCLC OpenURL Resolver Registry [2] comprises records for roughly 1000 OpenURL resolvers at various institutions, mostly but not solely in North America. It also provides a simple web service that takes an IP address as a parameter and returns zero-to-many resolver records for every resolver that serves users coming from that IP address.
What does that mean? If you're like me, and you work for a small service like the Canary Database [3], you used to be essentially unable to provide user-appropriate OpenURL linking without having to configure many many ranges of IP addresses after many many conversations with librarians. "Used to be," that is.
Are you on a campus (or using a campus proxy) for an institution with an OpenURL resolver? If yes, visit the Canary here [4] and tell me what you see.
What you *should* see (only just turned this on, mind you, so please report broken stuff!) is working links to your own institution's OpenURL resolver. Easy, right?
Here's how to implement it on your site:
Well, it's a bit more complicated than that. You're not quite done:
Better, right? Actually, the best thing to do would be to also parse out the per-institution IP address block information and do local queries against the *ranges*, not specific IP addresses. PostgreSQL has a built-in type that supports this really well.
Any competent web geek should be able to implement this in a few hours. Call me if have questions.
So, to review, here's what happens:
Pretty cool, eh? It's not without some important problems, though.
The flaw with the IP/DNS query bit is that a massive, distributed, caching system for queries about membership of IP addresses in IP blocks already exists, and it's all connected to user- and application-queriable layers through DNS, too. And a protocol which uses these existing layers for just these kinds of purposes already exists [6] along with a related DNS Service Discovery piece [7]. Check the name of the first protocol: Zero Configuration Networking.
That's exactly what we're doing here - providing a zero configuration experience to users. But we're not doing it with ZeroConf, though we probably should be. Or at least we need to make a concerted effort to try it before we dismiss it.
Still, this seems to work. And from multiple, repeated usability tests on the Canary, the first thing everybody always says *still* has been "I want full-text links." Now they can have 'em.
A quick aside: the folks behind the Registry and Gateway at OCLC are supportive of this approach and want to see more people using it, so don't be shy (but cache your queries so as not to be rude, either :). If your institution's resolver isn't in the Registry, or your resolver's record there is out of date, use the form they provide [2] to enter or update information about your service.
Have at it!
Links:
[1] http://ocoins.info/
[2] http://www.oclc.org/productworks/urlresolver.htm
[3] http://canarydatabase.org/
[4] http://canarydatabase.org/browse/year/1972
[5] http://www.oclc.org/worldcat/open/about.htm
[6] http://www.zeroconf.org/
[7] http://www.dns-sd.org/