I have begun creating a MyLibrary Web Services interface, and I think my head is going to explode. See: http://dewey.library.nd.edu/mylibrary/demos/reading-list/web- services/ This past January I attended Open Repositories, 2007. One of my take- aways was that Fedora was becoming popular because it supports a Web Services interface. Given such an interface, programs written in Perl, PHP, etc., can interact with Fedora even though Fedora is written in Java. MyLibrary is written in Perl but increasingly people don't seem to be doing Perl programing. Things like Ruby, PHP, Python, or even ColdFusion seem to be more popular. Yet, I have found that MyLibrary's foundation has proven to be quite useful, and we have been able to use it for an increasing a number of "digital libraries". If I could write a Web Services interface to MyLibrary, then MyLibrary could be supported to a greater degree. Hmmm... I then asked this community for advice. Overwhelmingly I was told to read RESTful Web Services by Leonard Richardson and Sam Ruby. This book strongly advocates exploiting the existing features of HTTP to implement RESTful Web Services. This means URL's are intended to describe information objects, and processes done against these objects are to be specified via HTTP methods: PUT (create), GET (read), POST (edit), DELETE (remove), and HEAD (about). In other words, URL's are NOT to include "actions" or "verbs". This is called "overloaded POST". Apparently URL's such as the following are a no-no: http://example.edu/books/?cmd=delete&id=101 Instead you are expected to send the following HTTP request: DELETE /books/101 http://example.edu/ The reason behind these kinds of RESTful implementations -- called Resources Oriented Architecture -- seems to be simplicity on the client side. If "standard" operations such as read, write, edit, and delete are implemented using PUT, GET, etc., then clients only need to know how to process the data returned from the server. All other negotiations are handled by the HTTP protocol such as authentication and error reporting. Even the content type is handled by HTTP. Send me RDF. Send me ATOM. Send me RSS. Send me XHTML. Send me JSON. The URL above points to my beginnings of read-only RESTful Web Service using ROA. It only supports GET. The URL's created by the script are very readable and easily bookmark-able. The data returned is strict XHTML, as advocated by the book. The content is liberally sprinkled with span elements denoting specific types of values: facet names, term names, term notes, resource notes, resources locations (URL's), patron user names, etc. Once I get all the objects exposed I will work towards delivering the content in additional flavors of data, probably RDF and/or JSON. Once that is done I will implement create, edit, and delete but this will entail authentication. Once that is done I will be able to create any number of MyLibrary instances, configure my Web Services script to expose the additions, and allow I/O against the underlying database via "standard" HTTP using any number of client applications. Wish me luck. In summary, RESTful Web Services using ROA (Resource Oriented Architecture) appears to be a "purist" approach to using the Web. It is challenging to implement because user-based clients do not support PUT and DELETE, but then again, RESTful Web Services are primarily intended for acomputer's consumption, not a human's. It is relatively easy to write [insert your favorite language here] programs that can implement PUT, DELETE, etc. -- Eric Lease Morgan University Libraries of Notre Dame