easyBorrow provides a single user interface for requesting books from four shared resource systems. 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 to 1) do a look-up in our catalog (we redirect if a circulating copy is available), 2) query our III INNReach catalog, 3) query two Sirsi-Dynix URSA consortium catalogs, and 4) default to our ILLiad system if the request can't be placed in one of the direct borrow systems. 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.
- Bonnie Buzzell, Senior Knowledge Management Librarian, ITS
- Birkin Diana, Unix Programmer, ITS
- Bart Hollingsworth, Information Delivery Services Librarian, Gateway Services
- Jean Rainwater, Co-leader, ITS
The service-oriented-architecture of easyBorrow allows others to adapt components of the open-source code. We've built a dozen web- APIs in PHP, Java (served via Tomcat), and Python (served via Django) -- coordinated by a Python script. In our implementation, PHP code handles user and administrative screens, detects the initial OpenUrl from WorldCat, calls a custom (PHP) API to our III OPAC to see if the desired ISBN is available, calls another Java/Tomcat API to authenticate the user and obtain required user-information, and updates a database request-processing queue. At that point a Python controller script takes over, which regularly checks for new requests. It calls -- as necessary -- two consortial Java/Tomcat API tunnelers, another Python consortial tunneler, a Java/Tomcat API tunneler for our Illiad interlibrary-loan system, and a Python/Django API tunneler which automatically adds users to the Illiad system. This controller script then sends users and staff confirmation emails.
Other web-service components include:
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.
Features soon to be released include:
Areas under development include:
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.
» March 2008 User Satisfaction Survey
- easyBorrow User Interface
- easyBorrow Administrative Interface [login required]
- easyBorrow wiki [login required]
- Recent requests RSS feed
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)