Don't let the trolls get you down! Use this as a reference to avoid open-source burnout and keep doing what you love: writing code! Contributions and any kind of improvements are very welcome!
Don't let the trolls get you down! Use this reference to avoid open-source burnout and keep doing what you love: writing code!
(You might also be interested in the Guide to Idiomatic Contributing)
This guide was written by me, Jon Schlinkert, programmer, public speaker and author of more than 1,100 code projects. I have published code projects in several different languages, but most are JavaScript. 90+ of my projects receive more than 10 million downloads/month, with the total exceeding 3.9 billion downloads/month
. This brief guide is a distillation of my experiences as a maintainer.
If you find this useful (and I hope you do!), please consider following me on github or twitter to receive updates about this and other projects I maintain.
You might also be interested in other guides I've written.
As it relates to open source programming, this is my own personal reference to help me stay positive when I'm having a bad day, or for whatever reason it's more difficult than usual to stay objective.
Whether it's due to a bad decision I've made myself, or I'm reacting to unnecessarily harsh or negative comments made by a user, I thought it would be nice to have a guide to help me re-center when I'm not at my best. Maybe others will find this useful too.
I want to spend more time doing what I love, and less time doing things that I don't love.
I really, honestly love programming. So much so that I look forward to getting out of bed every morning so that I can start writing code. I'm a coffee-drinker, and sometimes I even start coding before I make my coffee or get breakfast. If you drink coffee too, you'll know that this says a lot.
I also love collaborating, exchanging ideas, learning better and faster ways to accomplish things that I'm already familiar with or, even better, learning completely new things that broaden my horizons as a developer or person.
I enjoy getting feedback from friends - or programmers I'm building friendships with on GitHub, hearing their thoughts about my code and what I could have improved. Mistakes I made, or how something could be optimized. I believe this is one of the fastest ways to improve. Not to mention, it's a great way to build lasting relationships.
I learned this concept from reading books by Stephen R. Covey, probably The Seven Habits of Highly Effective People.
In a nutshell, this means that sometimes success comes at a price. For example, it's not unusual for a project to get harder to maintain as it grows in popularity:
Of course, this is not always the case, but when it does happen it can be difficult to keep up with.
IMHO, these things are all fine and should be expected. They come with the territory of programming and maintaining open source projects. From that standpoint my typical reaction to most problems is: "get over it".
But what shouldn't come with the territory - and no maintainer should have to lose sleep over - is dealing with trolls and negative comments from users who only seem to want to beat the maintainers into submission, while showing no intent of helping to improve the project itself. This isn't programming, or maintaining, it's conflict resolution and PR, and it can be exhausting.
I know a few popular maintainers of highly popular projects who have either completely given up on collaborating publicly on any kind of open source development, or they switched to other languages to allow themselves to "start over" with a new community (specifically because of having to deal with negative people on GitHub). I don't want to get to this point. I'm a positive person in general, and I'd rather find a way to insulate myself from these people so I can continue to find a way to continue doing what I love.
Note on what "negative comment" means
There is a world of difference between a disgruntled user who expresses their frustration in a reasonable way, and a user who seems to only have their own self-interests in mind and wants to make sure that you pay attention to them by insulting you or making disparaging comments.
If you require clarification on this, or find that you need help understanding the difference between a constructive comment and an antagonistic comment, or you feel inclined to debate what "negative comment" means, then please consider reading this section.
If you find yourself in need of a morale boost, here are some tips for staying positive:
Sometimes attitude isn't enough and we need to take action. Here are some things that, while extreme, are sometimes necessary in order to keep a positive outlook:
This section is for those who just can't find a way to stay positive, and are having trouble keeping their negativity to themselves.
A mentor once said to me, "If I cannot help, I will at least do no harm". I now try to live by this rule, and I suggest you do too. It's only practical. You don't have to be half-Betazoid to understand that other people are more likely to go out of their way to help you when you're nice to them. After all, just because you experienced a bug doesn't mean that it's a crucial bug, or that it's urgent. Only the maintainers have the perspective to make this call. Good collaborators recognize this and do what they can to help - or stay out of the way if they can't.
But if you find that you are so frustrated about a bug you're dealing with that you can barely see straight, and you want to make sure the project's maintainers understand what you're going through, consider the following:
Now, we can take this information and do what we want with it. If you absolutely need something to be fixed, and it isn't getting fixed, you have options. The most obvious of which are:
If you don't have the time, knowledge, or inclination to do either of those things, unfortunately, that's just too bad. It's your problem, not the maintainers. The sooner you get over this, the happier and more productive everyone will be. Under no circumstances is it acceptable to berate a project's maintainers because you aren't getting what you want.
Exceptions to the rule
Here are the times when the above things are okay:
To quote Mr. Kipling:
If you can bear to hear the truth you’ve spoken
Twisted by knaves to make a trap for fools,
Or watch the things you gave your life to, broken,
And stoop and build ’em up with worn-out tools:
If you can fill the unforgiving minute
With sixty seconds’ worth of distance run,
Yours is the Earth and everything that’s in it,
If you can deal with the trolls, the negativity, the setbacks, the failures, and have the courage to start again, to fail again, then you'll embody the power of perseverance, and you'll carry that character with you in all other aspects of your life.
There'll always be fakes, trolls and (real) imposters. Karma's a bitch, let her deal with them. What's most important are your family and close friends. Work hard for them - they are the only ones who will always appreciate you.
Consider getting yourself one of these.
Thanks to the following devs who have helped make this guide better in some way.
Commits | Contributor |
---|---|
17 | jonschlinkert |
2 | rnicholus |
1 | Kissaki |
1 | doowb |
1 | martinvd |
1 | philmiller-charmworks |
Note: If you'd like to see the most up-to-date and complete contributor information, please visit the contributors graph.
You might also find these guides useful:
Jon Schlinkert
If you'd like to get in touch regarding a speaking engagement or consulting opportunity, please use the email address on my GitHub profile. Thanks!
Copyright © 2016, Jon Schlinkert. Released under the CC by 4.0 License.