MyLibrary in Code4Lib Journal

By the way, MyLibrary was briefly reviewed in Issue #2 of Code4Lib Journal. From the text:

…Today, MyLibrary is now much more than simply a subject guide portal. While creating dynamic Web pages, such as subject guides, is still one of the major features of MyLibrary, it is now a full-fledged digital library framework and toolbox. Librarians have various options to import content into the system. Aside from accepting manual data-entry, MyLibrary can import MARC data and OASI-accessible data. Content from the system can be syndicated into institutional-wide portals and other systems, and users can also personalize pages in “my library” that are akin to MyYahoo, iGoogle, etc. MyLibrary is well documented, as evidenced by a 200+ page, two-volume manual. MyLibrary is written in Perl and requires MySQL. It is licensed under the GNU General Public License (GPL) Version 2.

Lot’s of good stuff there at Code4Lib Journal, but hey, I’m biased; I’m on the editorial board. Check it out anyway?

Your Page

A couple of months ago Chris Gray brought to my attention the fact that the MyLibrary Your Page demonstration was broken. Well, I (finally) got around to fixing it. Please try:

http://mylibrary.library.nd.edu/demos/your-page/   

There you will be presented with a list of famous intellectuals who you can impersonate. Once logging in using their credentials you are presented with:

  1. a set of recommended resources based on their course of study
  2. the names and email addresses of their subject-specific librarian
  3. a list of the courses they are enrolled in and some recommended resources for each course
  4. a list of the books they have checked out

The process of creating such a page is not difficult:

  1. Create sets of information resources and “catalog” them in MyLibrary.
  2. Acquire the names of students and “catalog” them in MyLibrary.
  3. Acquire the classes give across the University and “catalog” them in MyLibrary.
  4. Query MyLibrary and “join” students, classes, and information resources through their shared facet/term combinations.
  5. Display the result.
  6. Go to Step #4 for each person who logs in.

The source code for this demonstration is online. I created a very similar application – Sonne of Your Page – except it contains real data. Real people and real class rosters. This is not a production service, and you will not be able to access it unless you are a member of the University of Notre Dame community. The resulting pages look a lot like this:

sonne of your page

 Fun with MyLibrary.

MyLibrary2Atom, or Web Services revisited

How could MyLibrary content be used/exploited if the content were accessible via Web Services? Put another way, if there were an HTTP-based method for syndicating MyLibrary content in Atom or JSON formats, then how might the content be put to use?

Attached somewhere in this posting should be a Perl script called mylibrary2atom. The script is bare-bones. It takes 1 or 2 inputs and outputs a stream of Atom-based XML. The first input is the word facets, terms, or resources. The second, optional input, is an integer representing the ID of a facet, term, or resource. The result sent to STDOUT is a valid Atom feed readable and tranformable by any Atom feed reader or XSLT processor. Through the use of an additional Perl module (Google::Data::JSON) and about two additional lines of code, the script should be able to output the data in JSON format as well.

If mylibrary2atom were made into a Web Service, I think the URLs accessing the data might look something like this:

  • http://example.org/mylibrary/ - list MyLibrary resource object names (facets, terms, resources, patrons, librarians) with links specific objects
  • http://example.org/mylibrary/facets - list all facets with links to specific facets
  • http://example.org/mylibrarya/facets/3 - list facet ID #3 and links to child terms
  • http://example.org/mylibrary/terms - list all terms with links to specfic terms
  • http://example.org/mylibrary/terms/4 - list term ID #4 with links to related resources
  • http://example.org/mylibrary/resources - list all resources with links to specific resources
  • http://example.org/mylibrary/resources/2 - list resource ID #2
  • http://example.org/mylibrary/librarians - list all librarians with links to specific librarians
  • http://example.org/mylibrary/librarians/7 - list library ID #7
  • http://example.org/mylibrary/patrons - list all patrons
  • http://example.org/mylibrary/patrons/9 - list patron ID #9

In a Web Services-based interface, each one of these URLs would return either an Atom feed or a JSON object. Given this, what sorts of new and different ways might MyLibrary data used? To answer my own question, the connent could be accessed using a client written in something other than Perl — no need to know the Perl MyLibrary API. Other than that how can the content be inserted and used to provide alternative services?

Two articles, MyLibrary, and library catalogs

