]> git.evergreen-ils.org Git - working/Evergreen.git/blob - docs/RELEASE_NOTES_2_12.adoc
4c97540a90a203aadb8318095b49b763c625564a
[working/Evergreen.git] / docs / RELEASE_NOTES_2_12.adoc
1 Evergreen 2.12-beta Release Notes
2 =================================
3 :toc:
4 :numbered:
5
6 Upgrade notes
7 -------------
8 Evergreen 2.12 now requires OpenSRF 2.5 or later; certain functionality
9 will not work if you attempt to run Evergreen 2.12 on OpenSRF 2.4. Evergreen
10 2.12 also requires PostgreSQL 9.3 or later.
11
12 The stock schema upgrade script performs a browse reingest, recalculates
13 bib fingerprints, and remaps metarecords.
14
15 New Features
16 ------------
17
18
19
20 Administration
21 ~~~~~~~~~~~~~~
22
23
24
25 Additional SMS Carriers
26 ^^^^^^^^^^^^^^^^^^^^^^^
27 SMS carrier definitions are now included for Google Fi and
28 Republic Wireless. These will be automatically loaded when
29 installing a new Evergreen system; admins who wish to
30 add these definitions during an upgrade can use the following
31 email gateway values:
32
33  * Google Fi: `$number@msg.fi.google.com`
34  * Republic Wireless: `$number@text.republicwireless.com`
35
36
37
38
39 Bibliographic Fingerprint Improvements
40 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41 The bibliographic fingerprint will now incorporate subfield n and p from MARC
42 title fields to better distinguish between records of the same series that
43 may share the same title but have a different part. With this change, these
44 MARC records will no longer be grouped together in a 'Group Formats & Editions'
45 search.
46
47 The bibliographic fingerprint was also changed to better distinguish between a
48 the fields contributing to the fingerprint. This change will help the system
49 distinguish between a record for the movie _Blue Steel_ and another record for
50 the book _Blue_ written by Danielle Steel.
51
52
53
54
55
56
57 Batch Hold Targeter Speed-up and New Features
58 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
59
60 Adds a new open-ils.hold-targeter service, supporting new targeting options
61 and runtime optimizations to speed up targeting.  The service is launched
62 from a new targeting script, hold_targeter_v2.pl (default location:
63 /openils/bin/hold_targeter_v2.pl).
64
65 This code has no effect on the existing hold targeter, which is still
66 available as of this release and functions as before.
67
68 New Features/Options
69 ++++++++++++++++++++
70
71 * Adds a global configuration flag 'circ.holds.retarget_interval' for 
72   setting the hold retarget interval.
73
74 * --target-all option forces the targeter to process all active
75   holds, regardless of when they were last targeted.
76
77 * --retarget-interval option make is possible to override the new
78   'circ.holds.retarget_interval' setting via the command line 
79   when calling the hold targeter.
80
81 * --skip-viable option causes the hold targeter to avoid modifying 
82   the currently targeted copy (i.e. the copy on the pull list) for holds 
83   that target a viable (capturable) copy.  
84   
85   For skipped holds, no entry is added to the unfulfilled_hold_list.
86   The set of potential copies (hold copy maps) are refreshed for all
87   processed holds, regardless of target viability.
88
89   This option is useful for 1.) finding targets for holds that require 
90   new targets and 2.) adding new/modified copies to the potential copy 
91   lists (for op capture) more frequently than you may want to do full
92   retargeting of all holds.
93
94 * --newest-first option processes holds in reverse order of request_time,
95   so that newer holds are (re)targeted first.  This is primarily useful
96   when a large backlog of old, un-targetable holds exist.  With 
97   --newest-first, the older holds will be processed last.
98
99 * --parallel option overrides the parallel settings found in opensrf.xml
100   for simpler modification and testing.
101
102 * --lockfile option allows the caller to specifiy a lock file instead
103   of using the default /tmp/hold_targeter-LOCK
104
105 * --verbose option prints progress info to STDOUT, showing the number of
106   holds processed per parallel targeter instance.
107
108 * When configured, hold target loops cycle through all org units (with 
109   targetable copies) instead of repeatedly targeting copies at the pickup
110   library when multiple targetable copies exist at the pickup library.
111
112 * When configured, hold target loops prioritize (targetable) org units
113   first by the number of previous target attempts, then by their 
114   weight/proximity.  This effectively back-fills org units that had no
115   targetable copies during earlier target loops so that they are 
116   targeted as many times as other org units (to the extent possible, 
117   anyway).
118
119 Examples
120 ++++++++
121
122 * Traditional daily hold targeter with a value set for 
123   'circ.holds.retarget_interval'.
124
125 [source,sh]
126 --------------------------------------------------------------------------
127 /openils/bin/hold_targeter_v2.pl
128 --------------------------------------------------------------------------
129
130 * (Re)target non-viable holds twice a day, only processing holds that 
131   have never been targeter or those that have not been re-targeted in
132   the last 12 hours.
133
134 [source,sh]
135 --------------------------------------------------------------------------
136 /openils/bin/hold_targeter_v2.pl --skip-viable --retarget-interval "12h"
137 --------------------------------------------------------------------------
138
139 * (Re)target non-viable holds twice a day, processing all holds regardless
140   of when or if they were targeted before, running 3 targeters in
141   parallel.
142
143 [source,sh]
144 --------------------------------------------------------------------------
145 /openils/bin/hold_targeter_v2.pl --skip-viable --target-all --parallel 3
146 --------------------------------------------------------------------------
147
148
149
150
151
152 Add separate make target for translator
153 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
154 Add a separate make target during installation for translator to allow
155 for easier installation of i18n prerequisites.
156
157
158
159
160
161 Addition of missing permissions
162 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
163 Required permissions that were previously missing from the stock data have now
164 been added. If Evergreen sites have already manually added these permissions,
165 the upgrade script will remove the old permission and create the new one,
166 maintaining any maps to permission groups, with the stock permission ID.
167
168
169
170
171
172 get_org_unit_ancestor_at_depth Helper Added to Action Trigger Reactor Helpers
173 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
174 In action trigger templates it's now possible to call
175 helpers.get_org_unit_ancestor_at_depth($id_or_aou, $depth) in order to retrieve
176 a fleshed aou for the target aou's ancestor at the chosen depth. This could be
177 used to retrieve the name of the library system rather than a specific branch
178 name, for instance.
179
180
181
182
183 Removed unused selfcheck password setting
184 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
185 There was an unused duplicate selfcheck password setting that was removed
186 to avoid confusion over which library setting was supposed to be set to
187 enable passwords for selfcheck. After upgrading, verify that your library
188 policy remains consistent for this setting.
189
190
191
192
193
194 Credit Processor Stripe Settings Permissions
195 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196 Unprivileged users can retrieve organizational unit setting values for
197 setting types lacking a "view" permission.  When the feature adding
198 Stripe credit card processing was added, the upgrade script neglected
199 to add the VIEW_CREDIT_CARD_PROCESSING permission to the
200 organizational unit setting type.  This means that anyone can retrieve
201 and view the settings for Stripe credit card processing.
202
203 Any system that upgraded from Evergreen version 2.5 to 2.6 is
204 affected.  If you use Stripe for credit card processing, it is
205 strongly recommended that you apply this upgrade.  Even if you do not
206 use Stripe, applying this upgrade is still recommended.  If you did
207 not upgrade from version 2.5 to 2.6 of Evergreen, but started with a
208 later version, applying this upgrade is harmless.
209
210
211
212
213 Cataloging
214 ~~~~~~~~~~
215
216
217
218 New Access Points for MARC Merge/Overlay Profiles
219 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
220 Catalogers can now select a MARC merge/overlay profile to apply when
221 merging records in the (browser client) record bucket merge and Z39.50
222 record overlay interfaces. In both interfaces, if the user selects
223 a merge profile, the results of the merge are displayed, giving the
224 user the opportunity to choose a different merge profile or edit
225 the records involved prior to committing to the merge.
226
227 A new library setting, "Default Merge Profile (Z39.50 and Record Buckets)",
228 specifies the merge profile to preselect in the new merge profile
229 selectors in the record bucket merge and Z39.50 overlay logs. The
230 selectors will also remember the last selection that the user made.
231
232
233
234
235 Circulation
236 ~~~~~~~~~~~
237
238
239
240 Display Copy Alerts With In-House-Use
241 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
242
243 Two library settings are used to control the display of copy alert
244 messages or copy location check in alerts when recording in-house-use
245 in Evergreen.
246
247 Setting 'Display copy alert for in-house-use' to true for an
248 organization will cause an alert to appear with the copy's alert
249 message, if it has one, when recording in-house-use for the copy.
250
251 Setting 'Display copy location check in alert for in-house-use' to true
252 for an organization will cause an alert to display a message
253 indicating that the item needs to be routed to its location if the
254 location has check in alert set to true.
255
256 The settings are independent of one another because you may want to
257 display one and not the other when recording in-house-use.
258
259
260
261
262 Client
263 ~~~~~~
264
265
266
267 Active Date Column Picker Option
268 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
269 The active date will now be available as a column picker option in the Item
270 Status screen.
271
272
273
274
275 Punctuation Insensitive Patron Search
276 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
277 When performing a patron search, punctuation characters will be
278 ignored.  So if the patron is named O'Brien, then you can enter Obrien,
279 O'Brien, O Brien, etc. in the search box.
280
281 This behavior affects the Last Name (internally: family_name), First Name
282 (first_given_name), and Middle Name (second_given_name) fields of the search.
283
284
285
286
287
288
289 Touch screen improvements for Evergreen self-check interface
290 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
291 Improvements were made to the Evergreen self-check interface to make it easier
292 to use in a touch-screen environment.
293
294  * The pay fines link is now a pay fines button, matching other buttons on the
295 page.
296  * The checkboxes have been enlarged, making them easier to activate when using
297 a touch screen.
298
299
300
301
302
303 Trial Production Use of the Web Staff Client
304 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
305 The new web staff client is ready for trial production use in all functional
306 areas with the exception of serials and offline transactions. In addition to
307 many bug fixes in the areas of circulation, cataloging, administration and
308 reporting, Release 2.12 sees the following additions to web client
309 functionality.
310
311  * Acquisitions interfaces and functionality have been integrated into the web
312  staff client.
313  * Booking interfaces and functionality have been integrated into the web staff
314  client.
315  * Hatch, the program that will allow for unmediated printing to multiple
316  printers, sharing of workstation settings, and, eventually, offline 
317  transactions is now available. A windows installer for Hatch will be available
318  on the Evergreen-ILS Downloads page.
319
320 The Evergreen developers will keep pilot libraries updated about known web
321 client issues by posting known bugs to https://wiki.evergreen-ils.org/doku.php?id=dev:browser_staff:known_issues .
322
323 About Hatch
324 +++++++++++
325 Hatch is not required to use the web client, but should be used for workstations
326 that need to perform the following tasks.
327
328  * Unmediated printing to multiple printers. Workstations can print to multiple
329  printers without Hatch, but will need to click through a dialog to select a
330  printer. Hatch allows workstations to automatically print, without dialog, to
331  different printers. 
332  * Storage of workstation settings in a place outside the browser. Storing local
333  preferences in hatch will prevent tampering with preferences via the browser
334  developer tools and protect the settings from possible deletion if the browser
335  deletes settings in local storage.
336  * When offline functionality is available, hatch will be required to perform
337  offline transactions.
338  
339 Hatch is currently run as a Chrome extension and is not available in Firefox. To
340 use hatch on Windows, Evergreen sites should:
341
342  . install a java runtime environment version 8 (or higher) if not already
343  installed,
344  . download and execute the installer from the Evergreen downloads page, 
345  . open Chrome and navigate to chrome://extensions,
346  . enable _Developer Mode_ along the top right of the page,
347  . click the _Load Unpacked Extension_ button,
348  . load the directory at Hatch -> extension -> app,
349  .. In Windows, the default location for the app directory will be
350  C:\Program Files (x86)\Hatch\extension\app
351  . enable hatch features in the web client by going to Administration ->
352  Workstation Administration -> Print/Storage Service ("Hatch") and choosing
353  which services to use with Hatch.
354  .. this page will also inform you that hatch is connected. 
355
356
357
358
359 Infrastructure
360 ~~~~~~~~~~~~~~
361
362
363
364 Client Timezone Awareness
365 ^^^^^^^^^^^^^^^^^^^^^^^^^
366
367 Previously, adjusting the time zone in which a database session operates
368 could not be done in any way except globally, directly within the database.
369 However, allowing modification of the timezone parameter now supports
370 localization efforts for those consortia that span multiple time zones.
371
372 Implementation
373 ++++++++++++++
374
375 CStore and other services that interact with the primary Evergreen database
376 make use of the functionality provided by LP#1485371 in OpenSRF in order to
377 set the time zone configuration parameter available in PostgreSQL. Â This has
378 the effect of interpreting all timestamps written to or read from the database
379 in the client's time zone.
380
381 Within CStore (and related, C-based services), all stateful sessions make use
382 of this capability, setting the database time zone upon a successful CONNECT
383 message from the client. Â The time zone is reset to the database default when
384 a session is terminated either due to client DISCONNECT or server keepalive
385 timeout.
386
387 All stateless requests record the current database time zone, set the database
388 time zone to that of the client's, run the query, and then reset the database
389 time zone on each request that carries a client time zone value. Â It is expect
390 that this will not cause any noticeable increase in latency or query execution
391 time, as this setting is local to the specific PostgreSQL server backend process.
392
393 Within the Storage service, the timezone will be set automatically by a simple
394 wrapper method used by the existing method registration mechanism for method
395 publishing. Â Disconnect and error callbacks are registered to revert the time
396 zone setting within the database. Â This provides completely transparent time
397 zone manipulation for backend services that make use of open-ils.storage.
398
399
400
401
402 Public Catalog
403 ~~~~~~~~~~~~~~
404
405
406
407 New Subject Browse Index Definitions
408 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
409 New subject browse index definitions have been added that display the entire
410 heading as a unit with hyphens between terms instead of displaying individual
411 terms separately. 
412
413 For example, the browse heading for:
414
415 =650 \0$aCats$zUnited States$vCorrespondence.
416
417 will display in a single entry as:
418
419 Cats -- United States -- Correspondence
420
421 Rather than separate entries for Cats and United States. 
422
423 Name subjects will continue to display as separate entries because additional
424 work would be required for the heading to be punctuated correctly.
425
426
427
428
429 Advanced Search Limiters Enhancement
430 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
431 Advanced search limiters will no longer propagate to the basic search box in
432 the catalog. Instead, the limiters applied to the search will appear in the
433 left sidebar of the search results screen where they can be easily cleared by
434 clicking an 'x.' On a small, mobile device, the advanced search limiters can
435 be seen by clicking an 'x filter applied' link or by clicking the 'Refine
436 these results' button that typically shows facets to the user.
437
438 The selected limiters will be applied to any search from the search bar until:
439  * The user actively removes the filters from the search or
440  * The user starts a new basic or advanced search from scratch.
441
442
443
444
445 Arabic and Right-to-Left Language Support for the catalog
446 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
447 New stylesheets and other changes to the catalog to allow for 
448 better support of right-to-left (RTL) languages, such as Arabic.
449
450 Also add Arabic (Jordan) as a new supported language.
451
452
453
454
455 Ebook API integration
456 ^^^^^^^^^^^^^^^^^^^^^
457 Evergreen 2.12 supports partial integration with third-party APIs
458 provided by OverDrive and OneClickdigital.  When ebook API integration
459 is enabled, bibliographic records from these vendors that appear in your
460 OPAC will include vendor holdings and availability information.  Also,
461 when a user is logged in, the OPAC dashboard and My Account interface
462 will include information about that user's checkouts and holds for
463 supported vendors.
464
465 For API integration to work, you need to request API access from the
466 vendor and configure your Evergreen system according to the instructions
467 below.  You also need to configure the new `open-ils.ebook_api` service.
468
469 This feature assumes that you are importing MARC records supplied by the
470 vendor into your Evergreen system, using Vandelay or some other MARC
471 import method.  This feature does not search the vendor's online
472 collections or automatically import vendor records into your system; it
473 merely augments records that are already in Evergreen.
474
475 A future Evergreen release will add the ability for users to check out
476 titles, place holds, etc., directly via the OPAC.
477
478 Ebook API service configuration
479 +++++++++++++++++++++++++++++++
480 This feature uses the new `open-ils.ebook_api` OpenSRF service.  This
481 service must be configured in your `opensrf.xml` and `opensrf_core.xml`
482 config files for ebook API integration to work.  See
483 `opensrf.xml.example` and `opensrf_core.xml.example` for guidance.
484
485 OverDrive API integration
486 +++++++++++++++++++++++++
487 Before enabling OverDrive API integration, you will need to request API
488 access from OverDrive.  OverDrive will provide the values to be used for
489 the following new org unit settings:
490
491   * *OverDrive Basic Token*: The basic token used for API client
492     authentication.  To generate your basic token, combine your client
493     key and client secret provided by OverDrive into a single string
494     ("key:secret"), and then base64-encode that string.  On Linux, you
495     can use the following command: `echo -n "key:secret" | base64 -`
496   * *OverDrive Account ID*: The account ID (a.k.a. library ID) for your
497     OverDrive API account.
498   * *OverDrive Website ID*: The website ID for your OverDrive API
499     account.
500   * *OverDrive Authorization Name*: The authorization name (a.k.a.
501     library name) designated by OverDrive for your library.  If your
502     OverDrive subscription includes multiple Evergreen libraries, you
503     will need to add a separate value for this setting for each
504     participating library.
505   * *OverDrive Password Required*: If your library's OverDrive
506     subscription requires the patron's PIN (password) to be provided
507     during patron authentication, set this setting to "true."  If you do
508     not require the patron's PIN for OverDrive authentication, set this
509     setting to "false."  (If set to "true," the password entered by a
510     patron when logging into the OPAC will be cached in plain text in
511     memcached.)
512   * *OverDrive Discovery API Base URI* and *OverDrive Circulation API
513     Base URI*: By default, Evergreen uses OverDrive's production API, so
514     you should not need to set a value for these settings.  If you want
515     to use OverDrive's integration environment, you will need to add the
516     appropriate base URIs for the discovery and circulation APIs.  See
517     OverDrive's developer documentation for details.
518   * *OverDrive Granted Authorization Redirect URI*: Evergreen does not
519     currently support granted authorization with OverDrive, so this
520     setting is not currently in use.
521
522 For more information, consult the
523 https://developer.overdrive.com/docs/getting-started[OverDrive API
524 documentation].
525
526 To enable OverDrive API integration, adjust the following OPAC settings
527 in config.tt2:
528
529   * `ebook_api.enabled`: set to "true".
530   * `ebook_api.overdrive.enabled`: set to "true".
531   * `ebook_api.overdrive.base_uris`: list of regular expressions
532     matching OverDrive URLs found in the 856$9 field of older OverDrive
533     MARC records.  As of fall 2016, OverDrive's URL format has changed,
534     and the record identifier is now found in the 037$a field of their
535     MARC records, with "OverDrive" in 037$b.  Evergreen will check the
536     037 field for OverDrive record identifiers; if your system includes
537     older-style OverDrive records with the record identifier embedded in
538     the 856 URL, you need to specify URL patterns with this setting.
539
540 OneClickdigital API integration
541 +++++++++++++++++++++++++++++++
542 Before enabling OneClickdigital API integration, you will need to
543 request API access from OneClickdigital.  OneClickdigital will provide
544 the values to be used for the following new org unit settings:
545
546   * *OneClickdigital Library ID*: The identifier assigned to your
547     library by OneClickdigital.
548   * *OneClickdigital Basic Token*: Your client authentication token,
549     supplied by OneClickdigital when you request access to their API.
550
551 For more information, consult the
552 http://developer.oneclickdigital.us/[OneClickdigital API documentation].
553
554 To enable OneClickdigital API integration, adjust the following OPAC
555 settings in config.tt2:
556
557   * `ebook_api.enabled`: set to "true".
558   * `ebook_api.oneclickdigital.enabled`: set to "true".
559   * `ebook_api.oneclickdigital.base_uris`: list of regular expressions
560     matching OneClickdigital URLs found in the 859$9 field of your MARC
561     records.  Evergreen uses the patterns specified here to extract
562     record identifiers for OneClickdigital titles.
563
564 Additional configuration
565 +++++++++++++++++++++++++++++++
566 Evergreen communicates with third-party vendor APIs using the new
567 `OpenILS::Utils::HTTPClient` module.  This module is configured using
568 settings in `opensrf.xml`.  The default settings should work for most
569 environments by default, but you may need to specify a custom location
570 for the CA certificates installed on your server.  You can also disable
571 SSL certificate verification on HTTPClient requests altogether, but
572 doing so is emphatically discouraged.
573
574
575
576 Links to Other Formats and Editions
577 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
578 The record summary pages in the catalog will now link to other formats and
579 editions of a title. The links will allow users to quickly jump to another
580 format of the title or an edition written in another language. 
581
582
583
584
585
586 Metarecord Search Improvements
587 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
588 This release brings several improvement to the Group Formats and Editions
589 search. 
590
591  * Limiters on the advanced search page can now be successfully applied to 
592 Group Formats and Editions searches,
593  * Electronic resources are now retrievable through these searches,
594  * Paged navigation has improved.
595
596
597
598
599 Allow Metarecord Search by default
600 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
601 Before the TPAC, a site could configure the public catalog to use metarecord searching
602 by default, via a configuration file.  Here we bring that back.
603
604 A new setting called search.metarecord_default is present in
605 templates/opac/parts/config.tt2 to enable this feature.  By setting this to
606 a true value (normally 1) the TPAC will silently include the #metabib search
607 modifier in the search form on any interfaces that do not have a UI component
608 that allows the user to control the setting.
609
610
611
612 RDA Improvements
613 ^^^^^^^^^^^^^^^^
614  * Author fields are now normalized to strip ending periods so that authors from
615 RDA and non-RDA records are collapsed in browse and facet headings.
616  * All author/contributor roles will now display in the record detail page.
617 Previously, some of the roles were omitted or were duplicated.
618
619
620 Obalkyknih.cz Integration
621 ^^^^^^^^^^^^^^^^^^^^^^^^^
622 Evergreen now integrates with Czech added content provider obalkyknih.cz. A new
623 setting called obalkyknih_cz.enabled is available in
624 templates/opac/parts/config.tt2 to enable this new feature.
625
626
627 Acknowledgments
628 ---------------
629 The Evergreen project would like to acknowledge the following
630 organizations that commissioned developments in this release of
631 Evergreen:
632
633 * Bibliomation
634 * British Columbia Libraries Cooperative
635 * C/W MARS
636 * Georgia PINES
637 * King County Library System
638 * Linn Libraries Consortium
639 * MassLNC
640 * Pennsylvania Integrated Library System
641 * Pioneer Library System
642
643 We would also like to thank the following individuals who contributed
644 code, translations, documentations patches and tests to this release of
645 Evergreen:
646
647 * Ben Shum
648 * Bill Erickson
649 * Billy Horn
650 * Blake Henderson
651 * Bob Wicksall
652 * Chris Sharp
653 * Christine Burns
654 * Christine Morgan
655 * Clare Sobotka
656 * Dan Pearl
657 * Dan Scott
658 * Dan Wells
659 * Debbie Luchenbill
660 * Galen Charlton
661 * Jakub Kotrla
662 * Jane Sandberg
663 * Jason Boyer
664 * Jason Etheridge
665 * Jason Stephenson
666 * Jeanette Lundgren
667 * Jeff Davis
668 * Jeff Godin
669 * Jennifer Pringle
670 * Jillianne Presley
671 * Jim Keenan
672 * Jonathan Schatz
673 * Josh Stompro
674 * Kate Butler
675 * Kathy Lussier
676 * Kyle Huckins
677 * Linda Jansová 
678 * Michele Morgan
679 * Michelle Purcell
680 * Mike Rylander
681 * Nawras Othman
682 * Remington Steed
683 * Rogan Hamby
684 * Terran McCanna
685 * Thomas Berezansky
686 * Victoria Lewis
687
688 We also thank the following organizations whose employees contributed
689 patches:
690
691 * British Columbia Libraries Cooperative
692 * Catalyst DevWorks
693 * C/W MARS
694 * Equinox Open Library Initiative
695 * Georgia PINES
696 * Indiana State Library
697 * The Institute for the Study of Totalitarian Regimes, Prague
698 * King County Library System
699 * Lake Agassiz Regional Library
700 * Laurentian University
701 * Linn-Benton Community College
702 * MassLNC
703 * Merrimack Valley Library Consortium
704 * MOBIUS Consortium
705 * National Library of the Czech Republic
706 * North of Boston Library Exchange
707 * Pioneer Library System
708 * Rodgers Memorial Library
709 * Sigio
710 * Traverse Area District Library
711
712
713 We regret any omissions.  If a contributor has been inadvertently
714 missed, please open a bug at http://bugs.launchpad.net/evergreen/
715 with a correction.
716