Hacker News new | past | comments | ask | show | jobs | submit login
Dear JavaScript (medium.com/thejameskyle)
429 points by johnwards on Dec 5, 2016 | hide | past | favorite | 235 comments



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 completely different framework. You don't expect going from Postgres 8 to Postgres 9 that the underlying query language is going to be switched out for a different one. Regularly communicating with your users, as Angular and Babel did, only reaches the engaged part of the community. A lot of workaday programmers are not that deeply engaged. You're just moving their cheese, and it makes them mad.

A better approach is to spin off a new system and give it a new name. This is what happened with Express and Koa, and it gives you a way to gauge whether people actually want the change you're making or not. I predict Angular 1 is going to be the Windows XP of front end development: lingering on for much longer than anyone expects. Slow and principled change is not a common thing in Javascript-land but it is what legions of software engineers expect. A lot of front-end development, like it or not, is being done by full-stack engineers or other engineers who are not front-end developers exclusively. Asking your echo chamber if they like your ideas is not really a sufficient sounding process, especially if you're making a deep cut.


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 the community. Yeah, we can't address everyone at once or even reach them all. We could shove it in their face (and we do) and still a significant portion would still ignore us (and they do). There's not much we can do about that. But they shouldn't come to us and say that we never said anything about this, because yes we did.

Also, the article I referenced about Angular 2 was not talking about the transition from Angular 1 to 2. It was talking about ng2 as its own thing, criticizing it's design more than anything (just in a really shitty way).


James, I reached out to Sebastian, on multiple occasions in January to apologize. Phabricator via the chat feature, Twitter(blocked), email, etc. I can't even remember all the mediums. So if you can pass it a long that would be cool. Sure, Sad state got a little personal, but I'm not too stubborn to admit when I'm wrong. I'm sorry it affected the team so much, obviously not my intention. Just tried to use hyperbole to bust the Javascript echo chamber.

I used Babel since the beginning when it was 6to5, and seeing the Babel 6 change was rough to say the least, and I made it personal when I shouldn't have. It's just software in the end.


Not invested in this discussion, but it sure is refreshing to see someone change their mind in "real time" and show self awareness. I appreciate that!


It's what the world needs right now.


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.


This is what makes open source (and a lot of volunteering) really difficult. If you look at a sibling post, one reason given was, "Just tried to use hyperbole to bust the Javascript echo chamber." I think that's true for many of the egregious examples, but it still hurts and isn't fair the people working on the project.

The lines get blurry, XP has a business case for dropping support, Google (and GNU) are decently funded I imagine. I'm not sure how much his work at Facebook and his contribution to open source overlap, but it's not fair to be outraged or make demands if you're not paying anything--especially if this is all work done own his own, for fun.

Hell, I work in an industry where we pay for expensive software but don't have a venue to complain about bugs or feature changes because they don't make themselves accessible. We could pay 10x more money and get a support contract where we can yell at them, I've worked at places that do, and they likely won't address your issues. Pay 100x more and they'll write a custom version for you. With OSS, many times, we get this for free.


the cli only stopped working the same on new projects with v6, old projects should have continued to work... though a post-install that created a default .babelrc would have been nice.


I think the main issue with the transition of Babel 5 -> Babel 6 was a cognitive one. A few CLI one-liners don't really address this. Babel was zero-config and now it's not. I now need to understand what presets and plugins do and how to order them to get desired results when transpiling.

Ultimately, it was inevitable and I think it was a very good thing! I'm really happy that Babel 6 exists. But figuring out your Babel presets and plugins is undoubtedly another thing that we have to think about when we start a project. Similarly with JSLint/JSHint -> ESlint.

Thank you for your great work, I use Babel daily and Flow sometimes (less often than I should).


Anything more than the two presets "es2015" and "react" (we never should have shipped "react" on by default, we just didn't have a pluggable parser before) required configuration in Babel 5. A regular complaint that we had was that the Babel <5 configuration was really annoying because it involved three separate whitelists/blacklists


> But figuring out your Babel presets and plugins is undoubtedly another thing that we have to think about when we start a project. Similarly with JSLint/JSHint -> ESlint.

There's ways around this. Tools people built to make this easier.

I created a preset of my own for Babel, and now I use that for any new project, no figuring it out every time. I know what my preset has in it, and if I need anything new, I can put it in and all other projects have it now too.

Same with ESLint, there's tools such as Standard (And the standard-engine if you don't want to use actually standard) where it IS drop in again.


First off, I am sorry that it looks like my comments have continued to inflict pain on you and that really wasn't my intention. I agree with your main point: we should be decent to each other, and I apologize if I wasn't.

Second, I think you got burned harder on Babel because it was part of a bunch of starter packs. A lot of non-front-end guys like me started with things like Yeoman and didn't understand what was in the template, just that it worked for a while and then it didn't work.

Unfortunately, these seem like things you couldn't necessarily prevent by reaching out more, which is part of what I was trying to convey. The other party wasn't listening. And that's on us.

Anyway, I hope that people are more decent to you and you recover. We really do appreciate the work you are doing.


What specifically do you find 'really shitty' about that Angular 2 article? The reddit thread gets pretty unpleasant but the write-up itself is strident but generally sticks to specific issues. It doesn't seem like 'an attack on the maintainers', certainly not by title alone.


Because (if I'm remembering the article correctly, am working from volatile memory and not gone back over it, so apologies if I've overcooked this) it's not phrased as particularly constructive criticism, it basically just hilights general pain points in a slightly snarky way.

Learning to take criticism well is HARD, I'm still relatively shit at it despite my best efforts, but learning to give criticism well is even harder.

As a community, we lack some degree of common community spirit, to coin a particularly trite phrase.


The syntax of your first example is so, so much easier to grok than the syntax of the second.


You don't have to literally pipe it into a file, you can just open it in an editor. The "syntax" in the example is just an example.


wait, really?


I went to the Angular 2 docs and was thinking "this is nothing like Angular 1, looks like a completely different framework." Then I read from them "this is nothing like Angular 1, this is a completely different framework."

Should they have gone with a different name? Probably. But my guess is that they kept it for 2 reasons. The first is the name recognition. The second, more important one, is that they're letting us know that development on Angular 1 is winding down and this is the place where their new resources are moving to.


That and they also have an officially supported migration path from Angular 1 called ngUpgrade which allows Angular 1 & 2 components to communicate with each other so you don't have to do a big bang rewrite.


imho they should have bumped to 3 at release to avoid old articles referencing outdated apis as ng2 had a lot of breaking changes along the way..


A better approach is to spin off a new system and give it a new name

Great point. I think some developers or teams feel compelled to update the latest even if they are happy with what they have because using an older version number gives the appearance of being behind the standards and practices. In a case where changes take place to the extent that it makes the previous framework difficult to recognize or breaks compatibility in a big way, this pressure would ease if the new version just had a completely different product name, as in a way that's what it is anyway.


Rich Hickey just did a great talk about this sort of thing at Clojure Conj: https://www.youtube.com/watch?v=oyLBGkS5ICk


I agree mainly for googleability. It's really annoying searching for Angular 1 stuff and getting Angular 2 results and vice-versa.


Remember this behaviour is encouraged by the deprecation warning notices of npm. I want my project to compile cleanly, but without me changing anything, from one day to the next, I may face a bunch of warnings because some maintainer somewhere decided they have a fresher version (lodash, pug/jade, node-uuid etc I'm looking at you).


Change your npm log info to just errors. Warnings don't mean your build broke, just that the version of a dep you installed is no longer supported and if you want bug fixes to upgrade.


:clap:


It's because being on older versions limits your upgrade options. The further you get behind the more painful upgrading becomes.

You don't want to be in a position were you can't fix a bug because it's in the framework and you're several version behind.

There are also security issues with using older versions.


So then you're gonna have people looking at you and saying "ugh, Angular is old and outdated, you should be using ng-not-angular-but-newer-and-shiner!" and everyones gonna be upset that they didn't find out what the new versions name is so that they can upgrade to that.


If people have a hard time googling that info OR angular devs can't communicate that info well, then problem lies elsewhere.

Besides, the one reason, of using a different name is, to convey that it is a different framework just like others.


I said the same thing when they first previewed Angular2: call it something else. everyone would still know it comes from the Angular team and it wouldn't have pissed so many people off.


I disagree that Angular 2 is a completely different framework. Rather, it's like Angular 1 re-imagined for the ES6+ world. Many of the concepts are the same, like data binding, "scope," and Dependency Injection. The big change is moving to new syntax and a new foundation on object-oriented concepts. The framework had to adapt and shed some of its custom solutions to what are now available standard in the language.


I was commenting to a colleague the other day how amazed I was at the sheer quantity of github "issues" that I was seeing posted to a few popular open source repositories that were rants about why feature X wasn't available yet or a priority yet, or demanding that someone walk them through some installation issue because the poster couldn't understand (or didn't read) the README. None of the people that posted this stuff appeared to have ever contributed to that project (or any project), but thought they were entitled to what were essentially support requests or re-tasking of developers to meet their demanded schedule.

Our discussion eventually thought it was due to two things: 1) Github, while making the open source process visible and easy to use for many, also makes the process pretty open and barrier free to people who may not yet have the technical (or social) ability to meaningfully contribute to a project; what once would have required posting to a dev mailing list is now just a couple of clicks; and 2) a cultural mindset that some people seem to have that free or open source software is some kind of entitlement (or at least due to communication issues, and the ambiguity of the written word on the Internet that is how I thought it came off). I think the sheer volume of freely available amazing software has caused some to forget the whole reason we have this stuff is someone somewhere spent a lot of time working on it and then decided to give it away.

I don't know if this is really a javascript thing, but I think it manifests itself there more than others simply because javascript might be the first place a lot of people start in their career/learning.


regarding your first point: often there doesn't seem to be a dedicated support channel/community. Mailing lists are less and less popular, if one exists its web interface is likely a long way behind GitHub. There are no forums. Some languages have project-independent channels (e.g. message boards for python users will try to help you with whatever library you're messing with right now), but they don't exist for all ecosystems and are shrinking. Stack Overflow has a low tolerance to badly asked questions and a reputation for it (and probably killed the message boards that dealt with them before).

Initially, it makes sense that questions go to Github (public, no extra infrastructure needed, no community yet), but at some point they have to be moved. Even a %project-questions repository might help, if enough non-core-devs take care of it.

EDIT: to add to the last point: if a core contributor has to click the "close issue" button on a question that's a problem. Either give community members the power to do so (at least some are going to feel honored by that, a great motivation), or push questions to a channel that doesn't have that notion.


Project Q&A sites, subreddits, and IRC channels are a pretty good solution to this (based on my experience with Rust for the latter two), as at least it separates "support" from "issues". Doesn't fix toxicity, that requires consistent and effective moderation, another thing Rust does well.


I agree subreddits and IRC, can be moderated by users who don't need to directly have repo access, sort of an abstraction, unlike how github repo members/collaborators would, can be a huge assist to eliminating that toxicity. It even has the potential to be handled before the negativity ever gets to those who have so much going for the project, unlike github issues currently which really require the collaborators who have usually contributed a lot to the project, to directly mitigate the toxicity there. I think it would be a great asset if github added the ability to give certain collaborators access to issues only which might aid in fixing this issue allowing there to be sort of moderators/support users who love the project but maybe are better at giving back by moderating issues more than contributing code.


