-
Notifications
You must be signed in to change notification settings - Fork 18
discussion points: Tooling group feedback session #59
Comments
One that came up offline (and I think I may have mentioned briefly) in the "what isn't working" category is portability. I'd like to expand on that a bit, from the perspective of a tooling author.
|
Feature requests
|
I also want to cc everyone else who participated in that session; please add anything here you want to discuss, but didn't get a chance to. To all of you: This issue is for gathering topics of discussion for future Tooling-specific Node.js user feedback sessions. Your input is greatly appreciated! Please cc anyone else who might want to participate! 😁 |
IMHO #59 (comment) is extremely important. |
cc @bahmutov, sorry misspelled it |
Really hoping someone else can add something. I'm happy to drive the bus here, but there's no point in driving an empty one. |
Going to ping a few people who I know that work on OSS projects that use Node.js for tooling in some cases. To those I'm pinging: we're gathering points to discuss about Node.js + the tooling ecosystem and what we could do better/what's already working well. Would ❤️ your input if you've got the time to share it–and no worries if you don't! @johnpapa may have some observations from the Angular core community 🤔 Not sure how much RxJS uses Node.js for its tooling, but @ladyleet may have some input (or know someone from RxJS who does!) Pinging @zeke because I know he does a LOT with Node.js tooling, and works on Electron which has some tooling built in Node.js as well. @tzmanics may have input from NativeScript/Angular + Node.js backgrounds. @mxstbr does some pretty impressive work in the React ecosystem and always has super good feedback. |
Yeah for sure - well you know what is really missing is pinging the folks working on CLIs - they use Node.js a lot of course. This is something I really hope that in the next year or ongoing we can bring to light. It is one of the most essential and important use cases of Node.js IMO. For RxJS - @benlesh can provide more info. |
I know I have a fair amount of thoughts here but I think @zertosh has a superset of my thoughts so pinging him instead. I think the main one I’ve talked to @zertosh about is the overhead of starting up a node script. Making scripts fast is hard and one of the main things driving us to experiment more with other languages for scripts. |
@TheSavior thanks much! @zertosh love to have you as a part of this conversation. |
I'm not sure I have much to add beyond what @boneskull already mentioned regarding portability. That's the only significant pain point that's coming to mind. I personally don't mind pulling in separate packages, but when a built-in exists it's frustrating when it doesn't work cross-platform. A lot of people have to learn that the hard way. |
I am one of the lead engineers for Appcelerator Titanium SDK's Node.js-based CLI's and tooling, which began 6 years. I went through our projects and analyzed the boilerplate functions and dependencies and here's my first pass list of things:
|
@boneskull We are looking at 2018-06-08 for the next session. |
I work on internal developer tools at Facebook - mostly on CLI tooling for developers working in our monorepo. There's a huge ecosystem of tools in this space, and some of it is written in JS running on Node. Other tooling is written in Python, PHP/Hack, Bash and even Rust. So Node often gets compared to these (I won't go into that here).
|
@zertosh great feedback, thanks. "Node.js CLIs at scale" brings up some pain points I hadn't heard before. |
@cb1kenobi Thanks! I was wondering if you can explain this further:
I'm not sure what you mean by "jail" or how what you want is different than this: try {
vm.runInNewContext('throw new TypeError()', global);
} catch (e) {
console.log(e instanceof TypeError); // true
} |
@boneskull When I did it, I didn't use I tried defining my own global object, but I found myself passing globals in such as vm2 wraps everything in a proxy and wires up this contextify/decontextify thing that tries to convert objects across context like this https://github.com/patriksimek/vm2/blob/master/lib/contextify.js#L216-L232. Aside from the performance issues, vm2 suffers from many issues in which I finally gave up when I ran into patriksimek/vm2#62. I ended up spawning a Node script that runs the untrusted code in a subprocess and I watch for the process exiting abnormally and stdout/stderr. Turns out this works better for our use case because we can run the code with a specific Node.js version. I have other use cases for a sandbox. My app supports |
@cb1kenobi Ah, yeah, I understand now. I've gone down the same path to vm2 myself. 😝 |
ember-cli is implemented in node, this enables us to:
|
@stefanpenner Thanks. I've also had struggles with exit hooks. Core could provide a better experience here. (Discussion around npm is out-of-scope for us, however.) A proper async module loader seems like it could improve startup time of CLIs (I'm not current on what's happening w/ Modules, unfortunately). |
Thx @stefanpenner for chiming in! |
Hi there, Angular CLI lead here.
Angular CLI is built using TypeScript and runs using Node. It's a CLI tool to create, manage and deploy Angular applications and libraries. We do not have an addon system (yet), but we do use libraries for workflows (Schematics) and tasks (Architect) which allow extension points from the user. These are dynamically loaded on a need basis.
Reusability of knowledge between framework developers and tooling developers. Easy to setup on Mac and Linux. The community is vast and eager to help, which is always nice.
Debugging story, LTS, release cycle (clear and to the point), respect for semver.
Native support for I think in general Node itself is in pretty good shape. |
@hansl thank you so much! :) |
@boneskull we use: |
We're now starting a user feedback session. Join us at https://zoom.us/j/168395218 or just watch at https://youtube.com/c/nodejs+foundation/live |
@hansl @stefanpenner @zertosh please join! |
I understand the desire for |
@boneskull oh man, I wish I would have known. I would have attended, any future sessions planned? |
@jsumner This is a good point |
@stefanpenner yes but no dates yet. it will not be the same time slot. |
I would like to add an additional FS related area of improvement: Directory/File Traversal.
With 1. user-land could implement even more efficient file system traversal and globing modules. Improvements to walk-sync would be palatable For build tools, utilizing parallelization to make full use of available hardware if is important, today we use. child_process, tomorrow we will hopefully use worker_threads. But given these two solutions, there exist some pain points.
child_process.exec short-commings. Today, I have found myself porting many modules to simply use execa over
|
@boneskull keep me posted, I will make time (as long as I know ahead of time) |
I watched the youtube live stream and I agree with most of the issues brought up. Basically, bring these into core
Also, Although it seems like 32bit is slowly going away? Notes here: #70 |
I just thought of something. We use Babel to transpile and we embed the source maps at the end of each file in the Today we have to use |
it’ll be generally hard to argue that the savings of 940KB is worth the maintenance of taking that on in core. are we talking about resource-constrained systems? poor internet service? is there another good reason? |
I was going through my packages trying to slim them down and nearly every one of them depends on Being that source maps will probably never go away, I don't think it's a horrible idea if there was first class support for them, though I'm fine with leaving this up to a community module. With TypeScript and Babel being relevant these days, perhaps others would like it if Node could take on the burden of source maps. As I'm poking around my various dependencies, it seems the larger packages are those where the author bundled their compiled/transpiled source and the original source. This seems to be especially the case for TypeScript based packages. Some packages even bundle tests. I'm sure some people appreciate the original source and tests being bundled with the package, but I prefer my dependencies as lightweight as possible. |
Following up on the first tooling user feedback session, we want to gather points of discussion for future sessions.
From #38, these were the original questions from the first session:
We didn't have enough time to cover everything we wanted to--and give everyone a chance to speak--so future sessions should be more limited in scope.
I'll use this issue to gather ideas, and distill them into a "living document" of sorts (a Markdown document, living in this repo) to be used going forward.
cc @dshaw @bnb to confirm I understood this correctly. 😄
ALSO, PLEASE UNDERSTAND: This issue isn't a platform for discussion; we're just making a rough list of topics to discuss.
The text was updated successfully, but these errors were encountered: