Many articles have been written about some unacceptable elitist behaviors of software maintainers and other project leaders. I couldn’t agree more, I think nobody should be a jerk. On the other side of the story, do you ever wonder what kind of problems a maintainer usually encounters in his daily routines?
This question is harder to answer, particularly since not everyone ever maintains a software project (while almost everybody is a user of one or more software). From years of observing many different communities, and also from my own experience, this a typical list I can come up with. Note that some parts are biased towards FOSS (free/open-source software).
Demanding users. As soon as an application gains some traction, it is almost guaranteed that some users will start to ask for unreasonable things. Many times a maintainer will be requested to solve the design or architectural problem of the user’s project. The line which defines the responsibility often gets blurred.
Impatient (potential) contributors. Just because a project is hosted on GitHub, it does not mean somebody can create a patch, submit a pull request, and expect it to be immediately accepted. There are still house rules, everything from the testing workflow to the commit log format.
Opinionated, non-constructive rant. Someone looks at the project for 10 minutes, decides that it doesn’t satisfy him, and then ends up writing a philosophical dissertation about it. Aggressiveness and drama do not bring anything anywhere.
Note that some activities above can be still helpful, it always depends on the context. And obviously, there is no strong reason to be extremely upset if such things occur in our life.
If you are a project maintainer, what would be the best strategy to handle such an influx of negative energy? Here are my tips, feel free to share yours.
Establish an explicit contract. For example, if you are doing this on your spare time, simply state the situation. Who am I to judge when you prefer to spend time with the family instead of fixing a bug?
Never take it personally. When an expectation is not fulfilled, it is very natural to find a scapegoat. Human has a knack for passing the frustrating problem to someone else down the food chain. Often, you just happen to be in the wrong place at the wrong time.
Focus on things that matter. If you are tempted to respond to every single attack on Hacker News, you are doing a disservice to your happy users. Critics are important but they should never redefine who you are or even reschedule your priorities.
Take some time off. Surprisingly, life goes on even if you stop doing anything anymore. It’s just a piece of software, if it gets abandoned then someone will pick it up and continue where you left off. No pressure!
Software maintenance is a nice exercise to self-restraint. As with any other emotional exercises, it will make you a better person. Remember that maintaining a software project is an honor. For an open-source project, it is an important mission to the community.
Stay hungry, stay passionate!