Evergreen is a software system that helps library patrons find library materials, and helps libraries manage, catalog, and circulate those materials.
Open-ILS was an early codename for the Evergreen project, and is still used internally in the software.
Evergreen is open-source software, licensed under the General Public License (GPL). It can be downloaded for free. That's right. Free.
In 2005, the automation system for PINES, the lending network for Georgia Public Library Service (GPLS), was rapidly failing. GPLS, the Georgia State Library, and PINES approached other library software vendors, but every system evaluated, whether proprietary or open source, fell short in one way or another, usually due to fundamental design issues.
A few of the vendors GPLS met with admitted that they couldn't handle PINES' requirements, and didn't want to try.
We decided that instead of pointing fingers at vendors or complaining about the limitations of legacy software, we would write the kind of system we want our users to experience.
We share the software because of ideology and pragmatism. We're a mix of librarians and open source advocates, and we believe information should be shared. Just as books are for use, software should also be for use. Most libraries have stopped chaining their books to their stacks, and similarly, open source software gives you freedoms you won't find with proprietary software. Not only are you free to use it, you are free to improve it and share it, and free to hire anyone you want to support it. It's a win-win for everyone.
It works! We started with just the baseline functionality that the original users absolutely required so that we could migrate them from their failing system as quickly as possible. Now we're developing needed and desired features for new and old users alike, and the software is constantly evolving.
If you're here by accident and just need help using your library's online catalog, skip to the next question. However, it's possible you're here because you're interested in library technology and/or Evergreen specifically. Maybe you're just curious, or maybe you're writing an article, or maybe you want to help out. In any case, feel free to browse the website and join our mailing lists and introduce yourself!
There's a community of folks who are also interested in Evergreen and library technology, and we'd be happy to answer any questions you have.
This website is geared primarily toward librarians and software developers. If you are a patron and need help, please see a local library staff member.
To find a Georgia PINES participating library, please visit
The online catalog for PINES is located here: http://gapines.org/
Evergreen currently has modules for circulation, cataloging, web catalog, and statistical reporting. Evergreen also supports the SIP2 protocol for self-check and Internet/computer access control.
Evergreen's Acquisitions and Serials modules are currently under joint development with Equinox Software, the Georgia Public Library Service, British Columbia, and Project Conifer (University of Windsor, Laurentian University, McMaster University). Other features on our roadmap include a Z39.50 server (to sit atop the existing SRU service), inbound & outbound telephony, credit card processing, and academic features such as Reserves.
For the Acquisitions and Serials modules, we're aiming for a stable release near either by the end of 2008 or early 2009.
Here is a high-level roadmap.
There is both community and vendor support available. There is also community and vendor support available for major components of Evergreen such as the PostgreSQL database. Please inquire on our mailing lists.
Flexible representation of the organization hierarchy allows you to go as deep or as wide as needed with expressing tree-like relationships between physical and political locations. The system was designed for large consortia, but can trivially scale down to smaller libraries and library systems.
Fine-grained permission system for groups and users allows administrators to set their own balance between ease of use and strict control and accountability. Permissions may also have a depth associated with them that determines where in the organization hierarchy that they apply.
Separation of orthogonal information: As much as possible, we try to eliminate the overloading of concepts and fields, to obviate the need for such things as fake users, fake records, and the conflation of locations and statuses. This eases administration and statistical reporting, as well as software development.
At a glance patron summary saves you from switching needlessly between multiple windows.
Library-defined statistical categories for patrons: You can define arbitrary fields and field entries to record patron information at any level of the organization hierarchy. You're not pigeon-holed into using the hard-coded fields that Evergreen provides by default, and you never have to abuse or overload fields (for example, by putting special codes into zip code or birth date fields). These custom fields do not clutter interfaces for branches where they do not apply.
Notes and alert fields for patrons: You may annotate patron accounts with an unlimited number of notes, or set an alert message field that halts the circulation process on patron retrieval. Notes may also be made visible to patrons logged into the online catalog as a means of librarian to patron communication.
Separation of patron accounts and library cards: Lost cards do not necessitate the re-registration or cloning of patron accounts, which allows for unbroken statistics and account history.
Group management allows you to link patron accounts for such things as expressing familial relationships, and allows you to share canonical (edit in one place and it reflects everywhere) address information between patrons.
Circulation of non-cataloged and pre-cataloged materials allows you to circulate and gather statistics on uncataloged items without resorting to "fake" or brief records. Circulation statistics are not lost when a pre-cataloged item becomes cataloged.
Customizable receipt printing based on templates (header, footer, and line item) allows your receipts to follow library policy as far as what information does and does not get shown, instead of forcing you to bend policy to match the software. HTML support for printers that support graphics.
Fine-grained control of bills with groupings and line-items: Late charges are applied as they accrue, instead of being calculated for display. Payments can be applied to specific bills. If allowed, patrons can carry credit (pre-pay) on their accounts. Allows for more flexibility with accounting.
Customizable circulation rules for defining privileges based on library, patron, item, and bibliographic information allows for more flexibility than what's possible with a simple "matrix".
Library-defined statistical categories for items--you can define arbitrary fields and field entries to record item information at any level of the organization hierarchy. You're not pigeon-holed into using the hard-coded fields that Evergreen provides by default, and you never have to abuse or overload fields (such as a copy-level Item Type or a generic catch-all field). These fields may be made visible in the online catalog, and they do not clutter interfaces for branches where they do not apply.
Unlimited notes for annotating items. These may be made visible in the online catalog. Alert message field on items for halting circulation activities.
"Buckets" for grouping and sharing related items and bibliographic records--allows you to track and work with your materials in arbitrary ways and more easily collaborate with others.
Record merging functionality in bibliographic buckets allows for side by side comparison of MARC records before merging. This helps in choosing lead records and helps prevent accidental merges.
Batch Creation of Volumes/Copies across multiple branches--eases central cataloging efforts and reduces errors.
Powerful mechanics for moving volumes and copies within and across records and volumes--allows for batch movement to specified targets.
Customizable label printing based on templates--allows you to fiddle with layout when needed and forget about it when not.
Z39.50 client for record import and overlay--allows you to search and retrieve records from 3rd party sources.
Authority Validation of MARC records--helps you and your patrons better cross-reference records.
RSS feeds for record creation--allows you to monitor certain activity without resorting to reporting.
Google-like interface by default--provides familiarity and least surprise for patrons using the catalog with relevancy ranked search results. Stemmed and exact searches. "Did you mean?" feature based on authority data and a custom bibliographic dictionary helps mitigate search failures.
Related Subject, Author, and Series sidebars based on authority data and search results for exploring the catalog.
Integration with common web browsers, news aggregators, and search engines through RSS feeds, unAPI, OpenSearch semantics, and multiple XML and library formats for exporting data. Allows for library content to be pushed into areas outside the normal influence of libraries.
Plug-in support for "Added Content" vendors for providing such things as jacket cover images and reviews.
"Bookbags" allow patrons and librarians to group titles in arbitrary ways and share those groupings. Allows for such things as "My Favorite Books", "Books recommended to me", and "10th grade required reading list".
"Metarecords" for grouping different formats and editions of the same work together--allows for more concise search results and greater flexibility with placing holds on items.
"My Account" user services allows for such things as user initiated batch renewal, and the setting of notification options for holds. A PINES specific feature is automatic authentication with Galileo (http://www.galileo.usg.edu/) if logged in.
GUI based report builder--allows for point and click access to all fields in the database when constructing reports.
No special license fees for direct SQL access to the database. The database and the data schema are both open sourced.
What would you like?! Please let us know on one of the mailing lists at http://open-ils.org/listserv.php
Please inquire directly with the PINES team at firstname.lastname@example.org
Installation instructions are available on the wiki and are being continually improved. There are also vendors willing to install the system for you, migrate your data, train your staff, etc. There is a volunteer community willing to answer questions (please inquire on the mailing lists for either option). Evergreen currently runs almost unaltered from its Subversion layout, but there is a proposal for a more flexible system to take advantage of the independent and replaceable nature of certain software components.
It depends on your needs, but for simple evaluation any modern PC with at least 512mb of RAM should suffice for the server. The staff client would also be well suited with a modern 512mb machine. There is a wiki-page discussing system requirements in more detail.
The OpenSRF framework is inherently cluster-friendly, allowing the ad-hoc addition of inexpensive commodity hardware when system load dictates. The PINES implementation currently uses approximately 25 servers in production, and machines are added and removed on a regular basis as needed.
Evergreen uses PostgreSQL, the most advanced and robust Open Source RDBMS available, as its back-end data store. In order to provide load balancing for the Evergreen database, PINES has implemented Slony-I with PGPool as a clustering solution. Other clustering solutions exist for PostgreSQL, and may make sense in other environments.
In order to provide load balancing and high-availability at the OPAC and Staff Client level, PINES has implemented a Linux Virtual Server environment with five independent mini-clusters. This allows live updates of the entire system with no perceived downtime or interruption in service.
Evergreen is licensed under the GPL.
We use whatever particular development methodology fits the task at hand. For larger features and whole subsystems we do a lot of up-front design. For smaller parts, and for refinements of existing components, we use a more iterative approach. For a broad overview of how to get involved in the development community we suggest reading our procedures and conventions documentation.
The core of the business logic is primarily written in Perl, and much of the underlying infrastructure is written in C. The OpenSRF framework, however, is language agnostic and there are Python bindings for both client and server, and we plan to create Java bindings as well.
There is no newsletter, but we do maintain a development section on our blog. There are also both general and development mailing lists available at http://open-ils.org/listserv.php.