Skip to content
This repository has been archived by the owner on Jul 3, 2018. It is now read-only.

Roadmap

Myk Melez edited this page Oct 7, 2016 · 12 revisions

Initial Goal

Positron is an Electron-compatible runtime based on Gecko. Its initial goal is to run the Tofino browser interaction experiment and provide an Electron-like development environment and deployment toolchain.

Milestones to Tofino

M1: Run Quick Start App

(DONE)

Run the Electron Quick Start app, including opening a browser window to the app's index.html page, opening Developer Tools for that window, dispatching events when the window closes, and handling app.quit().

This means implementing a Node-like module loader, stubbing the APIs that Quick Start entrains but doesn't actually need, and implementing the APIs that it does depend on, using Gecko and SpiderMonkey in place of Blink and V8.

M2: Run Basic Browser App

(DONE)

Run an app that implements basic browsing functionality (i.e. the ability to load a web page at an arbitrary location and click links in it to traverse the web).

This requires us to implement enough of the component on Gecko to support basic browsing functionality. It may also require us to implement some of the Electron APIs. The app we're using as a "basic browser app" is the webview/browser/ app in https://github.com/hokein/electron-sample-apps.

M3: Integrate Node

(DONE)

Integrate Node into Positron so it loads the Quick Start and Basic Browser apps via the real Node module loader.

This involves integrating SpiderNode into Positron and modifying Positron to use Node's module loader to load the Electron initialization modules for the main process. It doesn't necessarily require us to integrate Node into the renderer process, since the Quick Start and Basic Browser apps use relatively few Node APIs in that process, and Tofino eschews using Node in the renderer process entirely.

M4: Run Tofino

(IN PROGRESS)

Run Tofino in Positron, including its core and experimental browsing functionality.

Tofino registers keybindings and menus in the main process via Electron APIs, so we'll need to implement those APIs. It also uses Node APIs in the main process and the User Agent service to access the filesystem, SQLite, etc.; but the APIs in the main process should just work™ if we've integrated Node in the previous milestone. And the User Agent service now runs on its own bundled copy of Node, so Positron doesn't need to support that process.

M5: Pass Tofino Test Suites

Pass the Tofino test suites, which use Mocha and Spectron to do both unit and integration testing.

M6: Build And Distribute

Build, distribute, and maintain prebuilt packages for running Electron apps on Positron, so Tofino developers can develop, test, and run Tofino on Positron as easily as they do it on Electron.