After doing a bit of professional reading, two articles have bubbled up to the top of my consciousness and they have relevance to MyLibrary and library catalogs. [1, 2]

Library websites

The first article, by Liu, surveyed about 100 ARL library websites for Web 2.0 characteristics. Typical content and navigation includes resources organized by title & format & subjects, library services, news & announcements, and contact us links. In short, they were (still) organized according to library functions and services.

Web 2.0 is characterized as harnessing the collective intelligence of users through coupled application programmer interfaces (API). “Think syndication, not coordination.” Along those same lines the article included a quote from Karen Coombs stating that the virtual library presence of 2010 will enable users “to come to the site not only to search for information but also to collaborate and share ideas.”

Some of the surveyed sites from the article included Web 2.0-esque features such as blogs, wiki’s, and RSS feeds, but I don’t they included the features to the degree intended by the definition of Web 2.0. In the end, and through some rather unscientific means, Liu advocates the “my library” concept and provides a few wire-frame documents illustrating how it could be employed. Ironically, these wire-frames look a whole lot like the layout of MyLibrary 2.0 pages. What is new is old again.

Library catalogs

The article by Lankes, Silverstein, and Nicholson posit that knowledge is created through conversation, and by way of extension, library catalogs — as knowledge tools — should facilitate conversation.

The first half of the article justifies why knowledge is created through conversation as well as provides definitions of Web 2.0 principles and “participatory networks”. Web 2.0 has been alluded to previously. Participatory networks “encompass the concept of Web 2.0 principles and technologies to implement a conversational model within a community (a library, a peer group, the general public, and so on).”

The second half of the article is the most interesting. It elaborates on the definition of participatory networks. It describes how libraries do this already though physical community spaces and lecture series. It outlines how a library catalog can be increasingly participatory through things like:

  • initiating conversations when no resources are found,
  • initiating conversations between users and books that they’ve read
  • changing the relevancy ranking algorithm to weigh things differently
  • including a great variety of content (blogs, wikis, digital repository, etc.)

Web pages, catalogs, and MyLibrary

It is difficult for me not to like the Liu article, even though the process used to come up with the conclusion escaped me. The second article is also near and dear to my heart because it describes the catalog as thing providing services beyond search.

I like both articles because they emphasis people and communities. People are the real sources of data and information, not books and journals. Our information systems need to figure out how to integrate individuals into them. This was always a necessity, but with traditional library transaction happening over a computer network, the face-to-face meetings have gotten lost in the shuffle. Considering the fact that MyLibrary provides a means to making relationships between information resources and people and other people, I wonder to what degree MyLibrary can be used to address some of the issues outlined in the articles.

References

[1] Engaging Users: The Future of Academic Library Web Sites by Shu Liu. College & Research Libraries 69(1):6-27 January 2008

[2] Participatory Networks: The Library as Converstaion by R. David Lankes, Joanne Silverstein, and Scott Nicholson. Information Technology & Libraries 26(4): 17-33 December 2007

LITA Guide on usability

A new LITA Guide on usability is available from Neal-Schuman:

If your library’s website is not as user-friendly as it could or should be, you need this book. A LITA guide, it is the most authoritative, current reference on usability testing for libraries. It gives you practical advice in clear, non-technical prose, plus success stories from 18 academic, public, corporate, and government libraries. Read it and you will learn what usability assessments are, why they are important for libraries, why you should do them regularly, and what the most common challenges are. You will also learn all of the necessary how-tos, whats, and whys for the most common assessment techniques and how to interpret your results, document findings, and effectively communicate results and recommendations. Usability-in-action success stories from Purdue, the University of Virginia, and Wright State University libraries; the Clinton Macomb Public Library in Michigan; the MITRE corporate library; and the library at NASA Goddard offer rare insights and practical advice for facing challenges like limited time, working within a budget, and rallying support for website changes. For library webmasters, members of library Web or usability teams, and library administrators committed to putting their patrons at the center of their website design strategy but unsure of how to begin.

Interestingly enough, the Guide got its start from the current MyLibrary manual.

“Information behavior of the researcher of the future” and MyLibrary

I have read with great interest the latest report from the British Library and JISC called “Information behavior of the researcher of the future”. [1] Some of the comments support the need for MyLibrary-like applications.

Purpose

