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