Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
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
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 https://github.com/hokein/electron-sample-apps.
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
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.