Library Software Manifesto

This is offered in an attempt to rationalize the relationship between libraries and library systems vendors, which is presently unhealthy. I encourage comments directly on this post (see below) or emailed to me directly.

Consumer Rights

  • I have a right to know what exists now and what is potential future functionality. — Marketing materials may tout a new product or a new version of a product, but I have a right to know what I will receive if I buy the product today.
  • I have a right to use what I buy. — For example, it should not cost extra to create another index of my data.
  • I have a right to the API if I've bought the product. — An application program interface (API) is simply a structured way for one application to communicate with another. In other words, the ability of a software program to send a structured query to another application and receive a structured response. Using the API for a product I've bought should not incur an additional charge.
  • I have a right to complete and accurate documentation.
  • I have a right to my data. — This includes the ability to bring forward not just my records, but also usage data (for example, how many times a book was checked out), since such information will be increasingly important for relevance ranking and other purposes.
  • I have a right to have read-only access to the database. — There are many good reasons why customers should be blocked from writing directly to an underlying database, but there are none for being able to only read from the database.
  • I have a right to not have simple things needlessly complicated.
  • I have a right to know the development path and timeline for a product I have purchased.
  • I have a right to take technical questions to staff capable of understanding and answering them.
  • I have a right to not be an involuntary beta tester.
  • I have a right to have my work on local customizations and settings preserved across upgrades.

Consumer Responsiblities

  • I have a responsibility to know the needs of my users.
  • I have a responsibility to put the needs of my users before my own.
  • I have a responsibility to communicate my needs clearly and specifically.
  • I have a responsibility to verify that the enhancement requests I make are really what I want.
  • I have a responsibility to assign enhancement priorities fairly. — Not every enhancement request can be top priority.
  • I have a responsibility to realize I'm not special. — Therefore we should try to come to agreement on how to do the same things so we can minimize the investment in writing software to help us do it.
  • I have a responsibility to select software using a fair and reasonable process. — Specifically, can we all agree to stop the pain of the RFP process? Please?
  • I have a responsibility to report reproducible bugs in a way as to facilitate reproducing them.
  • I have a responsibility to report irreproducible bugs with as much detail as I can provide.
  • I have a responsibility to view any adjustments to default settings critically.

Shared Responsibilities

  • We share a responsibility to begin from a position of mutual respect. — Only after a party makes an ass of themselves should we be free to make disparaging comments about them.
  • We share a responsibility to communicate well.
  • We share a responsibility to establish and maintain a rational enhancement process.
  • We share a responsibility to keep the needs of the end-user paramount.
  • We share a responsibility to lighten up and have fun! — I mean, no one dies in libraries. Let's get some perspective.

Note: Substantial contributions to this manifesto were made by Thomas Dowling and Carl Grant. This was first made public at the 2007 CODI Conference in Pittsburgh, PA, 8 November 2007.