Evergreen 3.0 development update #2


Charles the male King Eider duck. Photo courtesy Arlene Schmuland.

As of this writing, 34 patches have been committed to the master since the previous development update. Many of them were bugfixes in support of the 2.10.11, 2.11.4, and 2.12.1 releases.

The 3.0 road map can be considered complete at this point, although as folks come up with additional feature ideas — and more importantly for the purposes of the road map, working code — entries can and should be added.

One of the latest road map additions I’d like to highlight in this update is bug 1682923, where Kathy Lussier proposes to add links in the public catalog to allow users to easily share records via social media. This is an example of a case where the expedient way of doing it — putting in whatever JavaScript Twitter or Facebook recommends — would be the wrong way of doing it. Why? Because it’s up to the user to decide what they share; using the stock social media share JavaScript could instead expose users to involuntary surveillance of their habits browsing an Evergreen catalog. Fortunately, we can have our cake and eat it too by building old-fashioned share links.

Another highlight for this week is offline mode… using only the web browser. This is something that would have been essentially impossible to implement back when Evergreen was getting off the ground, as short of writing a bespoke plugin, there was no way to store either the offline transactions or the block list. Nowadays it’s much easier; we can put pretty much whatever we like in a browser’s IndexedDB. IndexedDB’s API is pretty low-level, so Mike Rylander is working on using Google’s Lovefield, which offers a “relational database for web apps that can be serialized to IndexedDB. Here’s a snippet of how Mike propose’s to wrap Lovefield for use by the offline module:

/**
 * Core Service - egLovefield
 *
 * Lovefield wrapper factory for low level offline stuff
 *
 */
angular.module('egCoreMod')

.factory('egLovefield', ['$q','$rootScope','egCore', 
                 function($q , $rootScope , egCore) { 
    
    var osb = lf.schema.create('offline', 1);

    osb.createTable('Object').
        addColumn('type', lf.Type.STRING).         // class hint
        addColumn('id', lf.Type.STRING).           // obj id
        addColumn('object', lf.Type.OBJECT).
        addPrimaryKey(['type','id']);

Duck trivia

The Cornell Lab of Ornithology operates the All About Birds website, a great resource for birders. If you find yourself waiting for the test suite to finish running, you can pass the time solving one of their online jigsaw puzzles and learn how to identify some diving ducks.

Submissions

Updates on the progress to Evergreen 3.0 will be published every Friday until general release of 3.0.0. If you have material to contribute to the updates, please get them to Galen Charlton by Thursday morning.