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.
$ 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).
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.
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.
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).
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.
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.
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.
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.
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.
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.
> 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.
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.
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.
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.
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
>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.
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.
This. Especially when he is giving an example of "feedback, not complaining", those points are mostly rephrasing some aggressive sentences into nicer one.
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?
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.
Yes, we need to treat our open source devs better. HN is not innocent.
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.)
One hears about this seemingly regularly. It needs to stop.
[0] Nazi, murder, rape
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.
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.
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?
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.
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.
The problem with negativity is that it takes much less effort to be negative than to be positive. And it's much more contagious.
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)
Besides that as an active OSS contributor I fully understand and support the author's points.
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.
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 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.
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?
However, I can't help but ask the question: am I the one who resorts to personal attacks here?
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.
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?
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.
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.
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.
There is something about being behind a keyboard that makes people much nastier than they would be in real life.
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
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.
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.
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.
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.
This article has reminded me that there are people behind these projects, even the ones I don't like.
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.
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.
"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
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.
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.
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.
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.
IMHO reviewing FOSS projects as if they were shitty products you purchased is extremely destructive to the FOSS community.
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.
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.
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.
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.
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.
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.
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?
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...
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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...
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".
Are the motivations of maintainers aligned with the developers using their software?
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.
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.
Deal with it?
Reddit and HN are easy because they are pretty consolidated, my best guess is that these other communities are small and hard to find.
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'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.
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.
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.
---
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 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.
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 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?
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.
Too many devs got burnt.
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.
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.
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.
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.
"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.
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
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.
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.
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.