Sort of like gitlab's Reporter role?

Also, the biggest problem with IRC/subreddits with a dedicated community team is that it takes a long time for many projects to reach the point where this is feasible. Rust is large enough it's fine, but many small projects (like what's common in the JS community) will never get enough people to dedicate some of them to "community management".


I think so I haven't used gitlab enough. Yeah libraries do need to become large enough but I think angular2 is ~19k stars & 2k watchers which is more than expressjs/express watchers but less stars, but it depends because I do sort of this role with expressjs/session which is pretty small 1-2k stars I try to help with what issues I know how to and to get all the information from the users to help debug. We have only had one issue (that I know of) of users negatively critiquing the library.


  > often there doesn't seem to be a dedicated support channel/community
That got me to post in "issues" a few times, while apologizing and pointing out they should have a forum. It's so easy too: Just create a new subreddit (or use an existing one) and - that part is important!! - point to it as an official channel. Flow(type.org) is an example. Their "support" links are: SO, Github issues, Twitter, IRC. All of them are very bad for discussing general usage questions. If your question isn't already very well formulated and very specific, with code, SO will downvote and close your question. IRC or any chat mixes everything and it is about that particular moment, it does not collect people's responses over the course of a day or two.

Oh and please don't create your own forum. Almost all forum software sucks. As much as one wants to complain about reddit, their forums work, and I mean the technology and design and usability. There is a Flow subreddit, but since the Flow support page doesn't point to it it's pretty empty. Flow is just an example.


There isn't a dedicated support channel because OSS contributors don't want to support a project - that's a job you need to pay someone to do, they just want to write some code that scratches their itch. If you want more than this you need to be prepared to put down some money.


Stack Overflow and forums certainly do not pay their contributors. Many forums do not even pay their moderators. Just because there are coders that do not enjoy these things does not mean there is nobody who does. The tricky bit is to find the right people and allow them help as efficiently as possible.


I had a recently gone onto SO, and a question was asked about an error in a minified file... I suggested he try the unminified version to see if the problem still existed.. I was then asked where to get the unminified version. It went downhill from there...

People really expect people volunteering time out of their day online to walk through how to troubleshoot an issue. It gets aggravating and it seems half the questions are like this.


I agree 100%. GitHub muddles the contribution process and support process. Couple that with the irony of developing free software using a bunch of proprietary, commercial tools, and I much prefer the tried & true IRC/mailing list approach to the trendy Slack/GitHub stack.

I think a large part of the problem is that the current generation of new developers is completely conditioned by Facebook, Google, Dropbox, etc to relinquish control of their data rather than deal with the slightest inconvenience of configuring an IRC client or whatever else it may be.


I'm sorry, but having lived in the times where sourceforge was the old github, this strikes me as quire absurd.

Firstly: sourceforge was widely used and was also hosted – the architecture didn't really change.

Secondly: Github is simply the best thing that ever happened to OSS. It's a fantastic interface that allows you to:

- Immediately get a sense of the project: You know where to look and can quickly scan Stars, Issues, Checkins etc.

- Makes contributing a no-brainer: I never ever sent anyone a patch by email. With GH, it's basically more difficult NOT to contribute back.

- Makes forking easy: OSS projects often stagnate. Now, someone can fork the project, maybe update the dependencies and get it running again in half an hour or so. There's a graph right there showing you all the forks, so it's easy to figure out which one you want to trust.

- Makes discovery easy. I check the trending repositories every few days, and there's no better way to learn than to get lost reading other peoples' code.

- The whole industry of CI platforms etc. being given out for free to OSS projects was created around Github.

So I'm quite happy people are happy to "relinquish control of their data", considering I don't even know what that's supposed to mean in the context of OSS.


Creating barriers or deliberately keeping them up is never the solution. Every time you create more obstacles, you'll end up losing a future contributor or two. Contributors that might end up solving larger future problems or ones that end up owning the whole project after you have moved on. It's not about the slightest inconvenience and obviously you might get slightly larger signal-to-noise ratio but when was the last time keeping into your own small bubble paid off? Most likely never.

At the Brackets project (https://github.com/adobe/brackets) we have seen lots of new active contributors that started from none to giving steady stream of PRs and the effort needed for that was just a slight push to the right direction.


Yeah clearly if we just get a little bit more elitism and condescension in the software communities of the world the problems will go away!


> But when someone starts to insult me in mock my hard work, when they criticize me and my work in a way that is extremely negative, it gets to me.

That seems to be the essence of his entire essay. He wants people to be nicer. Yes, criticism is often necessary and often motivates progress, but the criticism should be nicer.

Well, that's an ideal but his lament isn't limited to Javascript specifically. Nasty complaining is part of the universal human condition. Instead of "Dear Javascript", it's more like "Dear All of Humanity" ... stop being so mean-spirited.

In the same vein, we could generalize BS's quote:

"There are only two kinds of languages: the ones people complain about and the ones nobody uses." -Bjarne Stroustrup

... to ...

"There are only two kinds of github projects: the ones people complain about and the ones nobody uses." -every maintainer


Ok, but he's specifically calling out communities that reward negative behavior rather than calling it out. I mean, are you being serious right now? There's a difference between "boo hoo everyone's so mean :'((" and "hey, there are community issues that we should try to address", and that's pretty explicitly the point of the article.


James Kyle wrote:

>There’s a lot of these “sub-communities”, places like /r/javascript and Hacker News that often reward negativity more than positivity.

and you write: "hey, there are community issues that we should try to address",

Ok... so exactly how do we address it? Do we repeat, "From now on, let's all be nicer with more positive energy and feedback!"

Ok, now that we've done that, is the problem solved? Why not?

You see, negativity in complaints about others' work is universal. Before the internet, scientists had been slinging mud at other scientists' work in prestigious journals. During the heydays of Usenet we had nasty Lisp debates. And now, we have have rants about Babel6 and Angular2 that's a killjoy for the maintaners. As Captain Louis Renault would say, "I'm shocked gambling is going on in here!"

On a related note... I recently read about autism and a book discussed some of the debates of parents caring for an autistic child. You'd think that an environment like that would foster the ultimate empathy and positive feedback (compared to Javascript projects) ... but no.... some parents are quite mean-spirited in criticism of other parents' therapy methods. To think we can somehow "solve" the problem of Javascript programmers' negativity about OSS projects seems naive.


The Appeal to Tradition fallacy, because things have always been shitty and improvement is hard.

Just because people have always been jerks doesn't mean we have to be forever. The idea of inclusion, bringing in more brains in more people to accomplish the same goal is a universal gain for everyone involved, including the people who get angry about it.

You can minimize the effects of a toxic culture that rewards people for being rude, you can even file it under "meritocracy" which has never existed anywhere in human history, you can do anything else to justify why you have the right to be a jerk and no one can stop you and as a maintainer that's fine, you have that right. But in doing so you push out valuable developer resources, new people, and fresh ideas which only hurts the thing you're trying to build or use.

Anyone can get angry. Anyone can take to a keyboard and spill a row of profanity and impotent rage because it makes them feel better for a short moment. It takes real scholars to get out there and actually solve the problems, and I'm sorry but no problems have ever been solved by techbros highfiving each others blog posts.


There are nice communities out there. It seems more naive to me to think that we might as well just throw our hands up in the air than to think that we can identify ways to move ourselves forward.

You've also shifted your criticism here to "Ok, but how?" from the original criticism that sounded like "Well, humans suck. Boo hoo."

So, here's one answer to how: as I am doing right now, we can encourage others to be optimistic about growing and developing ourselves and our communities into better people.

Here's another: as I am about to do, we can pinpoint unhelpful claims that hold us back from improvement rather than moving us forward. Your comments so far have largely been the former, in that they treat the people the article's author criticises as though they couldn't behave any differently. One key step is adopting the belief that people, including the people who have been really nasty so far, can in fact choose to behave differently.

Here's another: We can be vocal about the importance of maintainers standing up for respectful communication within their communities. We can create and spread resources that help empower people to do this. We can institutionalize roles such as "community maintainer" whose job revolves less around code and more around discourse.

These are coming off the top of my head. So on that note, here's another: we can encourage people to do one more thing before posting a comment or article – check in about whether what they're saying is truly constructive, and redirect their efforts if not. I'm sure you could have come up with some of these approaches, and I'm sure you could come up with more that I haven't thought of. But you need to push yourself to try. You need to push yourself to get better. And the rest of us need to be here to help you and each other and everyone else do just that.


>You've also shifted your criticism here to "Ok, but how?" from the original criticism that sounded like "Well, humans suck. Boo hoo."

It's not shifting positions. My 1st post was general commentary on JK's post. My 2nd post was asking Mouq to clarify his "solution" since he didn't actually state a concrete solution.

>So, here's one answer to how: as I am doing right now, we can encourage others to be optimistic

Yes, did you notice that I already made that suggestion in my post that you replied to and you just repeated it?


> > So, here's one answer to how: as I am doing right now, we can encourage others to be optimistic

> Yes, did you notice that I already made that suggestion in my post that you replied to and you just repeated it?

Hmm, let's see...

> Ok... so exactly how do we address it? Do we repeat, "From now on, let's all be nicer with more positive energy and feedback!" Ok, now that we've done that, is the problem solved? Why not?

yeah, no, that's not the same thing at all.


>, 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 including Linux/Lisp/C++/PHP/physics/autism/etc. Yes, nice communities do exist (often because of heavy-handed moderation/censorship) but that's orthogonal to the inevitable formation of other uncensored communities that freely share negative criticisms. Therefore, the reasons that motivated JK's original post will always exist.


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 on the principle of charity. Instead of assuming that the other person is dumb/shortsighted/etc., assume that you're not giving their thinking enough credit.

> that's orthogonal to the inevitable formation of other communities

So what? Drive the downers out of JS-land, or whatever community you care about. You had been saying that even that shouldn't be bothered with. But if it can be accomplished, who cares if they all go off to learn Brainfuck, if that's the only community that will accept their behavior?


>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 <topic> 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)


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


"JS-land" spans every web browser on the planet.

JavaScript isn't some open source little language with a little community; it's what everyone has to use to target a web browser, whether they like it or not.

Nobody has to like JavaScript or be in some unofficial JavaScript community in order to develop in JavaScript.


And yet everyone who wants to develop in JavaScript does have to interact with various hubs of the JavaScript ecosystem. Why can't they be exposed to positive influences there?


Moderation and social dynamics are things that have to be built from smaller scales outward. Yes, there will always be people writing articles about "This project is awful and the developers are bad people," but it's also possible to have platforms and communities that don't indulge in and enable that kind of pettiness.

And it's true that driving those people away will likely cause them to form their own communities, but so be it. More often what happens, actually, is that the people less interested in unneeded hostility (like I said about building from smaller scales) will splinter and form their own communities. If these communities are effective, however, they'll often slowly be recognized by the nasties in the original community and be invaded by the same or similar people. The real problem is figuring out how to deal with them and maintain solidarity without compromising social ideals, rather than just splintering again.

