Live data from Hacker News

Dear JavaScript

medium.com

191–200 of 248 posts

Re: Dear JavaScript

#191
What is going on in this thread?

"Just don't come here"

"Just turn off your notifications"

"But Angular 2/Babel 6/Literally all of Javascript really does suck"

"Developers can't take criticism"

"Open source communities are bubbles"

"Every community is like this"

"All people are like this"

"Sorry, but..."

Didn't our mommas teach us that when you apologize, you actually apologize? Even if you and I personally didn't do anything like this, this man here says there's a problem. Let's work on the problem.

When you use an open source project, you pay for it with your contributions to the project, whether those are code commits, bug reports, or just general feedback - and maybe that feedback doesn't need to be sunshine and roses all the time, but it should at least be concrete. Venting feels good, but it doesn't help anyone, not even yourself [0][1]. The least we can do is to stop normalizing knee-jerk, entitled, ad-hominem anger in our public fora. Because that's what this article is asking for. No one is saying we need to go out and fix all of human nature for a weekend project. We just have to stop upvoting rudeness. Is that so controversial?

[0] https://www.ncbi.nlm.nih.gov/pubmed/23249241 [1] http://psp.sagepub.com/content/28/6/724.abstract

Re: Dear JavaScript

#192

Earlier quoted context omitted.

>However, I am one of those people who think that Babel6 is terrible, that it "broke the web", and it marked the beginning of the entire JavaScript fatigue era. Granted, I wouldn't consider this a personal attack. But it definitely qualifies as negative and nonconstructive. I literally can't imagine how one could argue that they "broke the web"; that's completely ridiculous. If the migration path wasn't explained ver…

The migration path wasn't explained at all. This is fine, if there would be a nice documentation for new version. There wasn't, except for some scattered blog posts. This is fine, if new version offered some exciting new features or simplified thing a lot. But no, everything became significantly more complicated. This is fine, if Babel was a production library packed into final build, and modularity is necessary to s…

No arguments about the poor documentation on how to migrate; that's fair.

But we're straying from the point I was trying to make; your feedback was overly negative and hyperbolic.

We're all guilty of doing this at times, but it's not a constructive activity to engage in. I don't fault you personally for making one overly negative comment, but en masse it's harmful for the community.

Re: Dear JavaScript

#193

Earlier quoted context omitted.

The HN commenter literally threatened to sue the developer, even calling the developer a "good target". That sort of combative language is toxicity.

The response to his comment was immediate, unanimous, and unequivocal. HN mods responded, the comment was flagged and killed and downvoted to hell. Also, the way it was written may not have been the way he intended to come across. Read dang's comment, as well as his downthread comment. All things considered, HN is definitely not a bad place.

> All things considered, HN is definitely not a bad place.

While I am very critical of many aspects of HN, I have had some excellent discussion here. I just wish it were more consistently good.

Re: Dear JavaScript

#194

I don't want to distract from the main thrust of the article, which was that we should be decent to each other even with our criticism, but I think both his examples (Babel 6 and Angular 2) had something in common that lead to a lot more anxiety: they changed the essence of the software in a way that a major version bump is not enough to communicate. I'm speaking especially of Angular 2 here. It's essentially a compl…

The change in Babel 6 was this: $ npm install babel-cli $ babel src -d lib To this: $ npm install babel-cli babel-preset-es2015 $ echo '{ presets: ["es2015"] }' >> .babelrc $ babel src -d lib It really wasn't that big of a change. Also, we did give it a new name. It used to be 6to5, and we changed the name around the intention to make it more generic. Which Babel 6 was the culmination of. As for communicating with th…

Yeah, I don't think a name change would have fixed this case. Here you were just wrong. You failed to predict the impact of such a visible change and as such did not implement the change in such a way to minimize impact or use an appropriate migration plan so as to not surprise users.

Sadly the users most likely to be inconvenienced by a change like that are also those with the least knowledge of the product(like if you don't know what babel actually does, you aren't going to understand why the cli stopped working or why you need this new config file to make it do something). That leaves them frustrated and angry but with a poor understanding of why and what adequate solutions would be. There is nothing you can do about that, asking the community to be nice isn't going to help because most of your users don't think they are even in a community.

