This repository has been archived by the owner. It is now read-only.


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


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


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

M3: Integrate Node


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


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.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.