The purpose of the study was to predict how younger (school and pre-school aged) people are likely to access and interact with digital resources in five to ten year’s time. Consequently, much of the report reads like an American Library Association Annual Meeting Top Tech Trends session.

Interesting concepts

In the course of the report, they emphasize a number of interesting concepts. For example, the “Google Generation” is anybody born after 1993. Such people are more comfortable with keyboards as opposed to spiral notebooks, they are accustomed to reading computer screens, and just as importantly, they are constantly connected to the ‘Net. Another interesting definition is “power browsing” — a behavior characterized by instant gratification, looking for “the answer” as opposed to formats of information, horizontal scanning, flicking, and going for quick wins.

Behaviors and observations

Given these characteristics, plus evidence gathered from a CIBERstudy the report outlines a number of information seeking behaviors and observations:

  • library-sponsored resources are not intuitive
  • people are not evaluating information
  • people find it difficult to assess relevance
  • people’s information literacy has not improved
  • there is a preference for natural language queries
  • young people have unsophisticated mental maps of the Internet

Myths

The report also gives credence or not to a number of Google Generation “myths”. Some of those myths say that the Google Generation:

  • are a set of “cut & pasters” — true
  • are a set of expert searchers — a “dangerous myth”
  • are more competent with technology — generally true
  • have zero tolerance for delay — false
  • think everything is on the Web and free — don’t know, yet

The report qualifies much of what it has to say with two things. First, more longitudinal studies need to be done, and second, the sorts of characteristics demonstrated by these younger people are not necessary age-related. Many people from many age ranges are exhibiting these behaviors.

Future

There are a few other thing in the future environment that need to be acknowledged. There are an increasing number of powerful brands on the Internet: Google, eBay, Amazon, Facebook, Yahoo!, etc. The report thinks these brands will become more personalized, mobile, and intuitive. Print sales will decline as consumer demand will drive up the sales of electronic books. More and more content, especially user-created content, will become available. Blog postings. Wikis. Pre-published scholarly content. Etc. Library-sponsored will shrink in comparison and increasingly be seen as difficult to use — not worth the time to use. Virtual realities will be more of a… reality. Think Second Life. Finally, the “Semantic Web” — an interconnected, machine-to-machine language network for making decisions — will either be a reality or more of a reality than it is now.

Suggestions and challenges

Give such an environment, the report outlines a number of suggestions in the form of challenges. Specifically, libraries should:

  • be less complacent regarding awareness of collections and services
  • better integrate their content and services with the wider Internet
  • design systems around user-behavior by supporting “power browsing”, getting away from hit counting, and investing in data collection/analysis
  • design systems that are simpler to use
  • emulate personal/social searching guidance
  • get information [literacy] skills on the agenda
  • move away from the one-size-fits all policy for library systems design
  • shift from a content-orientation to a user-facing perspective and then to a outcome focus

MyLibrary

Believe it or not, MyLibrary is intended to address many of the suggestions and challenges outlined in the report. Specifically, MyLibrary is expected to support things like personalization, customization, user-centered design, integration with the wider network through social networking sites and Google, marketing, etc.

Again, MyLibrary is about three things: 1) information resources, 2) people (patrons and librarians), and 3) relationships between items #1 and #2. The addition of people into library information systems, coupled with a relationship-building vocabulary moves a library from a content-centric institution to a user-centric institution. I alluded to this concept in an essay written in 2003 called “MyLibrary: A Copernican revolution in libraries”:

Is MyLibrary a “Copernican revolution” for describing information resources? No, probably not. On the other hand, by creating local classification schemes rooted in the experience of the patrons and then describing information resources using these schemes, MyLibrary does turn classification a bit on its head. Instead of the classification process revolving around objective, one-size-fits-all terms, MyLibrary might allow classification to revolve around the patron and their personal knowledge and characteristics. Only time will tell.

MyLibrary as a digital library toolbox and framework allows librarians and developers to harvest and integrate content from the wider Internet. It allows librarians and developers to syndicate content to places beyond the library. By inserting people into the system, it allows librarians and developers to do things like “People who used this also used that.”

Finally, MyLibrary is not the tool to accomplish such goals, but it is a tool. MyLibrary truly does embody the philosophy much of what the report above suggests.

I never did figure out what and where CIBER was.