The only things you can do are try to anticipate them a bit, and to try and count the criticisms but ignore their contents(and search yourself for the deeper cause). Luckily the first part is sort of easy for JS projects because most of the active tooling development in JS is on things that have been done many times before. In this case you could have just looked to gcc and wondered for a bit why they still ship with --std=gnu90 by default, despite how maddening that must be for all the developers working on new features that go underused as a result. You could have looked at all of the other software that is stuck dragging forward dumb configuration systems with complicated defaults and layers of precedence instead of just asking users to fill in a few config fields on first run.

So I do want to say that I am so sorry on behalf of your users, and I really appreciate the work that you do. However that was a real mistake with babel and a big part of improving the interaction between you and your users unfortunately falls on you.

Re: Dear JavaScript

#195
post #156

Earlier quoted context omitted.

I do sincerely apologize if something I had said sounded offensive to you or anybody else. However, I can't help but ask the question: am I the one who resorts to personal attacks here?

Your comment reads (to me) as more attacks sandwiched between slices of insincere apologies. You likely did not mean it to read that way, but it does.

I just tried to note that I am not surprised by the amount of rage that Babel6 transition had caused, as well as that it has nothing to do with its author's person at all.

Inalienable right of the author: at any moment in time, they can say "this is my vision and my art — take it as is or leave it".

Inalienable right of the user/reader/consumer: judging author's work in whatever way or form they want, misunderstanding it, and generally abusing it in the ways never intended by author.

Corollary 1: a user has no right to demand anything from the author. If anything crosses their mind, they might ask the author. Politely. Very. And author has the right to refuse anytime, without explanation.

Corollary 2: an author has no right to demand that user has to be happy about their work, or use it the one correct way, or that ranting should stop. The author can only make suggestions and give advice. Politely.

Re: Dear JavaScript

#196

Earlier quoted context omitted.

Now I apologise if you've explained this elsewhere, but nowhere in your comment did you point out specific problems that you had with Babel 6. You called it "unintuitive", "terrible", "frustrating", and said that it "broke the web", but you never explain how or why. And I think that's part of the problem. It's one thing to suggest improvements, explain why something hurt, or how it caused an issue. It's another entir…

But why anybody even need a modular build tool? It's not like it is packed into final build, we don't need to shave off bytes. One size fits all works perfectly here. What is the killer use case for modularity?

You don't want to compile everything every time.

We target a platform that has arrow functions, we don't need to compile them in any more. Not a big deal for arrow functions, but a HUGE deal for async/await, or for-of statements (both of which will compile to a LOT of code which includes a pretty large amount of runtime-checking to work).

But there's also the fact that you do pack some of it into the final build. Many transformations include a lot of boilerplate, "helper" code, and in some cases big polyfills. Getting rid of those when possible is a huge bonus. And Babel 6 paved the way to allow you to incrementally remove those plugins one at a time as your target platform supported the feature natively (and at a speed that you are comfortable with). We currently only transpile async/await in one of our codebases, once that lands in node.js and is stable, babel will no longer be part of our pipeline. That's not something that we could have done easily with the Babel-5 system.

But it also takes babel from a "ES6 -> ES5" tool and makes it a general compiler. Babel now has plugins that will minify the code, plugins that will drop dead code, plugins that can perform "GCC style" optimizations in terms of IIFE removal, constant inlining, loop-unrolling, and more. Before the Babel-6 change, all of that would either need to package it's own AST parsing, or it's own bastardized version of babel. Now it's as easy to write plugins that do things like remove the prop-type code from a React project [0], or eliminate unnecessary closures [1].

There's also the ability to save space and install time on the developer machine. Not that big of a deal to me, but I hear others complain about it from time to time.

But those are just the reasons why I like that it's modular.

[0]https://github.com/oliviertassinari/babel-plugin-transform-r...

[1]https://github.com/codemix/babel-plugin-closure-elimination

Re: Dear JavaScript

#197
post #163

Earlier quoted context omitted.

>, no, that's not the same thing at all. Are you being literal? I wasn't saying that "repeated" meant lexical equality: string.compare("more positive", "optimistic") == TRUE Instead, I meant this: semantic_intent("more positive", "optimistic") == TRUE It's naive to think GavinMcG's "solution" of disapproving others negativity hasn't already been done thousands of times before across other disciplines and other forums…

