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