Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SEA- Session at collaborator summit #32

Closed
mhdawson opened this issue Sep 7, 2022 · 11 comments
Closed

SEA- Session at collaborator summit #32

mhdawson opened this issue Sep 7, 2022 · 11 comments

Comments

@mhdawson
Copy link
Member

mhdawson commented Sep 7, 2022

The collaborator summit is comming up later this month - https://openjsf.org/blog/2022/09/01/openjs-collaborator-summit-join-us-in-dublin-virtual-october-1-2%EF%BF%BC/

Not sure who will be there from this team, but if there are enough people sumitting a proposal for a session here - https://github.com/openjs-foundation/summit might make sense.

@jviotti
Copy link
Member

jviotti commented Sep 7, 2022

Interesting. I can probably make it to Dublin and help host a session around SEA discussions. I'll submit a proposal

@jviotti
Copy link
Member

jviotti commented Sep 7, 2022

Done! openjs-foundation/summit#334 cc @RaisinTen @robertgzr @dsanders11 in case you are interested on traveling to Dublin

@mhdawson
Copy link
Member Author

mhdawson commented Sep 7, 2022

@jviotti thanks for submitting the proposal, looking forward to it.

@RaisinTen
Copy link
Contributor

I'd be excited to participate in the session but I won't be able to attend in-person, so I can probably help out virtually! :)

@ovflowd
Copy link
Member

ovflowd commented Sep 13, 2022

Excited to participate, will be attending in-person :)

@RaisinTen
Copy link
Contributor

RaisinTen commented Sep 20, 2022

Ping @nodejs/single-executable in case anyone else is also interested in participating (do remember to register in https://www.eventbrite.com/e/openjs-foundation-collaborator-summit-dublin-tickets-410575531467 for both in-person and virtual participations!). :)

Timing - Sunday, October 2, 15:00 - 17:00 CEST

We were thinking about doing something like a regular single-executable team meeting with more focus on the roadmap. What does everybody think? Better suggestions and ideas?

@arcanis
Copy link
Contributor

arcanis commented Sep 20, 2022

Hm, I have long-planned vacations on this week-end, and I'd have liked to attend the roadmap meeting 🙁

@jviotti
Copy link
Member

jviotti commented Sep 20, 2022

We'll make sure to record it @arcanis !

@jviotti
Copy link
Member

jviotti commented Oct 3, 2022

Thanks for hosting us @mhdawson and thanks everybody for attending (in-person and remotely!) Here are my notes from our conversation.


  • There is general agreement that we want to try as hard as possible to make SEAs truly "single executable" without additional resources
  • There is agreement that we don't want Node.js to support a single specific blessed VFS. Instead, Node.js should aim to provide the necessary hooks for supporting arbitrary VFS implementations
  • Teaching Node.js how to transparently work with a VFS on fs, require, import and child_process is non-trivial. We agreed that we do not want implementations to continue monkey-patching these modules and that monkey-patching will not work with ESM at all
  • Exposing hooking capabilities is a complex problem. While we agree that a VFS is essential for supporting dynamic requires, read operations, etc we believe that there is a significant number of Node.js CLIs that might not need this
  • Therefore, we can explore delivering an MVP without a VFS while we continue thinking about how we'll do VFS properly
  • This MVP would assume that apps are bundled into a single JavaScript file before injection
  • Node.js core would take a small patch to detect a single file embedded as a section and jump to it if found
  • In the interest of making Node.js binaries smaller without operating custom Node.js builds, we will move the ICU data into a new section, so it can be replaced by the ICU "small" data (or removed?) if needed post-compilation rather than at build-time
  • We expect that distributing Node.js injected binaries to user computers will come with challenges we want to solve in advance. For example, Windows PE binaries including plain JavaScript tend to be flagged by AntiViruses as trojans. We will start maintaining a list of these challenges and then try to figure out how to incrementally solve them.

Action Items

Other ideas (mainly for the record)

  • We could explore splitting different Node.js modules (like fs) into separate sections to strip them out for applications that do not need them
  • We could explore a different mechanism for loading native add-ons in order to embed them into the executable itself. For example, marking the corresponding sections as readable + executable and doing a long jump to the instructions corresponding to the add-ons instead of using dlopen, etc

Do let me know if I missed anything else!

@RaisinTen
Copy link
Contributor

@jviotti thanks for sharing the notes, it might be worth PR'ing this into https://github.com/nodejs/single-executable/tree/main/meetings

@jviotti
Copy link
Member

jviotti commented Oct 4, 2022

Makes sense! See #50

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants