Skip to content

Commit

Permalink
Add notes
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
  • Loading branch information
jviotti committed Sep 5, 2022
1 parent 8c16e2a commit fb5f50f
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions meetings/2022-09-05.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,49 @@
* How are native addons going to interact with the VFS? [#29](https://github.com/nodejs/single-executable/discussions/29)
* ;

## 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

* **Node.js Project Calendar**: <https://nodejs.org/calendar>
Expand Down

0 comments on commit fb5f50f

Please sign in to comment.