You get paid extraorbitant sums of money to sit in a chair and think about imaginary problems. You don't stand and work all day. You don't change the world in any way. You sit at a computer and punch keys all day, and you have the audacity to bitch and moan about your precious feelings when you havent worked a hard days work in your entire life.
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.
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.
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.
> 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?
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.
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).
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.
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.)
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).
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.
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.
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 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).
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.
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.
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.
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.
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)
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.
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 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.
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.
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...
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.
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.
> 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.
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.
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.
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.
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.
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.
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.
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.
> 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.
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.
>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?
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?
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)
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.
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".
The way I understand it is that no matter how well you manage problems, JavaScript is always going to be an abortion of a language because the real problems are higher up the ladder where developers are not allowed.
> 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.
> 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 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?
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.
> 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.
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.
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..
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
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.
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.
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.
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.
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.
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 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).
> 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.
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
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.
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.
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.
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 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.
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.
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.
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.
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 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.
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.
> 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 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.
> 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.
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?
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.
>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.
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?
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.
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. :(
> 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.
247 comments
[ 4.1 ms ] story [ 297 ms ] threadYou're literally an adult crybaby.
There is something about being behind a keyboard that makes people much nastier than they would be in real life.
Or just don't publish your code at all if you can't take the mean comments on the internet.
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.
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?
edit: also, "ideological" is unfair. We know JS isn't godlike. We use it regardless.
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.
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.
Also, it doesn't matter how many people think its awful. What matters are the facts they present.
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).
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.)
This is actually a very interesting comparison.
I'd argue that open source maintainers provide a free service. Government employees do not.
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).
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.
One hears about this seemingly regularly. It needs to stop.
[0] Nazi, murder, rape
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
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.
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 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.
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.
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.
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.
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".
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.
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 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.
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.
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.
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
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.
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.
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.
>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.
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.
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.
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?
> 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.
Are you being literal? I wasn't saying that "repeated" meant lexical equality:
Instead, I meant this: 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.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?
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)
Not at all. I misinterpreted what you meant in your concern over them forming other communities.
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 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.
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?
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.
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?
Too many devs got burnt.
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.
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.
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.
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.
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.
Reddit and HN are easy because they are pretty consolidated, my best guess is that these other communities are small and hard to find.
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.
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.
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).
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).
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.
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.
you're all idiots.
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.
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.
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.
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.
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.
Besides, the one reason, of using a different name is, to convey that it is a different framework just like others.
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.
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?
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.
> 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.
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?
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.
Your whole situation and outlook really seems to be blaming anything but yourself for mistakes that you made.
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.
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
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?
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.
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.
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 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.