Also, I'm not real knowledgeable about issues surrounding autism, but I do know that autistic kids are a primary target of parental abuse, often by parents who may appear well-meaning from the outside... so I wouldn't be surprised if those can be quite toxic communities, especially if we're talking about parents and not autistic people themselves at the forefront of discourse. But perhaps I'm just cynical.


See, but this doesn't address those community issues. It doesn't talk about the changes that these devs will have to make to keep up with the times.

I don't have anything to say for Babel, as I'm not a user of it. But I remember the anger of the Angular community as Angular 2 was announced. No one could believe that they would eventually choose to leave behind Angular 1, that they'd have to nearly rewrite their apps to be compatible. This made people angry. I believe they might still be. And I don't see a point like that addressed in the story.

I don't have an answer for you on how to fix this. There are many people that consider the A2 switch to have been necessary, so "don't do stuff like that" isn't necessarily even an answer.

But my point stands. People get angry, for better or for worse. Logically or irrationally. You can't just "call out" that behavior and expect it to get better. You need to better understand and empathize with those people, and work with them.

I don't believe this piece is helpful. I think it paints with too widely a brush and ignores the legitimate criticisms that the community is making.


Honestly I feel that most FOSS projects would lose very very little if the most vocal complainers somehow vanished overnight. The angriest users are the ones that understand the least and contribute the least. Of course there are legitimate issues with nearly every FOSS project, and civil people complaining about them legitimately, and we should work to address them. But we should not be pandering to the most petulant and angry users in our communities - as the article says, this simply rewards bad behavior. I would be happy to see those members largely ignored in favor of better communication with the more levelheaded and rational users in the community.


Well, that's fair. If someone steps majorly out of line, time them out or ban them. I'm not saying you should pander, I'm saying you should empathize. (Within reason.)

That being said, exclusion is a very powerful tool, one best used with caution. It's easy to mistake temporary anger for constant trolling. It's very easy to ban someone who falls into that sort of gray area.


Just to clarify - I'm not suggesting we make liberal use of the banhammer for anyone who steps out of line - there are other ways of changing behavior that will work better. Just considering the hypothetical where they don't exist :)


Sure, people trying to use libraries and frameworks to make their living absolutely get frustrated for often legitimate reasons. But we're supposed to be professionals and as such we should have the self-control, skill, and empathy to channel our frustration into productive feedback instead of just venting our anger like an out-of-control toddler.


I suspect the professionalism aspect is a salient point - given the accessibility the platform offers, whilst many of githubs users are professional developers doing their day job, they might equally be somebody trying to build a webpage for their cat, who stumbled across the repo looking for a troubleshooting guide.

With platforms like github, it's difficult to attribute the degree of merit any given comment deserves, so we kinda have to take them all at face value. That can be pretty brutal at times.


> That seems to be the essence of his entire essay. He wants people to be nicer. Yes, criticism is often necessary and often motivates progress, but the criticism should be nicer.

This. Especially when he is giving an example of "feedback, not complaining", those points are mostly rephrasing some aggressive sentences into nicer one.


Someone saying "Angular 2 is terrible" really isn't that harsh.

If you're going to get all worked up over something that slight, maybe doing work in public isn't the way you want to spend your time.


> If you're going to get all worked up over something that slight, maybe doing work in public isn't the way you want to spend your time.

Or maybe the people doing the actual work have opinions that matter and the person whining only does at the contributors' discretion, so the complainers can pull themselves together if they want to be listened to at all?


He's complaining about an open article written about Angular2, which he isn't even a contributor to. He's complaining about general community dislike about the direction Babel 6 took.

It's not like this was Linus trashing a contributor for writing shitty code in a pull request.

So far as I can see in the article, he's not complaining about a single instance of anyone actually criticising him directly.

No one really cares who worked on Babel 6, all they know is there was a change that disrupted their work flow. No one is being personally attacked when the users criticize a change.


This approach assumes that the natural/default state of the community is unconstructive negativity (e.g., the title "Angular 2 is terrible"). The point here is that many people (especially the people behind big projects) reject that assumption. So, on the contrary, maybe it's the people who refuse to show empathy who should disengage from the community.


I took the essence of his essay to be "communities that are primarily negative about things are hurting themselves because they push out the people who are in a position to help them".


I’ve always been advised to avoid these “sub-communities” like /r/javascript and Hacker News. Maintainers say they are filled with assholes who don’t know what they are talking about, angry idiots shouting at everything and everyone, cesspools, giant piles of trash burning in the wind.

Is HN really that bad? I mean, it must be, if people maintaining popular open source projects think so... But why does it feel much more useful to me than a "pile of trash burning in the wind"?

I guess my experience as a commenter is so different because I've learned to tune out the negative stuff and it's not aimed at me.


Check out this comment from one of the devs behind Homebrew from HN 10 days ago: https://news.ycombinator.com/item?id=13035438 (this was in response that he might be a good target to sue over putting Google Analytics in Homebrew).

Yes, we need to treat our open source devs better. HN is not innocent.


Holy shit. That's just insane.

It feels like some people treat open source developers like government employees. Both provide a seemingly "free" service, and when you're not paying it's easy to ask for more and get upset about trivial things. (Of course neither group deserves this kind of thing.)


>It feels like some people treat open source developers like government employees

This is actually a very interesting comparison.


> Both provide a seemingly "free" service

I'd argue that open source maintainers provide a free service. Government employees do not.


Many prominent open source projects are supported and often initiated by corporations. I imagine Google pays the core Angular team quite well.


Of course. But most of the time users are not paying the maintainers whereas with government employees you are paying them through your taxes.


Well, that's hardly any different to google. You have no control over the details of those taxes. If anything, the advantage you grant google is likely more direct and quite probably more costly if you're comparing apples to apples. It's just really hard to compare those.

Don't forget, google gains quite a lot from giving away software like this, and some of their gain (in the form of control) may well be a cost to others - and it's not a zero sum game, so it's anyones guess whether it's a net positive or negative (even though that seems unlikely).

Similarly, you talk of the paying taxes as if this were some net-negative cost. There too this isn't a zero sum game - just because you distribute the costs but don't account for the benefits doesn't mean it's not net beneficial to you. The government is even larger than google (and indeed intertwined the the semi-fiction of currency), so "paying them" doesn't really mean the costs are much more direct than they are with granting google influence of the JS ecosystem.

Even if through voting you could choose the cease to "pay" for the government employees, the consequences might well be far-reaching and impact the currency system (hence "pay" in quotes), so from one point of view you can't with any reliability choose not to pay, rather, you can choose not to account for costs accrued by a large civilization. But it's highly questionable whether you can actually avoid those costs and remain a large civilization.


I don't know. If you use Google products and see ads, you're indirectly paying for the development of Angular.

Not everyone who uses government services directly pays for them either (they might not have income or it might be less than the required minimum for federal/national tax, for example).


What is wrong with these people? Why do they treat people like this? Why is it these people always seem to jump to the big three [0] in protest of something they don't like? Are they that childish they can't express themselves in a more humane and intelligent way?

One hears about this seemingly regularly. It needs to stop.

[0] Nazi, murder, rape


Thanks for bringing up this example and calling it out as unacceptable. I appreciate it (and I'm sure other OSS maintainers do too).


No problem. It was so egregious and over the line that it really stood out. Your response was also really eye-opening, a thing that all of us who benefit so much from OSS needed to read and understand. Thank you for making it.


Its a dick move clearly but the post was flagged, a hacker news moderator spoke directly to the issue saying the post was unacceptable, various others had a more productive positive discussion including calling out the negative poster.

You can even make a negative, frankly slightly whiny post calling hacker news a trash fire and STILL have a productive discussion here.

The human race is just chock full of assholes and if you make yourself visible by raising your head above the herd you will inevitably become the target for some of them. Each community of course should do what it can to promote a positive asshole free discussion but its still a semi free internet and assholes have email/irc/twitter accounts.

Beyond keeping it positive yourself which the author hasn't done you just have to deal with it and move on. If someone calls you terrible and you look in the mirror and know its not true then shrug it off and move on.


He mentioned getting some egregiously awful comments, specifically over email. I quickly scrolled through the HN thread and didn't see many, not on "nazi" or "death threat" level.

Perhaps the people that read HN and then email other people are not innocent, but there's a huge gap between the number of people who comment on HN and the number of people who just read HN.

I think HN comment posters are generally innocent. I would guess that the storm came from elsewhere, or from particularly unscrupulous people who happen to read HN. Stuff like the mentioned subject ends up bringing out the paranoid people, which often causes some seriously unhinged commentary.


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.


The mods did well there, I agree, but it was the top-voted comment for a fair while (most of the working day, European time). Perhaps that says something about European vs. American attitudes on such thing, I dunno (I'm European).


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


I haven't had higher quality discussion with this many people anywhere else on the internet. Sometimes there are not so great comment threads, sometimes people decide to take things too seriously and fail to pick up on humor... but generally I think this is a great place.


Many HN posts about JS devolve into a "I don't like Javascript because I'm a real programmer, not a frontend" slugfest.

As someone who is invested in the long-term success of the JS ecosystem, it becomes a lot easier just to remove yourself from the discussion because a lot of the community is so negative about the (older versions) of the language and ecosystem, purely on ideology.


Oh. I thought it devolved into "Use react".


Both actually. Split roughly 50/50.


> As someone who is invested in the long-term success of the JS ecosystem, it becomes a lot easier just to remove yourself from the discussion because a lot of the community is so negative about the (older versions) of the language and ecosystem, purely on ideology.

If a lot of people are so negative about it, is it worth even considering whether they might be correct? Is it not ideological to refuse to do so?


You honestly believe people who build web apps with javascript are not "real programmers"? Would you like to elaborate on that?

It's not surprising that many find it offensive when people don't bother to differentiate between newbie programmers who have just learned the basics of jQuery and experienced front-end developers capable of building complex, well-architected applications.


> You honestly believe people who build web apps with javascript are not "real programmers"

I didn't write that, nor do I believe. JavaScript is a programming language — albeit a truly awful one — and thus people who get work done in it are by definition really programmers. And some of them have done some really quite amazing things with it.

That doesn't change the fact that the success of JavaScript is an embarrassment for our profession.

Sometimes everyone is negative about something which really isn't all that bad. Negativity about JavaScript isn't one of those times.


Hmm, I suppose the paragraph before the one you quoted was the more problematic one. I apologize for downvoting, I should have been more careful.

Although it may have helped if you would have made it clear you didn't agree with the paragraph prior to the one you quoted.

Regarding Javascript itself, yeah it has some warts. But modern Javascript (ES6) is actually not too bad. IMO, it really isn't that much worse than Python or Ruby (which I've used a good amount).


JavaScript is pretty much average for a dynamic language.

Also, it doesn't matter how many people think its awful. What matters are the facts they present.


Of course it's worth it: we've considered it, and we think you're wrong.


Or not even just that one is particularly "wrong", but that it's a matter of opinion that is differently valid to different people. That's as much reasoning as you can do on the scale of an entire language, without getting more concrete about your arguments.

edit: also, "ideological" is unfair. We know JS isn't godlike. We use it regardless.


That was more or less my point. So thanks for clarifying it.


> Is HN really that bad?

I recently had someone here say I should be given "a prison sentence of several decades" for working on Rust. And no, they were not joking.

To be fair, the comment in question got flagged off the site, but the point remains that it very much does happen here.


Whew! And by working on Rust you've already committed years of hard labor, you should at least get credit for time served.


I don't think HN is on the level of Reddit or some other communities, but there is an air of contrarianism that wafts through this place that I can imagine reads as negative to people that aren't familiar with it. It also sometimes outright vilifies certain projects.


There's some cultural and some technical elitism here, and you can taste it. It's available on other forums, but I think it's a touch stronger here. On the other hand, HN does a great job of shouting down trolls and truly ignorant (unresearched/uninformed) opinions. As such, I find a stronger S/N here despite the elitism. It's pretty easy to filter/calibrate for that than the trolling and sheer idiocy so pervasive in other venues.


As such, I find a stronger S/N here despite the elitism.

Despite? I've only been on the internet for 15 years, but I thought elitism was the only way to increase s/n ratio.

I've seen elitism enforced through selecting _who_ can talk or _how_ the people talk to eachother. But I've never seen anything but "GOML" change interaction for the better. Even this "Dear Javascript" can be seen as a flavor of GOML.


Nosir, I often consider elitism part of the noise. It's just a particularly filterable part of the usual array of noise sources, though. And I recognize this is a subjective statement; YMMV.


HN definitely has a strain of tech "fad following" and cult of personality going on, in my opinion. There are certain languages, frameworks, companies and individuals that, if one comments negatively about, will earn more than one down vote.


> Is HN really that bad?

It seems like there are some people trying to drive it downhill in a hurry - I know it's fashionable for anyone who's been on HN for any time at all to say it's going downhill, but turn on showdead for a while and see if you don't start to feel the same.


It is right there and I never knew it existed. Turned it on, got shocked by reading such nastiness, turned it back off.

The problem with negativity is that it takes much less effort to be negative than to be positive. And it's much more contagious.


It is a bit From Beyond, isn't it? No Jeffrey Combs, though, more's the pity.


But this is why you leave showdead off.


I leave it on because sometimes there's a comment which makes a salient point, isn't a dupe, and for whatever reason is dead anyway - maybe the user is shadowbanned, I don't know. I'd rather be able than not to see and vouch for such comments when they occur, but I certainly don't blame anyone for not wanting to see all the garbage that comes along with enabling showdead - which is most of what it lets you see, in any case.


Over the years, I've seen my own projects get torn apart or receive praise, and it feels like (though I certainly can't prove it) there is a direct correlation to how much I test before releasing.

