-= Building a Browser-Based Evergreen Staff Client =
-Bill Erickson <berick@esilibrary.com>
+= A Browser-Based Evergreen Staff Client =
+:author: Bill Erickson
+:email: <berick@esilibrary.com>
+:copyright: 2014 Equinox Software
+:duration: 35
+:data-uri:
+:backend: slidy
+:max-width: 45em
== Why Are We Talking About This? ==
-== What's Wrong with XULRunner? ==
+[role="incremental"]
+ * The time has come
+ * and gone
+ * The XULRunner version (14.0.1) used by Evergreen was released July 2012.
+ * As of February, the latest version of XULRunner is version 28.
+
+== Why Can't We Update XULRunner? ==
image:images/jonah-api.jpg[Used The Documented API]
Here we see a young Jonah Hill expressing frustration when his
-decision to choose a seemingly wise course of action backfires.
+decision to choose a seemingly reasonable course of action backfires.
'*' Consarn ye, XULRunner!
[role="incremental"]
* We've been treating XULRunner like a development platform, which defines
- features for developers, and then maintains the features going forward.
+ features for developers, and then maintains those features.
* XULRunner is more accurately a test bed for Firefox. As browser
features evolve to fall in line with other browsers, unused features are
discarded.
+ * Too bad we are using some of those "unused" features.
-== The Lost Features of XULRunner ==
+== The Big Lost Features of XULRunner ==
[role="incremental"]
* Remote XUL
- ** Gives XULRunner the power of a browser -- remote updates
+ ** Gives XULRunner the power to read UI templates from the server
+ ** Template changes do not require desktop application updates
* E4X (ECMAScript for XML)
** Used by MARC Editor
- * multipart/x-mixed-replace messages (streaming responses)
+ * multipart/x-mixed-replace messages
** Streaming responses
+== What do we do about it? ==
+
+[role="incremental"]
+ * We have a significant amount of work to do, regardless of how we proceed.
+ * Why not take this opportunity to improve our basic building blocks?
+
== Enter: The Browser ==
- * It will no longer be necessary to install an application to
- update the client. It all happens on the server.
- * Browsers, HTML, and JavaScript are all evolinging and rapidly
- improving, with lots of public and corporate momentum.
- * A wealth of resources
- ** It's hard to find a software developer that does not have a basic
- understanding of HTML and JavaScript.
- ** Using the same tools lots of others use means any problems we encounter
- have likely been solved 100 times over by others. Compared to
- XULRunner, the available resources (help, documentation, developers, etc.)
- is
+[role="incremental"]
+ * Remote updates
+ * The browser is the de facto client development environment
+ * Aggressive competition between browsers
+ * Developers as far as the eye can see
+ * Most of our problems have already been solved
+ * Browser interfaces work on mobile devices
+ ** Inventory on a Nexus?
+ ** Real-time holds pull list on an iPad?
+ ** Running reports in the browser built into your refrigerator?
+ * Much of the staff client is already developed as individual web pages.
+ * Browser Features are publicly documented and di
+ * Browser support for a given feature is a good litmus test for long-term
+ viability.
+ * Good support for assistive technologies, like screen readers, etc.
+ * Existing, proven tools for local template customization and translations.
+ * Deep links to resources (patrons, items, etc.)
-Any approach we choose will come with its own set of technical challenges.
-The trick is to find the best feature to technical hurdles ratio.
+== What Challenges Come with Using a Browser? ==
-== How do we avoid the XULRunner pitfalls? ==
+ * Seemlessly printing to different printers
+ * Secure file storage
+ ** offline transactions
+ ** workstation registrations
- * Only use features which are supported by multiple browsers.
+== Browser Developer Tools ==
-== Why Not Another Desktop Client? ==
+ * http://angularjs.org/[AngularJS]
+ * http://getbootstrap.com/css/[Bootstrap CSS]
-The tr
-No approach is free of technical hurdles. As as the browser goes, the
-benefits to challenges ratio is high.
+== AngularJS ==
-== What Challenges Come with Using a Browser? ==
+== Bootstrap CSS ==
- * Printing
- * Secure file storage for offline, workstation registration(s), etc.
+== Staff Client Prototype Project ==
-== What is AngularJS and Why Use it? ==
+image:images/browser-client-patrons.png[Patron Search]
-== What is Bootstrap CSS and Why Use It? ==
== Staff Client Prototype Project ==
-link to report
-http://wiki.evergreen-ils.org/doku.php?id=dev:browser_staff:manifesto
+ * http://yeti.esilibrary.com/dev/pub/web-staff-report.html[Prototype Report]
+ * http://wiki.evergreen-ils.org/doku.php?id=dev:browser_staff:manifesto[Browser Client Development Manifesto]
== Future Development ==
== WebSockets Streaming Example ==
-Comparing Patron Search with traditional XMLHttpRequest and WebSockets.
+Patron Search via XMLHttpRequest vs WebSockets.
-Skit?
+https://docs.google.com/a/esilibrary.com/drawings/d/1zt3S0vaaRBLj2fmPKhQjFUZ0tpA9cWsjpwqD-8LHnvY/edit
-https://docs.google.com/a/esilibrary.com/drawings/d/1U-MaNLBGJJFdfkdEl1zVDFLu8MsZyVq1-ii-7_r8jVM/edit
+== WebSockets Streaming Example ==
-https://docs.google.com/a/esilibrary.com/drawings/d/1_n1eNuQFUN5rr-21V4jo6rIs-cz9Aj-k75p4yqtcP0Q/edit
+ * With 50 search results
+ ** XMLHTTPRequest requires 102 messages
+ ** WebSockets requires 51 messages
+ *
-== WebSockets Streaming Example ==
+== What's Next? ==
- * With 50 results, XMLHttpRequest requires 102 messages, and
- WebSockets requires 51 messages.
+== Comments and Questions ==
////
vim: ft=asciidoc
////
-
-