Skip to content

Commit 1e76353

Browse files
authored
doc: add minutes for meeting 24 July 2024 (#1601)
* doc: add minutes for meeting 24 July 2024 Signed-off-by: Michael Dawson <[email protected]>
1 parent 5f73763 commit 1e76353

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed

meetings/2024-07-24.md

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
# Node.js Technical Steering Committee (TSC) Meeting 2024-07-24
2+
3+
## Links
4+
5+
* **Recording**: <https://youtube.com/live/BN7OrlNtQvo>
6+
* **GitHub Issue**: <https://github.com/nodejs/TSC/issues/1600>
7+
8+
## Present
9+
10+
* Antoine du Hamel @aduh95 (voting member)
11+
* Yagiz Nizipli @anonrig (voting member)
12+
* Benjamin Gruenbaum @benjamingr (voting member)
13+
* Ruben Bridgewater @BridgeAR (voting member)
14+
* Geoffrey Booth @GeoffreyBooth (voting member)
15+
* Joyee Cheung @joyeecheung (voting member)
16+
* Chengzhong Wu @legendecas (voting member)
17+
* Marco Ippolito @marco-ippolito (voting member)
18+
* Matteo Collina @mcollina (voting member)
19+
* Michael Dawson @mhdawson (voting member)
20+
* Moshe Atlow @MoLow (voting member)
21+
* Rafael Gonzaga @RafaelGSS (voting member)
22+
* Richard Lau @richardlau (voting member)
23+
* Robert Nagy @ronag (voting member)
24+
* Ruy Adorno @ruyadorno (voting member)
25+
* Paolo Insogna @ShogunPanda (voting member)
26+
* Daniel Rosenwasser (invited, from the TypeScript team)
27+
* Aaron Frost (invited, from the TypeScript team)
28+
* Jake Bailey (invited, from the TypeScript team)
29+
* Ryan Cavanaugh @ryanca (invited, from the TypeScript team)
30+
31+
## Agenda
32+
33+
### Announcements
34+
35+
* Marco, just released 20.16.0
36+
37+
### Reminders
38+
39+
* Remember to nominate people for the [contributor spotlight](https://github.com/nodejs/node/blob/main/doc/contributing/reconizing-contributors.md#bi-monthly-contributor-spotlight)
40+
41+
### CPC and Board Meeting Updates
42+
43+
*Extracted from **tsc-agenda** labeled issues and pull requests from the **nodejs org** prior to the meeting.
44+
45+
* No updates this week.
46+
47+
### nodejs/node
48+
49+
* module: add --experimental-strip-types [#53725](https://github.com/nodejs/node/pull/53725)
50+
* Dan Rosenwasser: we don't want to have fragmentation. People asked for disabling namespace/module support, but we got pushback.
51+
* Most typescript is not a subset and UX for many might be sub-optimal because of that
52+
* Should Typescript be able to run from node modules, ie should ts files be run from
53+
Dependencies.
54+
* hard for IDEs to reparse/everything in node_modules
55+
* syntax hazard. Don’t want to upgrade/degrade TypeScript just to use a dependency.
56+
* typescript source should not be the single source of truth.
57+
* so don’t think it’s a good idea to publish runnable ts in modules
58+
* Not saying that we should not pursue anything, but need to have good design
59+
consideration, otherwise doing a disservice
60+
* Ryanca
61+
* if you can run a ts file directly with Node.js, then what does that mean when you want to
62+
publish that code.
63+
* if Node.js does not run ts files in node_modules to force proper publishing, then …
64+
* how to support monorepo without running ts files in node_modules
65+
* Geoffery (chat): Support regular typescript is supported today via —import=tsx
66+
* Benjamin
67+
* concerns are reasonable, but want to emphasize that PR would be experimental, could take
68+
a while to solidify, and that can include addressing concerns over time.
69+
* (chat) Didn’t want to take everyone’s time - for Monorepo it’s not a new problem for Node+TS it’s something monorepo tools (and users) need to configure anyway?
70+
* Matteo
71+
* biggest struggle is workflow that many tools will run tests in typescript form, but then when in
72+
production you can’t, running through type stripper or in compiled form.
73+
* Agree that it should not run ts files in node_modules
74+
* My idea is either for local development or , don’t want to change publishing workflow. That
75+
should stay the same. Does mean that mono-repo users will have trouble. But those are
76+
complex already, and ok to leave it to them to figure it out. Instead cater for the smaller
77+
end user with what is in –experimental-strip-types
78+
* Benjamin (chat): (As in, this happening in Node doesn’t save any configuration regarding
79+
whether files are transformed, and users need to do that orthogonally anyway)
80+
* Marco (chat): Spreadsheet with ts features from all runtimes <https://docs.google.com/spreadsheets/d/1CfWrPo4PNYC1db0ucyHPb54XhbaB9S1zN15pFQPfVVQ/edit?gid=0#gid=0>
81+
* Marco: the PR is the first step.
82+
* agree that node_modules should not be included.
83+
* user want to use latest TypeScrpt features without been locked to a pinned version. The (type-strip) loader can be upgraded separately.
84+
* Robert: a bit worried about the experimental rabbit hole, were we cannot remove
85+
* Daniel: more worried about the messaging. Strong signal with the experimental feature landing. What’s the next step to push it to be more stable? This is actually people have been asked about?
86+
* Benjamin (chat): I’m not worried about the experimental feature since there is a very easy off-ramp with the loader as a “regular loader"
87+
* Michael (chat): What about starting with it as a regular loader, published as an npm from the nodejs org ?
88+
* Daniel what would the next steps be after it landed?
89+
* Marco: full typescript is already supported, this is to improve UX without having to go that far.
90+
* Geoffrey (chat): I don’t know why people would use that when tsx already exists and does more
91+
* Jake (chat): the monorepo thing can theoretically be solved with a custom monorepo specific condition (like what tshy can emit, what the zod dev has been trying for the v4 branch), though there are some big gotchas there
92+
* Matteo (chat): `tsx` does not do any type checking.
93+
* Geoffery (chat): Neither does our implementation
94+
* Michael: why not a loader published to npm
95+
* Marco: a loader already exists.
96+
* Jake (chat): I think people in general do not want the type checking aspect at all, honestly
97+
* Ryan (chat): People initially think they want typechecking pre-run and then quickly realize it's not a great idea
98+
* benjamin (chat): I think DX wise a regular loader wouldn’t address the users’ ask
99+
* Jake (chat): my hand is going to be to ask about the future of loaders, based on the comments from the last loaders meeting that we didn't have time to get into
100+
* Dan Rosenwasser (chat): Yes, we've generally seen a lot of people decouple type-checking from building
101+
* Matteo: is not doing any TypeChecking at runtime a good thing?
102+
* one side, something that should run before running your code, other side is its just a UI
103+
thing.
104+
* this is a key question that we should answer, and possibly give the user the 2 options
105+
* <https://github.com/nodejs/issues/43818>
106+
* ts-node versus tsx, much more usage of ts-node versus tsx which just does type stripping
107+
* Jake (chat): the answer to "do we want type checking at runtime" is "no"
108+
* Joyee (chat): I think that flow can be achieved with something like noderc or a preload config in package.json + tsx/ts-node
109+
* Joyee (chat): <https://github.com/nodejs/node/issues/53787> discussions about .noderc/preload in package.json
110+
* benjamin (chat): ts-node also often runs as a type stripper
111+
* Joyee (chat): I think tsx can also perform transforms?
112+
* benjamin (chat): As in, I’ve used ts-node/traspileOnly (even using swc)
113+
* Joyee (chat): It’s all configs
114+
* Antoine: could have both type stripping feature, as well as what was proposed in Matteo’s earlier issue. But hide the feature with a build flag.
115+
* Geoffrey (chat): tsx can do transforms. ts-node isn’t actively maintained anymore and can’t be used with —import
116+
* Marco: the PR has no compile flag. It’s a runtime flag.
117+
* Benjamin (chat): That’s fine, but if we’re measuring ts-node vs. tsx we can’t use ts-node as evidence for type checking
118+
* Jake
119+
* general consensus from TypeScript team at runtime is that typechecking should not be
120+
done. Other runtimes seem to take that approach as well.
121+
* future work to make loaders to use, some of the friction is that people don’t want to add
122+
command line for loaders. What is the work to auto-load loaders? If that was done would we
123+
need this feature in core? If it existed would people just use the existing loaders?
124+
* Joyee (chat): I think a “preload” field in package.json would be very simple to implement
125+
* Benjamin (chat): This “loader” work is essentially a more generic version of what Marco has been doing with amaro, it makes it “by default but replaceable and pluggable"
126+
* Benjamin, the work to pull out is along the lines of what was mentioned in terms of auto
127+
loading.
128+
* users are looking very specifically for TypeScript, not loaders to help with that.
129+
* Marco, since amaro has been separated out, makes supporting different options easier. What
130+
would make me happy to continue to cooperate as part of amaro, but don’t see it starting
131+
as something outside of core.
132+
* Jake (chat): well, >70% of JS users are actually TS users, so that sort of checks out
133+
* Geoffrey (chat): There was a PR for defining loaders in package.json, and likewise for the test runner configuration under a different key; we felt that it would be best to have an overall Node config file rather than isolated bits of configuration
134+
* Ruben, need it to just run out of the box, needs to be in core versus having to install
135+
something else.
136+
* Jake (chat): anything would be good, I think; I can imagine a monorepo wanting to set that above packages of course
137+
* Matteo:
138+
* What I described in the earlier issue is a preconfigured loader, if checks, if dep not installed, then throws nice error.
139+
* Joyee (chat): Is "preconfigured loader" an option here?
140+
* Michael: main difference between current proposal and what Matteo proposed in the earlier
141+
issue is the requirement for an npm install.
142+
* Geoffrey (chat): That’s already in progress. —env-file with support for NODE_OPTIONS was a precursor for a proper config file. Once we have the config file, then we can add things like a prompt to automatically add the configuration to set up tsx etc when the user tries to run a .ts file
143+
* Joyee (chat): If we just implement `”preload”: [“tsx”]` in package.json, it will just work out of the box. (Tsx is also a loader implementer, they implement both CJS hooks and ESM hooks)
144+
* Benjamin (chat): I think when I compare user experienced the default behavior “just working” is better DX than the default behavior an error being thrown.
145+
* Joyee (chat): e.g. to run TypeScript today, you already just do `node —import tsx test.ts`, and `preload` is just a on-disk config for `--import`
146+
* Geoffrey (chat): I think it’s not so simple as a “preload” field in package.json (what about all the various scripts in package.json, would it apply to all of them?) but we can definitely figure out a config file solution that can work
147+
* Benjamin (chat): Also I want to emphasize that we can land/iterate and see
148+
* Joyee (chat): If it’s just script support, `“preload”: { “test”: [“tsx”] }` would suffice
149+
* Daniel: opt-in at a package level basis.
150+
* Daniel, had experimented with a loader in the past, hit a few challenges, in particular in supporting commonjs, did think about whether configurations where needed to be read. In the end why compete with the existing solutions like tsx that do a good job
151+
* Antoine: can we go back to discussing Marco’s PR
152+
* what would need to change for it to land?
153+
* any concern with landing with a compile time flag,
154+
* Marco will not likely be used?
155+
* Daniel, from TypeScript team, would be a pain if it had a compile time flag.
156+
* any concerns with landing with only runtime flag ?
157+
* Benjamin, as long as we communicate that it is only there for experimentation. We should
158+
also agree that we would not move to stable with a thumbs up from TypeScript team.
159+
* Matteo, absolutely see the problems that Ryan is seeing. Happy to say npm publishing and
160+
mono-repos are out of scope. But value if we can do
161+
* Ryan, most concerns are around what is the next step for the users who want to publish, or
162+
run in mono-repo. Don’t see paths forward for that. Which is ok. Good to set expectations if
163+
some use cases are known as out of scope. If just local apps and scripts then good to
164+
experiment.
165+
* Jake (chat): I don't think locking it all the way behind a compile flag is really needed
166+
* Daniel (chat): I think Ryan's concerns are still big. There is no built-in "grow-up" story in the current implementation when it comes to npm publishing or running in a monorepo.
167+
* Benjamin (chat): Honestly at least for now - the “grow up” story is “build the code with TSC that generates .d.ts” and we likely should recommend tsc for that (we’re probably happy to have a blessed workflow in the docs)
168+
* Discussion continued after that, we had consensus and blessing to land the type stripping PR as experimental and consensus to listen to and apply feedback from the TypeScript team.
169+
170+
## Strategic Initiatives
171+
172+
* skipped as we ran out of time
173+
174+
## Upcoming Meetings
175+
176+
* **Node.js Project Calendar**: <https://nodejs.org/calendar>
177+
178+
Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.

0 commit comments

Comments
 (0)