Because we have such a wider audience on the Web, it's really hard to develop an experience that fits everyone's expectations. And everyone definitely has their own expectations, with almost no consideration that theirs isn't necessarily the majority position. I've had people on Internet Explorer for Windows Phone bitch me out for not supporting their platform. Unfortunately, their noise can cause an out-sized effect on other people's opinion on other platforms, so you can't easily say that it's not cost effective to support niche platforms. On the other hand, something like an iOS app has such a smaller market, such a smaller set of potential use cases, with much higher activation energy, that in comparison it's a cake walk.

The hard thing is that, if you're just starting out, you don't know what you don't know. I think it's possible to release a JS project that gets received well. But there are just so many things you have to take into consideration before releasing a project. I had started to write a list of considerations, but I quickly realized it was getting unwieldy fast and I don't want to be here all day. I think it all comes down to "make the technology transparent". People shouldn't know what you used to build your project unless they go to your Github repo and see it immediately in your README. And I mean that in both the sense that there should be negative consequences to your technology choices that bleed through to the user, as well as you should make no mention of it in your marketing materials. Because marketing material should be 100% focused on selling, and the technology used to build a thing is so very rarely ever a good selling point. At best, it's a distraction. At worst, you'll alienate people for no good reason.

Put another way, it's hard enough to get people to show up, don't hand them excuses to leave. We get told to "release early, release often" a lot. And I believe in that concept very wholeheartedly. But it's in regards to features, not to defects. Work your TODO list until there are no known defects.

HN is definitely a lot better than Reddit, though. Reddit is random, as far as I can tell. Whomever is the first poster gets to set the tone for the thread, and then it's just piling on after that, usually devolving into inside-jokes repeating sound-bites (which are expressly forbidden here and/or will get you down-voted to hell)


HN can be pretty bad.


I agree, but I was quite surprised to see it being mentioned alongside some quite uneducated, brutal, bash-only communities. I always had the feeling that in any discussion on HN something new to learn pops up.

Besides that as an active OSS contributor I fully understand and support the author's points.


It felt like every day I had a notification waiting to be opened about how badly we had fucked up.

It's interesting that the author phrases it this way, and dove tails nicely into a thought I've been having about interaction on the internet for a while. I don't say this specifically to the author, but generically, it's even something I'm working on being more aware of.

Social tools and other apps have turned notifications into a Pavlovian variable-interval reward loop. This makes negativity even harder to handle. But seeing the system laid bare makes it easier to make decisions about.

The notification loop sort of evolved that way with texts, but is also a purposeful tool of manipulation. We politely don't conceptualize it as "manipulation" because there is weight to that word, and we don't necessarily assume the app designer is acting in bad faith. But it's still manipulative.

Think of it like this: Who _needs_ to be able to interrupt you every waking moment of your life? Then why are you letting a single person more? Disable notifications, and just set a recurring calendar event to check email/twitter/whatever.


I think it works both ways, too. Unfortunately there are some developers that take any form of criticism as negativity.

Some time ago I discovered a major XSS security vulnerability in a very popular WordPress plugin (used on over 100,000 blogs). I notified the author and got it fixed, and published a blog post about the issue 12 months later. The article itself was entirely factual and described the nature of the issue, how I discovered it and what the fix was. Unfortunately, the author took this as a personal attack (the email he sent me made that clear) and I decided to take the post down.

The thing is, I had actually spend many hours going through every single line of code to look for other security vulnerabilities. Sure, I hadn't written any code, and I wasn't the maintainer, but it was still an "open source contribution" in some sense.


I can't read the article so it's hard to say. But if it was just about the security vulnerability and you weren't calling their software shit, then that's not what I'm trying to cut away at and I'm not sure why the author took it so personally.


Did you consult the plugin author before blogging about the vulnerability? Is there a reason why you blogged about it a year later? I am guessing that you waited until the old version of the plugin wasn't (widely) used any more.


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 is terrible, that it "broke the web", and it marked the beginning of the entire JavaScript fatigue era. Babel6 transition took three days of my life, filled it with misery and rage, lost me a customer, and led to my desire to never touch JavaScript again if I can help it. (I moved to ScalaJS eventually).

I ranted about it, too. Like nearly everyone else, I forgot that there are live people behind every project, with their dreams, hopes and justifications for every decision. I didn't want to attack you personally — I just vented my (very real) rage against Babel6 itself, without thinking anything about its author. So, well, nice to meet you.

And I still stand by what I said. Despite your good intentions, it is still terrible, and unintuitive, and definitely not a "something for everyone", unless frustration is something. And I can't think of any way of fixing it, except of moving to another stack (which I did). If there were many people ranting about Babel6 like I did, (and I can imagine), I am truly sorry for the mental suffering you had to endure.

You are cool. You are significantly more competent developer than I am. I use your software, not the other way around. And it is free. But Babel6 is still terrible, and no input from your side can change my opinion. Or perhaps it could, if you provided some technical justification for what you did. But this article is the request to stop ranting about your work, as it hurts you.

For that, I am sorry.


> 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. Babel6 transition took three days of my life, filled it with misery and rage, lost me a customer, and led to my desire to never touch JavaScript again if I can help it. (I moved to ScalaJS eventually).

Bad news: you are not a special snowflake deserving of attention, the web is still here and doing just fine, and it was your incompetence that lost a customer (Babel 5 is still around for use even today).

Many mistakes can be made by open source teams, and something should not be immune to criticism just because it is open source. But this is a great example of noise that harms engagement in a community because you want to feel good on the off chance that lashing out will make someone somewhere feel bad.

Maybe try to learn from a piece instead of trying to be cute next time?


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?


Yeah, that's bullshit.

> But Babel6 is still terrible, and no input from your side can change my opinion. Or perhaps it could, if you provided some technical justification for what you did. But this article is the request to stop ranting about your work, as it hurts you.

> For that, I am sorry.

So you get what he's asking (stop the sniping without substance), you're (supposedly) contrite about it, and yet in the same breath you continue to do what you acknowledge is exactly that behavior.

Either there's some fundamental disconnect in your mind that you need to address or you should just say what you mean.


I do not attack or blame the author, I say that the work (Babel6) is no good. This doesn't imply anything about the author.

You, on the other hand, attack _me_ personally. You don't even say "your words sound rude" — that I would understand.

Or there is no difference to you?


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.


>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 very well, why not say that? Or if you find configuring the tool confusing, and would prefer it to have "sane defaults" in the absence of configuration, why not say that? Instead of calling it terrible and blaming it for the "javascript fatigue era".

They realized that what had once been "sane defaults" were no longer sane, so they removed them. That's it. I can accept that there were legitimate complaints to be made, but the hyperbole and general negativity was over the top on this one.


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 save precious bytes from web-transmitted JS. But no, it is a development tool. Nobody cares about its size or one-size-fits-all.

I just don't understand. What is the use case that required such a big sacrifice?


To address the other points you raised; I personally found Babel 6 easier to use and understand than Babel 5. I suspect this is because I needed to configure Babel 5 anyway to meet my needs, so I was required to understand the configuration either way. Babel 6 made it much easier to understand what I was asking Babel to do; no magic, everything explicit.

With version 5, the default settings were a moving target (which I found confusing), and explicitly configuring it was more complex. Apparently the Babel team had great difficultly deciding what should be included by default as well.

Basically anybody that used Babel for something other than "6to5" had to jump through hoops to overwrite the defaults. Seeing as how the Babel team were trying to position it as a general purpose Javascript compiler, that was a problem for them.

So, maybe it's worse off for most people because of the change (because it doesn't work with zero configuration anymore), but plenty of people were better off because of it. The library became easier to maintain, and easier to use for a non-negligible number of users.


The major point of frustration was JSX preprocessing for React.

Need JSX? You have to use Babel. There is no zero configuration for Babel anymore, so you have to spend time learning it and resolving numerous build conflicts with cryptic error messages.

Todo list example with React+Redux+Babel6 takes 14 JS files, Babel configuration file, Webpack configuration file and Node package file to be written anew. This is what "Javascript fatigue" is about: when you get to the working first example from the documentation, you will be completely exhausted.

