Building Online Communities: Home Assistant
Paulus Schoutsen is the founder of an open source home automation platform, Home Assistant. He told us about how the project developed from a personal hobby to a whole ecosystem with over a thousand participants. Find out about Paulus’ approach to community building, and check out the Home Assistant community channel on Gitter.
Tell us about a little bit about yourself and the Home Assistant community. What is Home Assistant & what’s the story behind it?
My name is Paulus Schoutsen and I’m a Dutch software engineer living and working in San Diego, California. In my spare time I maintain Home Assistant, an open source home automation framework written in Python 3. It started out as probably every home automation project out there, I wanted to automate my house. I got the Hue lights and wanted them to turn on when the sun was setting. From there it grew into a big ecosystem of home automation with a very active community.
What common goals do you have as a community?
Home automation is a complicated matter. There are many different devices that speak many different languages. Home Assistant tries to get them all together but is not perfect. This means that things might not be fully straightforward from the beginning, despite our documentation efforts. Our community is very strong in helping one another get started with home automation and inspire new projects.
What issues related to the project are you personally most excited about these days?
As the lead I’m mainly focusing on managing all the contributions. The barrier to contribute is very small as people can add support for their favorite device without impacting the rest of the system. This however leads to a lot of activity which needs to be code reviewed and pass our tests.
Getting contributions and seeing the project grow is exciting, and we just passed the 200 contributors on GitHub, which is amazing. The other part that excites me is working on the frontend of Home Assistant. I’m always looking into incorporating the latest web technologies into it.
What are the main issues discussed in the home assistant channel on Gitter?
Configuration of Home Assistant. We use YAML as our configuration format which is indentation based. This is not straightforward for most people that are not used to editing text files or use text editors that do not have a fixed width font. We have been putting a lot of effort into giving better feedback when the config is wrong but this is an ongoing goal.
Besides that, people are also talking about all the new Internet of Things devices that are getting to the market and how we can integrate them.
We also have a separate dev channel which is used for talking about developing for Home Assistant. We have over 300 different components and platforms for integrating devices and third party services. All these are maintained by people in our community so you can imagine it’s always busy!
What are the most important factors that you have taken into account while creating and maintaining the community? What factors contribute to the success of your community? What are the key challenges?
Creating a community is hard when you’re just using GitHub. That’s what we did in the beginning — and we pretty much did not have a community. It was mainly me working on it. I then started a mailing list and wow, 10 people subscribed in the first day. Still, the mailing list was all about issues, no general chit chat. So even then, we still didn’t have a real community. It wasn’t until we added a chatroom via Gitter that I really got the feeling of a community. In a chatroom the feedback loop is way shorter, you get instant replies and people are also less afraid to say something stupid. This resulted in more people being helped and more people sticking to Home Assistant.
We later also added a forum at https://community.home-assistant.io.
How do you encourage participants’ commitment and contribution to the community?
We have several tricks up our sleeve to encourage participating in our community.
Coding wise, it is very easy to get started by adding support for a new device to Home Assistant. You implement a basic class and Home Assistant will make sure it plugs into the system. This allows people to add support for their device by writing 40–50 lines of Python code. (Example video showing how easy it is)
For the documentation, we have an “Edit on GitHub” link on every documentation page. This significantly lowers the barrier for people to suggest changes for our documentation.
Sharing configurations helps people learn from one another. People spend a lot of time configuring their home and by sharing it, become a part of the community. People will ask questions and give feedback.
Last but not least, one of the great things about Gitter is that it allows people to see the chat room in read-only mode without having to login. This allows people to get a peek at how active our chat room is and how people are getting help. This helps with people joining the chat room — and once they are there, it is easy to become part of our community.
Based on your experience, do you feel that the open source communities have changed and evolved over the past years? If so, how?
When it comes to Internet of Things communities: yes. Hardware has become so cheap nowadays that it is available for many. You can run Home Assistant on a $35 Raspberry Pi. On top of that things like the Arduino/ESP8266 make it also very easy to tinker with your own leds, sensors and switches etc.
What advice would you give to someone who wants to start an online open source community from scratch?
Don’t reinvent the wheel if you don’t have to, and divide your project into as many pieces as possible. Doing so, you will allow people to use just a standalone piece that your project depends on and find bugs etc. Take for example my PyChromecast library. I made it so I could add support to Home Assistant. By keeping it standalone it attracted a lot more users and got contributions to fix bugs and improve things from non-Home Assistant users.
Another thing, make sure people can talk to one another. You will not get a community with just GitHub issues. Communities are about personal relationships and they can only be made when people can talk freely, without the pressure to stay on topic.
Also, always encourage any initiative that is using your project. Even if it is not how you meant it to be used. You never know how that initiative will expose your technology to a potential future contributor.
Anything else that you would like to add?
Keep up the good work, ❤ Gitter!