]> git.evergreen-ils.org Git - OpenSRF.git/blob - doc/RELEASE_NOTES.txt
release notes for 2.5-alpha
[OpenSRF.git] / doc / RELEASE_NOTES.txt
1 Release notes for OpenSRF 2.5.0-alpha
2 =====================================
3
4 Supported platforms
5 -------------------
6 The following Linux distributions are supported:
7
8   * Debian 7 (Wheezy) and 8 (Jessie)
9   * Fedora 17, 18
10   * Ubuntu 14.04 (Trusty Tahr) and 16.04 LTS (Xenial Xerus)
11
12 New features in 2.5.0-alpha
13 ---------------------------
14
15 Chunking and bundling (LP#1612771)
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
18 Message Bundling and Chunking
19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
20
21 OpenSRF now supports message chunking, i.e., breaking up large OpenSRF
22 messages across multiple XMPP envelopes. This is implemented with a
23 new OpenSRF message type.
24
25 C, Perl, and Javascript libraries are taught how to reconstruct chunked
26 messages. The default chunking threshold is 50Kb, just a bit below the
27 default ejabberd max stanza size of 64Kb.
28
29 What was previously called chunking is now referred to as bundling:
30 packing multiple OpenSRF messages together in a single XMPP envelope,
31 as long as we believe more messages will be sent in the future and we
32 are below some threshold of combined message size.  The default for
33 that threshold is 25Kb.
34
35 With this change, it is no longer necessary to change the `max_stanza_size`
36 setting for ejabberd when installing OpenSRF.
37
38 Pass client timezone to server (LP#1485371)
39 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40
41 OpenSRF has long inspected the envelope of incoming requests for information
42 about the client's locale and made this information available to business
43 logic.  This is used, among other things, to drive transparent translation of
44 in-database strings within Evergreen.  In addition to locale, OpenSRF will
45 now respect client-supplied adjustment to the effective time zone in which it
46 operates, and provide that information to the business logic layer of
47 applications built on the framework.
48
49 Client
50 ^^^^^
51
52 As most clients that have time zones which differ from that of the server on
53 which the OpenSRF processes run are, in fact, web browsers, it is necessary
54 to include time zone detection directly within the browser.  This will be
55 stored in a cookie to be sent with all subsequent HTTP requests, and used in
56 all OpenSRF-over-HTTP calls made using the JavaScript bindings for OpenSRF,
57 including those for WebSockets communication.
58
59 For non-browser clients, such as support scripts written in Perl or other
60 scripting languages, the local system's mechanisms for detecting time zone
61 is relied upon.  For instance, Perl scripts can directly read the TZ
62 environment variable.
63
64 Additionally, the srfsh client now reads its local time zone from the
65 environment and passes that to the server. 
66
67 Server
68 ^^^^^^
69
70 Within OpenSRF services implemented in Perl, this information is now passed up
71 to the business logic layer via the TZ environment variable, and is reverted
72 to the server's value at the end of each request.  This allows automatic,
73 transparent use of the client's time zone in almost all cases, and provides a
74 system-normal access mechanism when direct access is required.
75
76 For OpenSRF services implemented in C, the time zone information is provided
77 as part of the request context object that is passed to implementation
78 functions.  In particular, this allows services that interact with a database
79 to set the time zone in which the database interprets timestamps to that of
80 the client.
81
82 Dispatch mode for method_lookup subrequests (LP#1631522)
83 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84
85 There is a pattern in the wild of using OpenSRF's `method_lookup()` facility
86 to decide between one of several local methods when delegating to pre-existing
87 logic.  Often times, we want to simply hand control over to another method,
88 but the output of a subrequest's `run()` is an array of results.  The caller has
89 to know if, and how, to restructure the result for the client.
90
91 Instead, we can now call `dispatch()` instead of `run()` and have OpenSRF session
92 control completely passed to the delegate code.  This way, the delegate code
93 need not know anything about its caller, and vice versa.
94
95 Example proxy server configurations (LP#1638651 and LP#1648188)
96 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
98 OpenSRF 2.5 comes with example configurations for using HAProxy or
99 NGINX as a reverse proxy for HTTP, HTTPS, and WebSockets traffic. This
100 can be useful for Evergreen systems that wish to use port 443 for both
101 HTTPS and secure WebSockets traffic.
102
103 Allow admin to specify where perl modules will be installed (LP#1631520)
104 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105 Add `--with-perlbase` option to the `configure` to specify
106 an alternative location for installing the Perl modules. This
107 can be useful for setups that want to run the Perl modules
108 from a shared filesystem or environments that need to run
109 multiple versions of OpenSRF simultaneously.
110
111 Users of `--with-perlbase` are responsible for ensuring that
112 `PERL5LIB` is set appropriately.
113
114 Other changes
115 -------------
116
117   * Drop support for Debian Squeeze (LP#1559121)
118   * Drop support for Ubuntu Precise (LP#1603708)
119   * Add support for Ubuntu Xenial (LP#1551090)
120   * Fix a bug with syslog configuration (LP#1473479)
121   * Fix OpenSRF debian_sys_config order for Debian (LP#1585041)
122   * Improvements to the installation documentation (LP#1382038)
123
124 Acknowledgements
125 ----------------
126
127 We would like to thank the following people who contributed to OpenSRF 2.5:
128
129   * Ben Shum 
130   * Bill Erickson 
131   * Chris Sharp 
132   * Galen Charlton 
133   * Jason Etheridge 
134   * Jason Stephenson 
135   * Mike Rylander 
136   * Remington Steed