The amount of boilerplate with this "standard" setup is worse than with Java/Maven, and this is quite an accomplishment. :(


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.


Did babel force you to upgrade right when version 6 came out? They bumped the major version, that should be a pretty clear indicator that existing workflows will break.

Whenever you use a tool, you're accepting risk for the reward you're getting from it. If I run Gentoo on my servers, it's not really fair to complain when an update breaks something.


JavaScript world is known by moving fast and breaking things (which is fine for me, I learned to respect this culture). So, when a new version of some popular framework or tool comes out, there's a very real risk that the previous version will be abandoned really soon and left without support from developers and community (I was burned by it quite a few times). So no, had to move forward like everyone else.


That's total BS. Even if it was abandoned, it was already in a stable state with no significant bugs. It wouldn't just cease to be supported. Your workflow wouldn't have to change. And losing a customer over it? That sounds like complete incompetence on your behalf, which your customer probably figured out. Even assuming that Babel 5 would be abandoned, why move to Babel 6 so quickly instead of waiting a month or so while the nice guides, gulp plugins, etc are made?

Your whole situation and outlook really seems to be blaming anything but yourself for mistakes that you made.


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 entirely to say again and again how much you personally dislike the project without offering anything of substance.

Personally, I think that you can suggest improvements, changes, fixes, or say how you would have prefered a change happen without the extra parts about how much you disliked or even hated the project.

Again, you could have explained this elsewhere, but without a link, a reference, or just reiterating the bullet points, it's going to come across as just more "bitching" which helps nobody.

As for another point of view, for me Babel 6 was a breath of fresh air. I waited a good couple months before updating, and found that it was easier to configure, easier to remove the parts I didn't need, quicker to setup, and overall just nicer to work with. To me it was a welcome change that I saw as Babel giving you an "out", paving the way for a day when you can incrementally remove babel from your pipeline and not have to deal with it again (opposed to the Babel 5 setup which was "all or nothing" unless you dove deep into the configuration hell). It had some fuckups (documentation was difficult at the beginning which is why I held off, and I still believe it has some holes with regards to exactly what some of the plugins do and what each one requires in terms of "polyfills" or other plugins), but nothing is free of problems, and despite all of the complaining about how it "broke the web" everything seems to have moved on fine. Even you yourself admitted it took you 3 days. While everyone involved thinks that's too long, and you are just one of many who had a similar story, in the long run is not that big of a deal.

I think there were things that everyone could have done better, and talking about those things specifically is going to be infinitely more helpful than any venting or rage will ever be.


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


Thank you, this is actually a great explanation.


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


Ummm... You do know that you don't have to use Babel to use JS, right? ES5 is here, it was here then, and it works very well. It might have some pointy ends, but they are very well documented at this point.


Yes, of course, unless you had invested a lot into React/JSX, and Babel is the only "official" way (documented and blessed by Facebook) to run React and JSX in production.


Ooh. Forgot about that. Sorry.


I think there is a lot of truth here. I can't help but feel that you just diagnosed a great deal of the internet, far beyond javascript or dev. We need better communities and better communication. I wish I knew how to make that actionable.


Agreed. I also think this touches upon a larger issue outside of development.

There is something about being behind a keyboard that makes people much nastier than they would be in real life.


There is no "fix" to this. This is how people work. Some like things some don't, you have to deal with it or look for a more secluded hobby. If you can call it a hobby. Maybe behind every angry post there is a frustrated developer who've thought or been told that XY framework "is-the-shit" and and it will rock the way he works. Then he tries it and faces a series of problems. One consequence might be that he feels stupid, inadequate or incompetent. But there are some who dare to criticize. I thing that's a good thing. The moment when your mainstream project stops receiving criticism is probably the day it's dead. And by criticism I don't mean personal attacks (screw those idiots). By criticism I mean people with constructive feedback. The "angular 2 is terrible" article had plenty of it, besides the title it was a good read and insight how A2 really works.

If you want to reduce developer frustration, then try these things first:

- Write a clear scope what your project is about and how you intend it to used. Many times devs realize that the tool is a bad fit for them only after attempting to use it many times

- Write exceptional, up to date documentation

- Visually display core architecture explanations

- Provide clear getting started examples that work out of the box

- Communicate well breaking changes, updates, milestones


Why would a project maintainer be expected to write "exceptional" documentation, have a clear scope for something they might still be exploring, give visual architecture explanations, etc etc and we can't expect developers to deal with frustration like an actual human?


These project aim at the bleeding edge so if a maintainer sets the bar high, then it's expected to keep up with other aspects as well. Your work as a maintainer doesn't stop when the /src folder is full of code. Then comes the boring part.

These things change from project to project and if a project gets more traction other people will join to fill the missing gaps.

We can expect developers to contain themselves, but some just can't. They are precisely the ones who can't be stopped with any policy. Some are just in a bad mood and they also have graphomania, some are constructive some are mean. I think it's fine as is.


The first paragraph has the form of the common "toughen up" response to this post, but you hit on the important point: framing matters. Offering constructive criticism is pointless if it's offered under some salt-the-earth banner (e.g., "Angular 2 is terrible"). Empathy costs very little yet helps very much.


I think a bug tracker is where the rubber meets the road. Blog posts people write or hecklers on forums are potential avenues to take feedback, but a bug tracker is where you can expect the most actionable feedback.

Since that's the maintainers' domain, I don't see why they shouldn't just close issues as "will-not-fix" with tags like RUDE or SUBMISSION_GUIDELINES. If someone is taking the time to file a bug report, and they genuinely want to see their problem get better, they'll follow the bug submission guidelines and give you a detailed report. Heck, if they really want to see change, maybe they'll even file a pull request with a patch. If someone just wants to flame or be snarky, close their bug and hopefully they'll try again with a more business-like, respectful post. Never forget, they are coming to you, and the customer isn't always right even if they are paying you.

It's okay to blow people off who are just in the game to tear you a new one; life's too short to give them the satisfaction of your care and your craft. Trust me, the harshest thing you can do to someone like that is to ignore them completely as they've just wasted their time and energy flaming you. You can take some satisfaction in that.


In the vein of "Worse is Better"[1]'s MIT/New Jersey split, my theory is that the online javascript community reflects a lot of what I would call the San Francisco/UI Design attitude (in contrast with, say, Java, which reflects the Palo Alto attitude.)

The SF attitude is more driven by fashion, marketing and art/design world factors and less by raw commercial or technical aspects. This introduces a lot of subjectivity and, as with the art world, snobbery, vicious infighting and out-grouping. Much of the online shittalking reminds me of the various post-war -isms trying to box out the other groups.

There are, of course, many things going on: the rise of the online troll, increasing churn and chaos in the javascript community, bifurcation into the haves and have nots in technology, even the recent presidental election and the attendant insecurities. But this is what I see.

[1] - https://www.jwz.org/doc/worse-is-better.html

EDIT: and I should say, I fall victim to exactly what the author describes when I'm going off on one of my YAGNI react/angular rants.


I disagree. A lot of technical design goes into JS projects. React is designed in a Herculean effort to minimize DOM refresh and thrashing. JQuery was built to fix very real problems: API incompatability between browsers, and extreme verbosity in common idioms. Babel is a compiler, with all that entails.


The users of these libraries benefit from this herculean effort of very real programming, but are mostly not the herculean programmers.

The users are the community, not the library creators. And the users are mostly, from what I see, the arty designy web dev types.

That doesn't take away from the real problems, or the tricky design or difficulty in building a compiler for the community.


But the people behind those libraries are part of the community.


Sure, and they drive the direction of the community, but they are also a miniscule minority


BTW, never click a Jamie Zawinski link on HN when you are at work...


I remember reading that Angular 2 thread and walking away disappointed with the baby-like, nonconstructive screaming. (disclaimer: I'm using NG2 and enjoy it).

This article has reminded me that there are people behind these projects, even the ones I don't like.


In general, even if you don't like some things about projects, it's worthwhile investing time to see if you can learn from it for down the road. I'm an expert in the Angular ecosystem, but I experiment with other frameworks to learn & get the most I can. The author of that terrible Angular 2 article didn't even try to understand the system he was working in.

As an open source maintainer (UI Bootstrap/ng-bootstrap)/contributor (Angular 1 & 2, Universal Angular, UI Router, Ionic, karma), I respect those who work on other projects, even if I disagree with approaches.

We need to have less holy wars and more constructive discussions instead, and demand more from fellow developers to foster this atmosphere. I've been guilty of using emotional language in the past, but time has led me to mature in this aspect - it would be nice to see everyone else make this jump as well and join us in making software better for all.


I think part of the problem is junior developers think they need to use these frameworks for every project, which results in frustration and running around in circles. They then blame the framework or developers because the framework wasn't really right for their use case or doesn't give them exactly what they want.

Maybe the community needs to do a better job at communicating best use cases for these frameworks.

Are you developing a Gmail type app with multiple devs? Okay, maybe an Angular type framework is a good option.

Are you developing a simple CRUD app? Probably not the best to use a heavy framework then. A framework in this case may actually slow you down.

Single page apps and frameworks are not needed for everything. Probably not even needed for most web apps that people are using them for.


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


Let's work on the problem.

Coo. But there's one of me, and 7 billion people that have - at least once - been more of an asshole than warranted.

It's possible to simultaneously promote the change you want to see in the world, and promote coping strategies for the transitional period.

The idea that we shouldn't need to deal with the status quo, but expect the world to conform to our whims instantly is unreasonable.


I strongly suspect that the competitive environment in Javascript frameworks and :s/tool/fool/ing is the main source of the negativity: Trolls have the explicit agenda to demolish/demotivate what they're trolling in order to push their own project/framework.


This is a really shitty thing to say, which you clearly understand.

The 90/9/1 comes in to play here: https://en.wikipedia.org/wiki/1%25_rule_(Internet_culture)

I have found that even sites like HN don't skew significantly far from this. As users, we can't know who the 90% of people are who read this site and never post. But there are definitely 9 times more people commenting than creating.

As an open source project maintainer myself, I have absolutely zero time to go talk shit about my competitors, even if I had shit to say about them.


In my observation, one troll can and will show up under many different identities, so there may be a 90/9/1 rule, but it can be gamed.


Much like the fanboys of the console wars. It's so much about their "side" winning they get upset when a game isn't an exclusive.


This sort of thing isn't unique to software. The same human behaviors that first-line tech support has to deal with on a daily basis are driving this; it's especially bad in F/OSS because it's often the case that the developers and the supporters are the same people.


Very true. Having worked at a helpdesk, many calls were about how $new_software sucked. Most of that only got to the devs in a very generic form. They definitly didn't look at every complaint that was logged


One reading of this is that people in open source JS community should be more professional, but I think you could make similar complaints about electronic communities in general. A blogger in 1999 writing about woodworking might have had similar complaints about feedback from random readers on the Internet.

If you put anything out there on the Internet and encourage people to read it/use it/whatever, you will inevitably be surprised and repulsed by how nonconstructive and uninformed some of the feedback is. Web development might be worse than other fields in this respect because there's just that many more amateur, narcissistic, toxic teenagers (in spirit at least) who don't know what they don't know diving into it, who are going to be somewhat more focused on getting cheap upvotes on Reddit with angry rants than actually creating things.

I don't know what the solution is. Some forums have higher SNRs than others, and while I often enjoy Reddit, I have no expectation that the people posting to programming subreddits are any better as a group than people who posted to Slashdot in 1999. If you do anything and tell anyone about it, some bonehead on Reddit is going to take issue with it and write an angry, uninformed, thoughtless screed about how everything is terrible and it's all your fault. You'll find some gems in places like Reddit as well, but it's just such a random stew of people that you have to take it all with a huge grain of salt.

I agree with just about everything in the article, but given the number of Reddit quotes used as examples, part of the author's problem is taking Reddit too seriously or assuming that a given community on Reddit is a reflection of a larger programming community, whereas often the opposite is true. Oftentimes the people that post the most have the least to say, on Reddit (and the Internet in general), as in life.


I do not think that every blog post about a piece of software has to have actionable advice for the maintainers. Sometimes you just want write a review and tell other people that something sucks.

It is true, that this is a community where people are working for free and I would personally try to consider that, when I say something online. It is generally good advice to assume, that other people are intelligent, too, and assume "there are valid reasons for this" before "they had other things to do" before "they are stupid".

Doing something for free however does not free you from criticism. Imagine a studio releasing a movie. Critics hate it, because it sucks. If the studio now sets the price to zero, does that automatically mean all critics have to be positive and friendly? No it does not. If something sucks, it sucks and you are allowed to write about it.


The thing is, a Hollywood movie is qualitatively different than a FOSS library. In the former case, you are a passive consumer who paid money for a product. In the latter, you are an active member of the JS community, benefiting from the shared work of other developers for free - the only thing they're asking for in payment is a bit of kindness, respect, civility and ideally the occasional contribution. Plus, if there's something wrong with the FOSS project, you have ultimate power to change it as you see fit.

IMHO reviewing FOSS projects as if they were shitty products you purchased is extremely destructive to the FOSS community.


> The thing is, a Hollywood movie is qualitatively different than a FOSS library. In the former case, you are a passive consumer who paid money for a product.

Not in my example. Not even talking about Hollywood. Could also be indie and crowdsourced, just like FOSS can be sponsored by the biggest companies on the planet.

> In the latter, you are an active member of the JS community, benefiting from the shared work of other developers for free - the only thing they're asking for in payment is a bit of kindness, respect, civility and ideally the occasional contribution.

Sure, and that would be the right thing to do. Still he mentions, that he has stopped working on a project for being criticized for ASCII art. I do not know the specific case and mostly I do not care enough, but it annoys me, too, when developers try to be exceptionally funny and clever inside code - especially when they fail. So I think you are allowed to criticize something like that, if you want to.

> Plus, if there's something wrong with the FOSS project, you have ultimate power to change it as you see fit.

Does not apply to criticism about design decisions.

I think reviews (sometimes) have a value in itself for the reader and help to create a working market of FOSS, where the best library gets the most users. I get the developers point of view and can imagine how he feels, but playing devils advocate here lets me conclude, that saying something sucks is okay.


> It almost feels like you’re a politician at times.

Because that's what he is. He's a self-chosen software politician who admits he loves his job. He's paid to travel the world and interact with his constituents.

But he is upset that his audience sometimes writes a blog post, or worse, nominally approves of adding an arbitrary number to a database associated with a blog post. Somehow this is construed as a problem with the community.

It seems the community is functioning as intended, and grievances are being hashed out. However, the author does not want to deal with the challenges of listening to and interacting with the people he is being paid to interact with.


You assume I was being paid to work on Babel. I was not.

I worked on the UI team for Cloudflare, where we didn't even use Babel until earlier this year shortly before I left. I worked on open source on the weekend.

The vast majority of open source maintainers are not paid in anyway whatsoever. Conferences pay me to fly places and stay in hotels because they make a profit off of me.

Even now as I am paid to do open source. I don't think a single person on my team would expect me to tolerate people yelling at me. I'm not a politician, I can and do ignore plenty of people. Most of the time negative people arent saying anything useful anyways.


> You assume I was being paid to work on Babel.

I didn't assume that. This post isn't about Babel, it's about the "JavaScript community", which you are being paid to work with.

> The vast majority of open source maintainers are not paid in anyway whatsoever.

I know. I'm one of them. I spend ~20 hours a week on open source on top of my full-time job. I know how stressful it can be, but I'll never complain about it because it's my choice to be involved. I'll definitely not be complaining about it if that 20 hours was something I was being materially compensated for.

> Conferences pay me to fly places and stay in hotels because they make a profit off of me.

Yes, this is how business works. Work is exchanged for tickets and advertising. Part of the work is being a presentable and knowledgeable speaker who can effectively engage and relate to the problems expressed by the audience.

> I don't think a single person on my team would expect me to tolerate people yelling at me.

If there are people harassing you that is indeed a problem -- get the police involved. That seems a completely separate issue from what's discussed in this post though, which is a community that sometimes discusses technical arguments in a way you consider abrasive.


I wasn't saying that people don't have a right to be frustrated or angry. I wasn't saying we shouldn't voice our criticisms as developers or that we shouldn't disagree with one another.

The only argument I'm really trying to make in this article is that when someone has stepped over a line into outraged attacks on tools and authors that the community shouldn't reward them for that.

Apparently this is too much to ask because so far today I've been called:

- a special snowflake

- autistic

- whiney

- thin-skinned

- pathetic

- weak

And I only published this like 2 hours ago and I have hundreds of notifications to go through still. The next few days I'm probably going to get a hell of a lot worse. Still waiting for my first "faggot" which always inevitably happens.

I have some pretty thick skin. I was raised in an abusive environment and I made my own way in the world at 16.

I'm not bothered by one person saying I'm an idiot.

What gets to you is a few thousands people agreeing.


I looked back at your story a couple of times but couldn't figure out how the outraged attacks are being rewarded. I do feel like you might be on to something in how critical comments are often the most discussed. Think about how the single like "thank you" or "thanks for that" comments are hidden as being empty of thought.

I don't have any solutions but have you seen this CGP Grey video called "This video will make you angry" https://www.youtube.com/watch?v=rE3j_RHkqJc which says that outraged ideas are the quickest to spread.


Mean people Sadly come with the territory in STEM :/

The math sphere is even more brutal. It's sad fact but people in our field are less emotionally aware than others and have a low frustration threshold. It helps to fortify against that.


Is he being paid?


I thought the purpose of the Angular 2 is awful article was not to get the Angular 2 people to improve it but to make an argument for why people should not use it.

Just as in art you can say that there are technologies that you believe are not to your taste and ones that you believe are bad (and there can also be technologies that aside from these categories are also morally bad - AMP). Angular seems to me to be one of those technologies people often think are bad. In the interest of avoiding pointless argumentation (god I'm getting old!) I guess I won't put my opinion here.


Sounds like OSS projects need a better way to moderate issues. If github had a setting to force issues to go through a moderator feedback/approval cycle before becoming public, it could reduce this behavior. Wouldn't help for Twitter and whatnot, but at least it would help somewhere.


As others have pointed out, people being mean, angry complainers when something doesn't work the way they want it to isn't unique to the programming or open source communities.

I think some of us are bothered by it because we tend to to think of ourselves as logical and rational, and we expect others like us to behave in the same way.

From observing things over the past decade, it appears to me that there are plenty of developers who are willing to fly off the handle and write whiny rants about things that irritate them.

Maybe part of it is that the posts that sound like they're written by a petulant child get the most attention. I often find myself disagreeing with points in them, but have never felt the need to spout insults about libraries and frameworks or their creators.

Up 'til now, I've been content to reply to these rants on HN and Reddit, and try to inject a bit of reason and calm into the discussion. I think it's time to be more courageous.

I'd like to start writing rebuttal blog posts in which I tell the authors they sound like whiny ingrates and demonstrate how they could have written their criticism constructively. I'm just not sure whether trying be be reasonable will actually help the community, or will just get me lots of nasty replies and e-mails.


I don't think I can say much about the article's main point that hasn't already been said. But I do have a question:

Why the flying blue !@#$ would anybody think that Babel 6's Configuration over Convention decision was the wrong way to go? It was absolutely the right thing to do. It made Babel a far more uniform and simple piece of software, and actually made it easier to use.

Why?


Most people use Babel for transforming ES6 into ES5. Before Babel 6, Babel did that out of the box with no configuration required. With Babel 6, it basically stopped doing anything out of the box, including the main thing it was famous for doing. While it is admittedly not a vast amount of effort to make it do precisely what it did before, I'm sure you can at least sympathise with people who found it strange that you have to include a "preset" to make it do the main thing that you expected it to do.


As with seemingly ever problem over this last few years, this just comes back to the same basic problem. Entitlement.

People feel entitled that your library works the way THEY want it to work. They are entitled to feeling that changes you make should agree with THEIR project workflow. They feel entitled to complain when its not exactly what they want.

Entitlement is going to be this period in time's label...


Some people tend to forget that a lot of time goes into all these tools and they are free to use. Some of these engineers spend time fixing OSS problems instead of hanging out with their kids. Good read..


I dislike all JavaScript transpilers. I still cannot get my head around how CoffeeScript ever got so popular. The complexity and friction that transpilers add is not worth the tiny benefits that they offer. I've worked on many projects where I had to wait for like 20 seconds for the code to compile each time I made a change to it.

From my point of view, it sounds like the author of this article is merely feeling the reality catching up to the hype.

Transpilers like CoffeeScript and Babel should never have become popular to begin with. Something unnatural happened in the evolution of those projects which allowed them to capture a lot of attention very quickly; and much of the initial adoption was driven by hype and network effects instead of real needs.


Just to provide a contrasting point of view: CoffeeScript is the only reason I ever wrote, and ever write, JavaScript. Period. Transpilers do add a layer of complexity, but all of the syntax sugar advantages make it more than worth it to me.

I would not ever write JavaScript if CoffeeScript or similar languages did not exist. Before it existed, I never touched the language. I now use CoffeeScript daily and have never been happier. A watchdog script automatically transpiles the code upon updates, and everything is completely seamless for me.


The real problem that CoffeeScript solves is developer stubbornness.

Some developers decided a long time ago that JavaScript is terrible and so CoffeeScript gave them a way to program in JavaScript without changing their minds about how terrible JavaScript is.

The reality is that it would have been easier if developers weren't so stubborn to begin with.


It would have been easier if JavaScript weren't so terrible to begin with.


I think the context everyone needs to start taking with internet comments / blogs / etc. is that "everyone can be part of any open community". The other important thing to take is "everyone can voice their opinion". This, if the majority of us really dig deep, is what we wanted and why we invested so much time / energy into the web.

I would say that only in recent years has it felt like the most ignorant are really starting to ratchet up their rhetoric. I still see it as a truly powerful thing even when it can / is used destructively.

Also, given the ad-driven world of online, my guess is a large number of "relatively intelligent" rants we see online ramp up their tone only to drive more traffic. It's sad state of affairs, but true. My belief is the internet is still very much a meritocracy. As long as good work continues, it will continue to get well-deserved attention and praise. The thing that is changing and the way I think we (oss contributors in general) need to adapt is by making sure we don't let the noise rattle us.

EDIT: In terms of how the particular issues arose (backlash) for Babel 6, I would say the only thing you'd probably want to do is assess the project's methodology for how word gets out and how easy it is for people in the community to participate in discussions of changes that will affect users. Perhaps making it explicit on the project websites which channels are "official" channels where the project's work occurs.

In the end decisions / progress needs to be made. If everything is done as "above board" as possible given resource constraints of the project, don't ever let the backlash make you feel so guilty that it might change your mind about whether to contribute. Those who are the loudest are probably the least involved and sadly the most dispensable. Of course you don't want to think in those terms, but I think it's a lot worse to try too hard to appease loud / ignorant / uninvolved community members. That is probably the main thing that will lead the core team to want to disband the project altogether.


It seems there are two things going on here.

1. Upset that people are now reacting negatively to this change as opposed to voicing criticism earlier

2. Being upset that criticism exists

(2) is the sort of problem I can't help with except to say maybe grow a thicker skin or be a bit more aware of what it was you signed up for, but in regards to (1) -

It's important to note that the people heavily invested in your project (enough to follow every new issue on Github and respond to them and have opinions) will be very different from your mainstream users. There is no shortage of people who heavily use a project and yet probably don't follow them in any way. So it's important to note that using that source of feedback likely subjects us to bias.


The argument that people should grow thicker skin is part of the problem. Why do we expect people to grow thicker skin rather than expecting them to be more courteous/civil?

Edit: also the argument to grow thicker skin is seemingly ignorant of scale. Sure a few criticisms should be shrugged off but should thousands, which are disparate, incoherent and likely personally insulting, be part of the thick skin department? Where is the line drawn, and who draws it?


Because thats how people are. Especially the general public. I absolutely think people should be nicer, but how do you encourage/enforce that? We've been trying for a long time without good results. I'm not saying that we can't fix it, but I haven't seen many attempts succeed.


Should I, in making a critical statement, be denied because someone else (or maybe several other someone elses) already have?

It seems a bit odd that if I'm a critic that my ability to exercise my freedom there is constrained by whether other people have.


I understand the author's frustrations. Open source is lovely when it works, and communities can be fun when you're part of them. But I understand the other side too. Most people don't care, and they shouldn't have to care, yet they are told to regardless.

The flipside to all this griping about entitlement is that most open source ecosystems are set up as an explicit groupthink and infrastructure to which you must defer. You can't just grab something and keep playing by yourself, no, you must keep moving in lockstep with everyone else, or things will break. That's why people get frustrated and angry, and that's why they barge into issue queues feeling miffed. They gave up too much control to too big an entity, and it bit them in the ass. Angular 1 should be a big lesson here: people abandoned the entire framework in droves simply because the _promise_ of future updates was taken away. The beautiful carriage turned back into the pumpkin it always was, and now the rot was starting to set in.

Even something like node.js with its fractally versioned npm packages has this problem. Drop-in compatibility is only true as long as you're in the sweet spot of doing what most other people do, on the version most widely installed. Not too bleeding edge that you can't expect StackOverflow to have gotten there before you, but not too far behind that you lose compatibility with the important dependencies.

The author concludes "If we focus on solutions, focus on helping others, focus on sharing ideas, we’ll be in a better place." I disagree, because too much sharing is what got us into this mess. The answer is more self-sufficiency, with enough affordances for going at it by yourself if you want to. Alas, that doesn't jibe with the latest fad of inclusiveness, so I'm afraid the same people griping about civility are the ones doomed to recruit more ineffective members into their congregation.


The best way is to get a bunch of people to answer messages for you, and filter out personal insults. Also you do not need to read the news, it's possible to live under a rock and still write the best software. If you want to talk to other like minded, conferences are nice, and also IRC, there's always nice guys lurking there and if you write something interesting they will wake up, just be patient.

Then there are community management, everything you say or write can be used against you, and there are trolls trying to make you look bad. The community can be very powerful if managed though, thousands of people can achieve a lot together.

When you make something successful, people will love you, and we all want attention, so it will be hard not to become a public figure, but you're better off not to, because there will also be haters and if you make a bad move, those fans can easily turn into an angry mob.


When you try to sell something as the next best thing since sliced bread, expect some criticism if it doesn't deliver.


I wrote the mentioned “[Babel 6 is] a lesson in how not to design software”.

Maybe I shouldn't have written it at all. It's never my intent to hurt or insult anyone. Not by way of excuse, but by way of explanation all I can say is that Babel 6 is at the heart of JavaScript, and my experience of using it was days of crushing, mind bending pain because I had to configure everything - the point of the blog paost being that conventional wisdom is to make a set of rational configuration choices for your user, whilst Babel goes the OPPOSITE way - it does NOTHING by default.

Perhaps if a person is unhappy with the outcome of using some open source software then the best thing to do is just turn away and silently stop using it.

Hard to do though when that software has become central to the ecosystem.

I hope I was criticising the software design decisions and not the authors.


The people who appreciate your projects and would love to thank you everyday for your amazing work are the silent majority.

See Font Awesome 5. When they announced the KickStarter on HN, a minority criticized the existing library (like how the lib is shitty) or their future plans (like how having a pro version is wrong). But at the end, they raised almost $1 million. That shows how the biggest part of the community is really thankful.

If FA5 can raise $1M, I can't even imagine how much could raise Babel, Webpack or Homebrew. You made our lives so much easier.

---

Also, can't recommend enough this book:

The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life - https://www.amazon.com/Subtle-Art-Not-Giving-Counterintuitiv...


The problem with the JS learning curve is the HUGE amount of StackOverflow and blog posts that are insanely outdated, with no way for the casual reader to check if the question or the answers are actually usable on a modern version.

I believe that this, combined with complex, incomplete or outright missing documentation (hello Webpack, though the situation has improved since a couple of months) is something that holds the JS community back very hard - also because people complain all the time to framework authors "the example I c&p d from stackoverflow doesn't work" and answering these complaints takes nerve and time.

The PHP community suffers from the same fate, btw - remember mysql_*? People still find it in the top 10 Google results for some questions.

The only environments that have managed to resist this problem are Win32 and the userspace part of the Linux Kernel. In a lot of cases one is able to even open a VC6 project in a modern Visual Studio, have it converted and building - or at least just having to mess with the VC build process, but thanks to a hell of #ifdef's, the Win32 code still builds - and runs! For what it's worth, I can run Windows 95-era EarthSiege 2 on a 64-bit processor and the only things broken are the joystick input (by disassembly I believe the responsible code suffers from a bad version check on a struct) and some timer that binds a specific movement to the framerate and naturally overspeeds as a modern system can easily hit 100 FPS.

Same holds true for the Linux kernel, it's amazing that a statically compiled game like UT2004 still runs on a modern day Linux system.

In contrast, JavaScript - "npm install <whatever>", as many tutorials describe, is likely to already give an incompatible (with the instructions) package when the book finally gets printed. I have the feeling that like with libraries, major versions should always be backwards-compatible for their subversions, and have different NAMES for their major versions, e.g. "npm install angularjs1" vs "npm install angularjs2".


"Some of the best [experiences] include being invited to conferences around the world to speak getting to travel to places I never thought I would and making friends from around the world."

Are the motivations of maintainers aligned with the developers using their software?


> Hacker News often rewards negativity.

Hacker News has a very good mechanism for combating negativity. However, the moderation mechanisms of Hacker News cannot suppress the mass hatred of something.

When we see, on HN, a pattern of seething negativity against something leaking through the fine moderation system, maybe that something has some property which induces negativity. Be it completely unfair, or be it rationally justified, there it is.

There is a way not to be confronted with anything negative, while staying online: join one of those social networks whose job is to feed you ads, surrounded only by content that you like, based on your liking history.


This isn't to say people shouldn't ideally be nice to each other whenever possible. I'm so tired of hearing about how someone was slighted on the internet. Whatever it is you put out there will potentially be seen by up to 6 billion people. So "every day" you log in and see "yet another" negative comment? Grow up! There's no nice way to say that.

There's going to be negative comments on the internet please please stop complaining about it. I've been hearing people complain about negative comments on the internet for years it is not going to stop. Find another way of dealing with it.


>I'm so tired of hearing about how someone was slighted on the internet.

Deal with it?


Does anyone have any suggestions on alternative communities that are more positive?

Reddit and HN are easy because they are pretty consolidated, my best guess is that these other communities are small and hard to find.


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 community and we all have an impact on it. We can either have a positive impact or a negative one. It’s entirely up to us.

> This is the reality the community faces. We can either work to fix it or we can continue digging a deeper hole for ourselves.

At my company, we were using Lerna [1], a library to help manage mono repos. It wasn't perfect, but it worked. So I thought I'd contribute. I spent a good deal of time replying to issues, fixing bugs, and working on new features.

This was at a time when the author was mostly absent. Without the amazing help of gigabo [2] and hzoo [3], the project would have grinded to a halt. As new users rushed in to use this relatively new tool, there were many new issues and feature requests.

When the author did make his presence known, he was not very helpful [4] [5]. These are just the examples that stood out to me as a contributor. Most people understand that 1 person can't be expected to maintain a big project like this, especially when they are busy at Facebook bootcamp. That's why it had 2 additional members to help. Unfortunately, as a result of [5] above, the author decided he no longer wanted [2]'s help and removed him from the project. He removed a huge contributor because he disagreed with him and failed to openly discuss the issue. Ironic. I stopped contributing immediately. As a result, Asini [6] was born.

The thing that really pisses me off about this post from the author is that he's promoting open communication, sharing, helping others, etc... when it's the complete opposite of my experience with him. Maybe he just had a bad day on those days, maybe it was something else. I don't know him personally, I can only assume things based my interactions. Regardless, this was some extremely poor handling of an open source project.

It looks like he's active on the project again, but it doesn't look like much has changed. [7] [8] [9]

Mr. Kyle, if you're reading this, I really hope you'll follow your own advice. If I have misunderstood your actions in the past, I'm open to being wrong.

[1] https://github.com/lerna/lerna [2] https://github.com/gigabo [3] https://github.com/hzoo [4] https://github.com/lerna/lerna/pull/255#issuecomment-2289545... [5] https://github.com/lerna/lerna/issues/334#issuecomment-24639... [6] https://github.com/asini/asini [7] https://github.com/lerna/lerna/pull/255#issuecomment-2523322... [8] https://github.com/lerna/lerna/pull/386#issuecomment-2640725... [9] https://github.com/lerna/lerna/issues/408


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.


Hi James,

I'm really sorry to hear about the difficult time you've been having. I can see how that would make an already thankless job like maintaining an open source project even more frustrating.

During my time as a Lerna contributor I was careful NOT to abuse my power. The few times I merged PRs I checked with Henry first. I pinged you at the beginning, too, but stopped eventually when I didn't hear from you. Mostly what I did, though, was triage issues and work with other contributors to get PRs into shape. I spent a lot of time over the summer working on Lerna, and only a small part of that was the code I wrote myself.

Then, suddenly, you started deleting my comments and locking my issues. You removed me from the organization without any discussion. That seemed to me an abuse of YOUR power. It hurt.

Please re-read the first comment of mine that you deleted. It wasn't meant to be aggressive. It was a plea.

---

My inspiration here comes primarily from two sources:

1. Using Lerna every day and thinking about how it could be improved to make my life easier.

2. Listening to feedback from _other_ Lerna users about how it could be improved to make _their_ lives easier.

You're one of the original core team, and I don't want to alienate you. Your rewrite of Lerna put in place a foundation that has been a pleasure to work with. But lately maintenance and improvement has continued in your absence thanks to contributions from Lerna's fledgling user community. Do you plan to reassume this responsibility?

---

That was here [1], but you deleted it and then locked the issue. I hope as you read it now you can see why it was surprising and hurtful that this was your response.

[1] https://github.com/lerna/lerna/issues/334


James,

Thanks for the reply, and the apology. Your situation really sucks, and I hope it gets better with time.

Please consider taking a break from some of your projects.


thejameskyle replied on reddit for anyone interested: https://www.reddit.com/r/javascript/comments/5gmjdx/dear_jav...

---

I have been on the receiving end of Kyle's outrage and I too feel the need to speak out that he has acted in direct opposition to what he is now promoting. I was a new contributor to lerna, no previous interactions with Kyle or babel, and have experienced some of the following:

> My first PR was continuously rejected because he "did not understand my use case". I elaborated several times in great detail. Other project maintainers eventually chimed in that it was a good idea and should be accepted. Kyle continued to keep the issue closed and ignored all contact, including from other maintainers he works with, even to this day.

> My second interaction with Kyle was one of the most highly requested features for lerna (nested directory support). I championed the issue and over the course of a year I attempted to get direction on which path would be accepted to submit a PR. It was ignored, so after a year, I mentioned I wrote some custom scripts and used another project to fill in the gaps. This seemed to immediately set off Kyle and he immediately locked the issue.

> I opened a new issue since the original idea was accepted by Kyle and figured we could start fresh with a new discussion to avoid what led to him closing it in the first place. It was immediately Locked as well.

> I reached out to Kyle on twitter to understand why everything I posted is immediately locked. No response.

> I reached out on Discord to other staff members. Was also ignored. Eventually Kyle communicated with me on Discord with a very illuminating conversion. He didn't like the amount of github notifications he received so instead of unsubscribing he decided to lock all my threads. He provided several other reasons but essentially resorted to bullying tactics and said I should find another community.

> I opened a Code of Conduct investigation because he was actively suppressing all my communication. He abused his power on more than one occasion and the public conversations we had were very aggressive on his part. He was found to be at fault during the investigation by Sebastian. Sebastian said his attempts to talk to Kyle were dismissed. No other maintainers responded to the incident that were listed on the code of conduct. They said nothing can be done about it, so essentially suck it up, even though they mentioned the steps that will be taken in the Code of Conduct. It was a complete joke and they should not have this document live. The only outcome from this was Kyle re-opened the original github issue he suppressed.

> Other babel community members reached out and said they saw the chat and said sorry, it sucks, and they wish there was something they could do. It's nice to know there are people out there who recognize this toxic behavior from project maintainers.

---

The whole experience was very upsetting. I will never contribute or participate with anything involving Kyle. No other maintainers and staff that work with Kyle, held Kyle accountable. At no point has Kyle held himself accountable. I was no one to Kyle, and a potentially new contributor. If I had this experience, I wonder how many others did as well. I am sure his message sounds good but if he doesn't practice what he preaches, then what is all of this for? I hope he has changed.


I'm the creator of a popular open source project (but not Babel-popular). I don't have a problem with people complaining about my work; if anything, I wish they would complain more - That way I would have a better idea about which parts need to be improved!

I think that the author has no grounds to complain here; he's one of the lucky ones. I wish I was in his shoes and have people yell at me in desperation so that I could fix their problems (whilst travelling around the world). That sounds like a dream to me.


This isn't unique to open source software development. Anytime you're a public figure or a public company or otherwise working in some highly visible capacity, there are going to be haters in the building.

It doesn't matter what you do, you could say that you're against the strangulation and drowning of kittens and there would be someone(s) out there shouting to the sky that you should be shot in the head for saying so.

Fuck em! Ignore it. Move on.


I remember that angular 2 thread. Half of the problems were the breaking changes between release candidates. I was one of those early adopters, pushing my code along between releases. It was bad, but nothing I didn't expect. They talked about the changes and explained the motives clearly.

I think the problem is people want to be bleeding edge without joining the community.

Edit: question for James. What did you build with angular 2? Is it public?


> What did you build with angular 2? Is it public?

Heh, I build the same thing every time because I am not creative. Here's the Marionette version: http://marionettewires.com/

I could put it out there. The problem is that people assume when I share something that I am trying to tell them how things should be, like I'm some software design #thoughtleader genius. When really I'm just blindly trying to figure out what the hell I'm doing.


I think that's something that hurt Ember.js early on. Their community was hyping each pre 1.0 RC / Beta but the public API was making breaking changes regularly.

Too many devs got burnt.


> When we launched Babel 6, we made an API change that we had planned for awhile. We moved from having an implicit (“works out of the box”) behavior to an explicit (“will work for everyone”) behavior.

Just like Rich Hickey said in his last talk (see https://news.ycombinator.com/item?id=13085952), breaking changes are broken. For greater good or not, it's no surprise people complain when you break their code/workflow.

> I want to talk to you about an article that was written the other day titled “Angular 2 is terrible”. For starters, that title alone is an attack on the maintainers. Surely the author wants a set of problems addressed. But why should the maintainers want to even click on that link, let alone try to address the problems?

I too think that Angular 2 is terrible. It is not an attack on the maintainers, it is just a piece of (IMO) bad technology with maintainers feeling attached to it.

It is a very crucial skill in life to be able to withstand critique and take it to your advantage. There is a lot of usually unnoticed utility hidden in critique, waiting for someone to reap its benefits.


People keep assuming I have something against sharing criticism or frustration. I never said that. I explicitly said that's not what I'm trying to say.

I'm saying that when someone does it in a way that is in pure unadulterated anger that the community should not reward them for it. It's unhealthy for everyone.


I don't think you understand. The critique itself, whether constructive or not, is something to learn from.

Just like breaking changes in Babel 6. There is a lesson waiting to be learnt, namely, don't make breaking changes to existing software.

As a matter of fact, I honestly don't understand why you take it so personally. Sometimes I do stupid things and people call me an idiot, and it's helpful to know that. Sometimes it gives me a perspective I haven't thought of.

Look at how Theo de Raadt and Linus Torvalds manage their projects. It is kind of the same.


If I can ask, what's your alternative to breaking changes?

Most of the time when I see a large library make breaking changes, it's to solve a problem which can't realistically be "fixed" without breaking changes.

And even if they can provide a "shim" to allow people to use the old way of doing things, people see that the same as they see maintaining an old release. That you need to upgrade to the latest version or you'll be left behind.

I'm not trying to put words in your mouth, but it seems like the only options left are to "never improve" or "get it right the first time". And obviously the latter isn't possible pretty much at all.


I'd argue that most breaking changes are not about fixing problems. They are about API consistency and taste, like Babel 6 mentioned above.

If problem is a bug that people might rely upon, I don't mind fixing it. If problem is fundamental design-wise, however, the right way is to create a new library.

There are a lot of designs that never break anything (or at least try hard not to): Linux, macOS, Erlang, Java, Clojure, x86 instruction set, life on earth, and they all improve over time. And they obviously didn't get everything right the first time.


I dig Babel 6. I'm glad they took the major bump, which allows breaking changes, to improve things.

The major bump means it's opt-in, so folks can continue to use the older version without breaking their workflow.


This reminds me of a powerful skill we could probably use a bit more of in this day and age:

Recognize when you're just the flashpoint for someone's anger, not the cause of it, and don't take it personally.

Abuse shouldn't be tolerated of course. But sometimes you're just the straw that broke the camel's back. And in those moments, if you can let yourself off the hook, and realize that there is a bigger issue going on, you can often redirect the conversation toward that bigger issue.

Maybe if OP spent less time defending himself, less time taking the complaints personally, and more time just commiserating with people about the changes in the JavaScript community and how we should deal with them... maybe those interactions would've gone better and he'd be less burnt out.

I realize this is victim blaming, from the perspective of someone who was just bullied. So, please don't take this as a critique of OP. It's just a path I am trying to keep in mind.


hey now ...

"I’ve always been advised to avoid these “sub-communities” like /r/javascript and Hacker News. Maintainers say they are filled with assholes who don’t know what they are talking about, angry idiots shouting at everything and everyone, cesspools, giant piles of trash burning in the wind."

I find that HN has one of the most sober comment sections I could ever wish for, it's certainly better than Reddit. I mostly come here for the comments.


You can't really generalize about Reddit comment quality; it depends entirely on what you're looking at. Quality is strongly inversely correlated with sub size, so all the default subs are pretty bad. But there are notable exceptions to that correlation, like the consistently awe-inspiring /r/askhistorians


Great post. Open source maintainers clearly have some responsibility but we need to remember that they contribute their free time to make users lives easier


Rather than acknowledge some of the criticisms are true the author complains that complainers are the problem. Can't see the forest through the trees.


I think there's a fundamental mistake the author is making. Sometimes complaints about frameworks are not directed at framework authors, but at users. Sometimes people need to be warned away from bad software.

Specifically the author references a NG2 article that is trying to warn developers, not bash maintainers. https://meebleforp.com/blog/36/angular-2-is-terrible


I thought I agreed but then I read this guy's pinned tweet thread, and he is being very demeaning of other people "Shut up David, no one likes you" https://twitter.com/thejameskyle/status/788799662438227969 (I don't care if he's being sarcastic or teasing, this isn't the attitude that makes people feel uplifted).


The "Angular 2 is Terrible" article was not a clik-bait and it wasn't exagerating, Angular 2 is indeed, terrible.


Chin Up.


Apologies to the author, but rants serve a purpose. They comfort those of us forced to use a framework we don't like. If they demotivate you, that's your problem, not the world's. Move your site to Facebook if you want nothing but likes.


Has the author considered that maybe, just maybe, negativity can be justified? Sometimes when one sees people wasting yet another man-decade in yet another attempt to make JavaScript not fundamentally broken the only thing that can possibly work is to say, 'your project is stupid, because you're trying to make a silk purse out of a sow's ear.' If reasoning doesn't work, if polite criticism doesn't work, then maybe being direct will work.

Or maybe not. I generally try to reason through this kind of thing. But after awhile one realises that if every programmer has to learn why JavaScript and single page apps are both fundamentally and accidentally broken, then thousands of years of cumulative programmer effort will be completely wasted. Maybe it'd be faster just to say, 'that's stupid: do it this way' and short-circuit the whole process. It'd be even better to say, 'that's ill-advised, here's why, and here's how to do it better.' But if the other part won't listen to the long explanation and doesn't wish to learn — then it seems to me that the last-ditch mechanism is rudeness.


...But that's not even what he's talking about here. He's talking about people continually insulting him and his project over the internet, without even discussing the grievances they may have, legitimate though they may be.

Also, JS isn't as fundamentally broken as you think. C is far more fundamentally broken than JS, and you like C, right? I mean, I kinda like C, too. But it's broken.


> Also, JS isn't as fundamentally broken as you think. C is far more fundamentally broken than JS, and you like C, right?

Heck no! I think that the existence of C has set the fields of information technology, operating systems and computer science back by at least 50 years (yes, longer than C has existed: it's that bad).

I don't hate K&R or any of the other folks involved with C and its descendants; I don't think that they were actively malicious. But I think that their work has inadvertently made the world worse than it could have been.


Well, at least your POV is consistant. Which is more than I can say for many here.

I maintain that JS is an acceptable language despite its flaws, and that the best way to write JS is to just buck up and learn about them, rather than trying to paper them over.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: