Making Open Source a Happier Place

Open Source is one of the most wonderful aspects of the software development world. Through OSS we all get high quality, well tested, and enduring technology for zero dollars, and can find many people to hire and collaborate with that understand and use the technology every single day.

But it’s not all sunshine and roses. As more and more people use specific OSS projects for real production use and livelihood, tempers and stress levels rise. Maintainers work hard to balance the demands of the community with the vision of the project and their busy schedules, and users work to be understood and have their desires heard, often under intense time pressure and conflict with what other users want. As a project becomes successful, the ratio of maintainers to users becomes impossibly lopsided, and things can get out of control.

I know because I’ve felt this working on Ionic, and so have our employees, contributors, and users. I love working in Open Source, and while the overwhelming majority of community interactions are positive and uplifting (did I mention I ❤️ our community?), sometimes the level of discourse can turn negative and toxic given the complexity and scale of what we’re doing. This leads to burn out, lack of motivation, and unhappy users and contributors. After talking with other OSS folks, I realized we’ve all had experiences where we faced what was probably abuse either as a maintainer trying to explain why something had to be a certain way, or as a user submitting a PR or just asking a simple question.

I also recently realized that Ionic is in a position to change this. We are a very popular OSS project used by millions around the world, and we are also a commercial entity with resources to invest in change and a very real incentive to fix things. We want Open Source to be a positive environment to work and play in, and we want Ionic to be a shining example of what a productive and inclusive Open Source community can be.

To that end, I’m making a few changes and promises on our end, and I will hold other projects to the same high standard in an effort to start to change the industry. Let’s walk through some of those solutions and changes.

Have a Code of Conduct, and follow it (for *everyone*)

Ionic has had a Code of Conduct since the beginning of this year, and the basic idea behind it is that discussions should be constructive and not devolve into personal attacks or trolling. It’s common sense stuff.

Codes of Conduct are a bit controversial in the community, but here’s another way to look at it: a CoC becomes an easily referenced and linkable document that indicates that your team takes constructive discourse very seriously. It removes the need for your team to improvise the kind of language the CoC codifies, which can be difficult and time consuming to do. It also signals to newcomers that the Ionic team will support them, because contributor-to-contributor abuse is not okay either and is fairly rampant.

This also means your team has to follow it. It’s rarely an issue, but Codes of Conduct are there for your team, too.

Going forward, we will increase the enforcement of our Code of Conduct and make it more clear that violations of it will not be tolerated. That includes conduct between our team and individual users, and between users.

Allow your team to block and ignore

This isn’t a big issue for individually-run projects, but for those working on OSS in a commercial setting, it can be hard to block or ignore certain toxic community members because that feels like a decision the company has to make about how to manage out certain “customers.” It’s even harder when the abuse is between users.

This is something we need to work on at Ionic, but a month or so ago I told the team that it’s okay if they block certain people because I can’t reasonably expect them to deal with abuse and toxicity and still enjoy coming to work every day building awesome stuff, and I want to ensure that users also have positive interactions with other community members.

The more I thought about this, the more I realized that the company has a major obligation to defend its contributors and users against toxicity because burn out is real and these team members and users are what makes the project successful at all. I intend to be hyper-vigilant about defending our team and community now. We want everyone to feel like Ionic is a community they feel happy about being a part of.

Again, 99% of Ionic and other project’s community members are wonderful and respectful, but the old adage that the negative voices are often the loudest means the respect can get drowned out.

Don’t put down other projects

OSS is big business these days, and not every company or team building open source believes in the same values of collaboration and positivity that many of us do.

Things I won’t ever accept from the Ionic team include using community content against that community (twisting words, etc.), writing smear pieces or biased comparison sites, or being negative towards projects and contributors of software we’ve used or use in Ionic. That doesn’t mean we won’t fight for our values of making the web a better place, but we will work hard to do it in a constructive and respectful way.

I expect the same from anyone else in OSS and refuse to work with any team that doesn’t share the same values. Unfortunately, that list is not empty. The positive side of this is that users are smart and they see when OSS is turning dirty, and it feels like a violation of the OSS ethos that is so important.

We want the community to feel like Ionic is using their awesome support for good, not evil.

Ionic’s promise

Every item on this list at some point in time we’ve not upheld as much as we would like to, and we’re hardly perfect. My promise to the community and to the OSS world in general is that we are going to start to take positive and constructive discourse very seriously both amongst ourselves and our community. That doesn’t mean avoiding problems, but focusing on identifying and fixing them in a constructive way. We are all on the same team trying to move the web and Ionic forward.

Ionic Framework can’t afford the kind of mental burn out that toxicity causes, and we don’t want to be complicit in causing it for anyone else.

My promise to the Ionic community, mobile OSS world, and contributors is that we will uphold these values. If ever we slip, please point it out and we will adjust. We expect the same of other projects.

At the end of the day, Open Source is one of the most positive and powerful forces in technology, and I’m so thankful to be a part of it. We’re all working on ways to move the world forward and to do it with free and open technology. That’s an incredible, positive effort, and we need to keep it that way.

Now, back to work! ❤️