REST, Post-Modern Computing, Agile Development - What is interesting about LibraryLink.
Jon Udell in an InfoWorld article gives a great example of the value of a RESTful view of the world which points out a primary reason that REST matters and where it matters the most.
In the example, Jon set up a LibraryLookup project to determine if he (plus lots of other smart folks on the web) could come up with an approach to linking ISBN numbers from Amazon with ISBN numbers at the library to determine where one could go to look at or check out the book. And voila, the ISBN bookmarklet was born. In just a couple of days it linked to one library system vendor...then extended to library to Amazon linkage...in a couple of days...then extended to other library system products...in a couple of days.
What is interesting is what made it possible. What made it possible was "meaningful URLs." What is a "meaningful URL?" In this case it is the exposure of the ISBN number for the book in the URL for the book on Amazon's site. When I go to Amazon and bring up the page for Joshua Bloch's Effective Java, I am redirected to a URL which contains the string "104-7983847-9519954". It is not identified as the ISBN, but one can infer that it is. Likewise, many library systems expose the books in their system via ISBN, so once you have the ISBN, then you can use the ISBN to lookup the book in your local libraries to see if it is available. All quick, easy and started over a weekend:). But it would not have been possible without the meaningful URLs. Without the ISBN, wiring this together would not have been nearly so easy.
Note that the use of the ISBN in the URL satisfies at least two of the principles in Peter Seebach's list of design principles for URLs: 1) URLs should be readable; 2) URLs should be predictable. This is also very much in line with the REST view of URLs which is well stated in a quote from Paul Prescod in a discussion on the topic (my emphasis added):
"URIs identify resources. Resources are conceptual objects. Representations of them are delivered across the web in HTTP messages. These ideas are so simple and yet they are profoundly powerful and demonstrably successful. URIs are extremely loosely coupled. You can even pass a URI from one "system" to another using a piece of paper and OCR. URIs are late bound. They do not declare what can or should be done with the information they reference. It is because they are so radically "loose" and "late" that they scale to the level of the Web."
The second key ingredient is the online community (whether it be weblog, discussion group, mailing list, individual email). When we want to solve a problem in the web age, we should go first to the communities that we know already have some skill, or in the case of weblogs, post a question and expect or regular community to answer. This near zero cost broadcast to specialized knowledge vectors really speeds up the process as the rapid fanout of communications increases both the likelihood of finding a solution as well as the speed with which the solution is found.
So, given a creative soul (Jon Udell) and some common sense (that URL looks like it has the ISBN embedded, wonder if I can use that to see what's in a library), and some readily available tools of the web (bookmarklets), it is possible to use sources of information in an interesting new way with wonderful interesting effect. Is this the best possible end-all and be-all solution to linking repositories of books (libraries in this case but could just as easily be used book sellers for example) with book information repositories (Amazon reviews, BN reviews, could be my own personal reviews as well). No, and that is the point. That is where REST and agility come together in this case. Particularly that part about "Working software over comprehensive documentation".
It IS a start from which other solutions can evolve. Contrast that with a 2 year forced standards march to figure out how to do the job, where that standards march is owned and managed by vendors of technology products in the space and it is obvious which approach fits the Post-Modern computing paradigm best:). Are ISBNs really the best data? Don't know, let it sort out with implementations. How should I really expose ISBNs? Don't know, let it sort out with implementation. What other info should be exposed? Don't know, let it sort out with implementation. And if "meaningful URLs" are the basis of that sorting out, I am confident that the result will be a diverse and vibrant community of tools that benefit everyone in the food chain.
Oddly enough, this points out another convergence that is happening and is best described by the "Notes on Postmodern Computing" article by James Noble and Robert Biddle. That paper argues (in a nice tongue-in-cheek way) that we have entered the post-modern world of computing where users/developers will piece together solutions using a wide variety of found technology which may not have been intended for that use. This is surely an example of that trend, and shows how the RESTian view helps it happen.
Jon asked three questions. Why was it unexpected? It is unexpected because the number of different ways to do these sorts of tasks on the web keeps expanding with our desire to do so. No planning required, so results are always unexpected until a solution of some sort is prototyped and in use. We humans just happen to be very good at this finding a new use for found things.
The second question was: In what environment would it be taken for granted? I would argue that any environment that exposes information via URL is likely to see this kind of spontanious or seredipitous activity because it doesn't require coordination and planning. The only constraint is trust. When information is made available via URL the producer will want to trust the consumer community to not abuse the resource and the consumer will want to trust the producer is not going to disappear. Another key aspect of the result is the readiness to hand of the community (whether by weblog, or discussion group, or mailing list). The availability of smart people 24/7 to answer questions and solve problems is critical.
The third question was: How do we create that environment? Here, the answer is that we already have. The web and URLs provide a perfectly good environment that is only limited by the creativity of those using it. The hard part is creating the mindset to think this way and explore this way, and to address the needs of both consumers and producers when the results exceed expectations:).