Skip to content

Latest commit

 

History

History
64 lines (47 loc) · 2.58 KB

2022-09-05.md

File metadata and controls

64 lines (47 loc) · 2.58 KB

Node.js Single-Executable Meeting 2022-09-05

Links

Present

  • Anna Henningsen @addaleax
  • Darshan Sen @RaisinTen
  • Jean Burellier @sheplu
  • Juan Cruz Viotti @jviotti
  • Maël Nison @arcanis
  • Tobias Nießen @tniessen

Notes

During this call, most of the discussions revolved around the problem of designing a general Virtual File System that would fit every necessary use case, ranging from compression support, native add-on interoperability, etc.

The key conclusion from the call is that designing a truly universal VFS that checks all the boxes that we care about and the ones that are probably unknown so far is not trivial. For this reason, we will attempt to make VFS user-defined for the SEA MVP. That way, we will have a better sandbox to play with VFS', see what people come up with and eventually bring back these learnings to the SEA project without getting indefinitely stuck at the VFS phase.

To accomplish this decoupling, we hope to:

  • Provide hooking capabilities to Node.js to allow developers to extend require(), fs and related key components of Node.js to support arbitrary virtual file systems without monkey-patching these modules like i.e. Electron, Yarn and PKG do at the moment.

  • Fix remaining issues on the Resource Injector current implementation (https://github.com/postmanlabs/postject) for injecting multiple sections of data. One of these sections will contain the VFS byte-stream, and the other one will contain the bootstrap script that can be injected to teach Node.js about the VFS of choice.

Once we have a better grasp on what the ideal VFS should look like, we will attempt to ship the SEA project with a blessed VFS implementation.

We also touched on what the definition of "Single Executable Application" means. Does it mean we will go out of our way to package every Node.js application as a single file (embedding native add-ons, etc on the executable itself)? Does an app that consists of the main executable along with sibling ".node" shared libraries still qualifies as a SEA? Clearly defining what an SEA is (and is not) is key for identifying the core constrains for the ideal VFS implementation later down the road.

Action Items

  • Make defining user-land VFS' feasible (given the plan outlined above)
  • Define and document what SEAs really mean

Upcoming Meetings

Click +GoogleCalendar at the bottom right to add to your own Google calendar.