Another big difference is that I'm not advocating for us to "repeat" that we should all be positive. It's not about public proclamation – it's about addressing individuals and their individual acts. That's what the communal discourse is made up of. Like you're saying, simply shouting "let's be nice" obviously doesn't work. I'll add another thing to my list of suggestions: be really deliberate about educating people o…

>Drive the downers out of JS-land,

This is not possible.

When you previously mentioned "nice communities", I thought that meant specific javascript forums. Now I see you meant to drive the undesirables out of entire Javascript language completely and force them into another language.

>You had been saying that even that shouldn't be bothered with.

I've never said this. I've never suggested that people shouldn't strive to have well-behaved communities that encourages constructive feedback. In the forums I moderated, negative rant posts were not allowed and deleted.

However, I see the confusion in interpreting my posts now. You and Mouq are focused on the "making a better world" angle. My posts were describing something else: the build up of anger about will always exist to frustrate people like JK regardless of the efforts to make a friendlier community. (E.g. see multi-decades history of discourse about C++/Java/Lisp/etc/etc)

Re: Dear JavaScript

#198
post #101

I usually don't comment about these type of posts, but I felt I had to speak out here when the author of this article has been an offender of the things he's trying to promote. Perhaps he has just "seen the light," but I have my reservations. Specifically, these lines got to me: >If we focus on solutions, focus on helping others, focus on sharing ideas, we’ll be in a better place. We’re all part of a broader communit…

I got to work on Lerna for about two months while working at Cloudflare in order to ship cf-ui. Otherwise it was in the middle of a period where I mostly backed out of doing open source because of frustration with the community from early this year. So if Cloudflare hadn't done that I probably never would have gotten involved.

I'm sorry I was often short-breathed when responding. I'm sorry I shut people down more than a few times. From my perspective Lerna was feature complete until Yarn was launched, and people were only ever making feature requests so I didn't see a big deal.

At one point I was frustrated and Bo made it seem like he was going to abuse his power as a contributor and I got freaked out and removed him. He only got more and more vocal from there and I just pushed him out entirely.

Since then I've started a new job, a new relationship, I've been exhausting myself writing new talks. I've had family problems, work problems, fucking country problems... a family member who has been having suicidal thoughts, family who have practically disowned me for being gay and refusing to take their shit.

To be honest, I've barely been getting by in life before we even start talking about open source. I have to take care of that first.

I'm sorry.

Re: Dear JavaScript

#199

Dear James, I understand that hearing rants about your brainchild that took so much hard work is hard and depressing. I was in your shoes, too. And being a head of popular open source project is very emotionally unrewarding, to say the least. And thank you for your hard work — like nearly every front end developer out there, I used Babel, and it did it job, eventually. However, I am one of those people who think that…

> Babel6 transition took three days of my life, filled it with misery and rage, lost me a customer,

No it didn't. Technical issues arise all the time, in all manner of projects, and are fixed all the time without losing business. _You_ lost the customer because either a) you didn't properly communicate the technical problems being resolved, and/or b) did a major version deploy without verifying and testing beforehand. Stop projecting your failures as a developer on someone else.

Open source software is powerful and comes with no guarantee - we are all provided with enough rope to hang ourselves. This freedom is what enables us to build really cool stuff. But it also means we're all responsible for using it correctly in our particular project contexts.

Re: Dear JavaScript

#200
post #197

Earlier quoted context omitted.

Another big difference is that I'm not advocating for us to "repeat" that we should all be positive. It's not about public proclamation – it's about addressing individuals and their individual acts. That's what the communal discourse is made up of. Like you're saying, simply shouting "let's be nice" obviously doesn't work. I'll add another thing to my list of suggestions: be really deliberate about educating people o…

>Drive the downers out of JS-land, This is not possible. When you previously mentioned "nice communities", I thought that meant specific javascript forums. Now I see you meant to drive the undesirables out of entire Javascript language completely and force them into another language. >You had been saying that even that shouldn't be bothered with. I've never said this. I've never suggested that people shouldn't strive…

> Now I see you meant to drive the undesirables out of entire Javascript language completely and force them into another language

Not at all. I misinterpreted what you meant in your concern over them forming other communities.

Post reply on HN