Umlaut is the open source “SFX front-end”, “link resolver aggregator”, or “known-item service provider.”
I recently added a service plugin to generate links to ILLiad‘s OpenURL receiving point, so you can place an ILL request for the current citation. Currently it’s just in Umlaut’s git repo, it’s not yet in an official release.
Now, typically Umlaut wraps a lot of under-the-hood SFX functionality. Currently, I’m letting SFX generate the ILLiad links, and Umlaut gets them and places them on it’s own page, along with other SFX-generated links. And that still works.
Why prefer to have Umlaut generate the links directly instead? Well, there are a number of tweaks that many customers apply to customize SFX’s built-in ILLiad parser to begin with. For instance, to make sure citations that appear to be dissertations have “genre=dissertation” set on the URL pointed at ILLiad. (Not actually part of the OpenURL spec technically, but it’s what ILLiad wants).
I too was maintaining a locally customized SFX ILLiad target parser, which had to be periodically reviewed and updated for new versions of SFX. But then I ran into a problem there was no good way to work around in SFX — SFX was taking an incoming citation that lacked an ISBN, trying to find a match for it in the SFX knowledge base of ebooks, and then ‘enhancing’ the citation with details from the closest match. The result was, an OpenURL from OCLC for a DVD wound up going to SFX (via Umlaut), but the then the ILLiad link SFX generated ended up being for a different work, a book with a similar name from the SFX kb.
This was no good. And there was no good way to have Umlaut work around it.
We really pay for SFX for it’s knowledge base keeping track of licensed serials entitlements, and how to appropriately link out to content hosting platforms in this knowledge base. The actual logic and functionality of SFX we could probably replicate with open source software (like Umlaut), it’s not rocket science, but that constantly updated knowledge base is where the value is. Now, SFX gives you all sorts of other functionality along for the ride, like linking out to ILLiad. The benefit of using it is that the vendor we’re paying anyway is maintaining it for us. But for the ILLiad target parser, we were having to maintain a local customized version anyway! And when such a function isn’t working out the way we want it to, Umlaut makes it easy to replace that chunk of functionality with our own code.
Umlaut’s own linking-to-ILLiad service can be used in contexts where you’re using Umlaut without SFX too. I don’t know of any implementers doing so, but Umlaut is being written to be agnostic as to underlying link resolver kb.
I haven’t put this in production yet, it might be a while until I have time to test it fully and switch it in during a non-disruptive time of year. But it’s available now, and I figured I’d announce it.
This pretty simple Umlaut adapter was also a good place to try modelling good automated tests of an Umlaut adapter. Umlaut’s architecture was largely solidified before any of it’s developers had much experience with automated testing, and some aspects of it would be done differently today, especially with regard to ease of testing. But there ended up being a fairly decent way to stick this Umlaut service adapter in a test harness. Here’s a test class.