E for Electron




Quick Intro

  • Rob Pocklington
  • Full-stack developer my whole career
  • Java, Ruby, Groovy, Scala, Node + JS
  • Worked at the usual suspects (MYOB, Sportsbet, Seek)
  • Currently @ NAB in Docklands (Internet Banking)

  • Overview

  • News
  • Web pulse check
  • Electron
  • History and Architecture
  • Features + Benefits
  • A Real Example
  • Issues
  • Closing Thoughts
  • Angular Pulse Check

  • Angular 2 RC4 (Dart split - again!)
  • Directives (as we knew them) are dead
  • Ionic 1.3 (NG 1.5) + 2 updates
  • Nativescript v2.0.0 - Telerik
  • Web Pulse Check

  • React v15.3.0 - Facebook
  • React-Native v0.30.0 - Facebook
  • Nativebase v0.5.3
  • Web Pulse Check (cont ...)

  • Aurelia 1.0 released - Rob Eisenberg
  • Arc welder app (Android on Desktop)
  • NW.js v0.16.0
  • Electron v1.30
  • Electron (formerly Atom Shell)

  • Invented by Github in 2013
  • Allows developers to create cross-platform desktop apps with web technologies
  • Electron (cont ...)

  • Abstracting Too Much?

  • GWT / EXT.js
  • Cordova / Phonegap
  • Ionic
  • Benefits

  • Combine fast native binaries with familiar web code
  • Multi-platform (Linux + Windows + Mac OSX)
  • Write-once, run anywhere (hello Java!)
  • Benefits (cont ...)

  • Builds off a stable base (Chromium, Node.js)
  • Download and install
    (just like the old days!)
  • Main Features

  • Superset of browser features
    IndexedDB, Local Storage etc.
  • System-level access (file / database)
  • No CORS issues / browser sandboxing
  • Main Features (cont ...)

  • OS Menubar / Windows / Drag + drop
  • System tray + Taskbar (eg. Slack / Rdio)
  • Auto-updates (or prompted updates)
  • Crash-reporting
  • Flash plugin support (via pepper-plugin)
  • Right-click context support
  • Developer Issues

  • Source code security
  • Supporting Updates / multi-versions / data-migrations

  • Comms between main and render threads
    (think: service workers)
  • User Issues

  • Users install from the Internet (safe?)
  • No fine-grained user permissions (eg. file / camera)
  • No brower sandbox, no warranty
    rm -rf /

  • Closing thoughts

  • Abstractions are getting better
  • APIs for browser + native hooks are improving
  • Huge market in this space
  • Growing demand for multi-skilled developers

  • ES6 + pure Javascript is the safest choice
  • Questions?

  • Thanks for listening!

  • Slides
    github.com/rpocklin/ng-melb-electron

    Twitter
    @angularjsMelb @rpocklin