[1] http://www.jisc.ac.uk/media/documents/programmes/reppres/gg_final_keynote_11012008.pdf

[2] http://infomotions.com/musings/copernican-mylibrary/

More Facebook and MyLibrary

I believe I have finished writing my first Facebook/MyLibrary application.As stated on the application’s about page:

MyLibrary is an application allowing you to save to your profile sets of scholarly and academic information resources enabling you to be more effective in your learning, teaching, and research.

To this end it displays a default set of library resources. You are then given the opportunity to choose an alternative set based on a subject term. After the alternative sets are displayed the user’s profile page is updated. Links on the profile page provide access to various indexes and databases.Next steps might be to read a user’s profile (and/or their friend’s profiles) and suggest other resources. Hmmm… Software is never done.Attached should be the Perl script I used to implement the program.

Single sign-on and MyLibrary

We are playing with single sign-on technology here at the University Libraries of Notre Dame, and its implementation makes putting the “my” into MyLibrary almost trivial.

More specifically, we are experimenting with a thing called CAS (Central Authentication Service). It is relatively easy to install. Download WAR file. Drop it into your Java servlette container. Configure it to interact with your local authentication mechanism. (We use Kerberos.) Add CAS module to Apache. Configure specific directories to require authentication. Go.

When people access an authentication-required page on your Apache server and they are not authenticated, Apache redirects them to a login page. Enter username and password. Upon authentication a session-based cookie is saved to their browser as well as their username. No passwords are recorded in this process. Users are then returned to the initial page where your script can read their cookie, or in the case of Apache, read the remote_user environment variable. Using these values (remote_user or the cookie) as keys, you can then lookup patron information using MyLibrary::Patron.

Assuming you have pre-populated a MyLibrary instance with patrons, here is a “Hello, World!” sort of application using CAS authentication and MyLibrary:

#!/usr/bin/perl

# require
use CGI;
use MyLibrary::Core;
use MyLibrary::Patron;
use strict;

# define
use constant INSTANCE => 'mylibrary';

# initialize
my $cgi  = CGI->new;
MyLibrary::Config->instance( INSTANCE );

# get the patron's id
my $user_id = uc( $cgi->remote_user );
my $patron  = MyLibrary::Patron->new( username => $user_id );

# build a response
my $html = $cgi->p( 'Hello, ' . $patron->patron_firstname . '!' );

# return the response and done
print $cgi->header;
print $html;
exit;

Once you know a username, you can map it to related terms with the patron_terms method. From the list of returned terms you can retrieve lists of information resources, librarians, classes, etc to with which to populate a person’s page.

Facebook framework

I have (finally) written a working Facebook application, and I can now post here a skeleton for a MyLibrary/Facebook application:

# require
use CGI;
use strict;
use WWW::Facebook::API;

# initialize
my $cgi  = CGI->new;
my $fbml = '';
my $facebook = WWW::Facebook::API->new(
    api_key  => "foo",
    secret   => "bar",
    app_path => "http://url/to/your/script.cgi"
);

# get the user id
my $uid = $facebook->canvas->get_user( $cgi );

# Employ $uid as a key to do things like create a Patron
# resource. Use $uid to look up the user's interests, map
# them to facet/term combinations, and suggest resources.
# Use $uid to find the user's friends, and create more
# relationships.

# create a user interface by stuffing markup into $fbml

# output a HTTP header
print $cgi->header;

# update the user's profile page
print $facebook->profile->set_fbml( markup => $fbml, uid => $uid );

# redirect the user to back to their profile page
print $facebook->redirect( "http://www.facebook.com/profile.php?id=$uid", $cgi );

# done
exit;

I guess I will now have to write something…

New Year’s resolution

Happy New Year!

Among other things, open source software is about community. In an effort to build the MyLibrary community one of my New Year’s resolutions is to increase the number of MyLibrary mailing list subscribers by 20%. There are currently 149 subscribers. Therefore, by the end of the year I hope to increase that number to 179.

The mailing list is low-traffic but it does support a greater degree of discussion. Blogs are mostly one-way communication mechanisms.

If you are reading this blog, and if you haven’t done so already, consider subscribing to the mylib-dev mailing list by sending a message to listserv@listserv.nd.edu. In the body of the message put “subscribe mylib-dev [your name]” where [your name] is… your name. Alternatively, see the mailing list home page.