ITS Software Development and Distribution: easyBorrow


Overview
easyBorrow provides a single user interface for requesting books from multiple sources. We use WorldCat as our starting point. Instead of passing the OpenURL from WorldCat directly to our link resolver, we intercept it and use the ISBN or other information to 1) do a look-up in our catalog (we redirect if a circulating copy is available), 2) query BorrowDirect, and 3) default to our ILLiad system if the request can't be placed otherwise. Instead of having to navigate different proprietary systems, each with its own search interface and login method, the user now searches once in WorldCat, authenticates once, and easyBorrow goes to work behind the scenes.

Recent requests


October 29 at 12:28 am
Protestantism and Progress : a Historical Study of the Relation of Protestantism to the Modern World
9781315127590
(auto-requested from josiah)


October 29 at 12:26 am
Guide to Rhodesia for the use of tourists and settlers : illust., maps and plans.

(auto-requested from josiah)


October 27 at 12:27 am
Empireland : how imperialism has shaped modern Britain
9780241509821
(auto-requested from josiah)


October 5 at 1:29 am
Dead souls = Dead souls. [Part I]

(auto-requested from josiah)

Team

Technical Details
The original service-oriented-architecture of easyBorrow allowed others to adapt components of the open-source code. We built a dozen web- APIs in PHP, Java (served via Tomcat), and Python (served via Django) -- coordinated by a Python script.

Other web-service components include:

  • 'XISBN' service described below, written in Python/Django.

  • 'OCLC-to-ISBN' web service that looks at the WorldCat edition statement for items without an ISBN to find an alternate edition WITH an ISBN. This is particularly relevant for "classics" that have been republished many times. Written in Python/Django.

  • 'patronApi-translator' which takes the raw output of our III patronApi and improves it, written in PHP.

  • 'goodTitle' web- service which takes problematically-encoded OpenUrl titles and gets properly-encoded titles from OCLC, written in Python/Django.

  • 'stats' web-app which transfers request and history data to an archival database without patron-identifying information, as well as generates an RSS feed, written in Python/Django.

The easyBorrow application includes a tracking interface for users and an administrative interface for staff. In addition to the standalone tracking site, users can access their easyBorrow requests within their library catalog account. The administrative interface allows staff to monitor, search, and resubmit requests. Both interfaces are written in PHP; data is stored in a MySQL database.

Areas under development include:

  • Investigate feasibility of using additional search parameters.

  • Modify email received by a user when an item is not available from the service that accepted the request so that the user can automatically send the request back to easyBorrow on a new path.

  • Intercept and handle elegantly where possible 'item-missing' notifications from vendor products.

  • Show user an intermediate screen when non-circulating copies are available for use at Brown. [easyBorrow currently redirects users to the local catalog only when a circulating copy is available.]

Code and License
We intend to host this code at a Brown University Library Software subversion repository with anonymous checkout access, but while that is being set up we are offering a Java API to Borrow Direct (a consortium of Brown, Columbia, Cornell, Dartmouth, University of Pennsylvania, Princeton, and Yale libraries) at Google Code under an LGPL license.

Assessment
» March 2008 User Satisfaction Survey

Statistics
» Users
» Requests
» Interface Choice

Project Links

Reports and Presentations

  • easyBorrow Project Description
  • easyBorrow Flow Chart
  • easyBorrow PowerPoint, October 2007
  • "Seems Seamless: Joining Library Borrowing Systems with Custom Programming"
    NERCOMP Annual Conference, Providence, RI, March 11, 2008 (PowerPoint)

    Abstract: Brown University Library's "easyBorrow" service is an example of local programming that stitches together multiple vendors' services, providing an apparently seamless interface for borrowing a book from any of five systems. Using teamwork, service-oriented architecture, and a determination to make it easy, easyBorrow's modular implementation allows for quick adjustments as situations (and services) change.
  • "easyBorrow at Brown: Piecing Together Library Borrowing Systems with Custom Programming", Boston Library Consortium, May 5, 2008 (PowerPoint)
  • "Don't Make Me Choose! (or, Just Get What I Need!): Making It Simple to Borrow"
    easyBorrow LITA 2008 National Forum, Cincinatti, Ohio (accepted)