How to Build Great Open-Source DevTools: With Max Howell (Creator of Homebrew)
Tags: tooling, opensource, tutorial, todayilearned
Published: 2022-08-15 21:40:00

I sat down for over an hour with the creator of one of the world's most successful developer tools, the near ubiquitous Homebrew package manager. This is the first in a four-part series that dives deep into our conversation to share some of the most actionable insights with the community. 

In today's blog, I get into the thoughts, advice, and lessons that Max shared when it comes to building and managing great open-source developer tools.

Thank you to the [Apache DevLake](https://github.com/apache/incubator-devlake) community for making this event possible, and to Max Howell for his time, wisdom, and generosity! DevLake is the open-source Dev-Data platform bringing all your DevOps tools into one customized, transparent, powerful dashboard! 

_"I think part of what allowed Homebrew to take off so quickly, was that by design, but also somewhat unintentionally, it was really easy to start hacking on, without needing to invest a massive amount of time or effort to get going."_  - Max Howell 

**Here are some of the most interesting and actionable insights he shared with us on building great open-source developer tools:**


- Figure out how to make error handling and messaging as informative as possible. The more you can help your users help themselves, the more readily your project can scale. Responsiveness is essential to build a great community, community is essential to building a great open-source project, if you aren't in a position to remain responsive as you grow, you'll be challenged to really scale. 

- Start small, and with a clear use-case and workflow. If your project is too large in scope and ambition, it can be challenging for developers to figure out the codebase and even harder to get started. Even if you have a grand vision, reduce it to the most essential ingredients.  

- Put together a ReadMe that quickly gets new people up to speed on several key things: 
  - What is this, and what makes it new and different? 
  - Who is this for, and what will they do with it? 
  - How do they get started and how do they use it? 

- Don't make your releases "too polished" and be mindful of achieving a balance where there are clear areas and opportunities for new contributors to fix and improve things. There are levels to becoming even more strategic with "good first issues" etc. 
 
- From a product/project strategy perspective, be cautious about adding too many features, if you make it easy for the user to "shoot themselves in the foot", it's less likely that they are going to keep using the product. Reliability in both implementation and execution are critical to obsess over. If people 'hurt themselves' or their project with your tool, they'll never come back. 

- As a project leader, you need to stay focused on how you're really empowering your end-users to work more effectively, seamlessly, and quickly on the things they care about: 
_"They don't care about your project, they're probably grateful for it, but they care about what they are building, what they are working on, and that your project helps them do that better."_  - Max Howell


- Be obsessed with reducing the number of steps and the number of proverbial "hoops" to jump through to get to the key distinguishing feature. 

_"90% of developers don't want to spend excessive time tinkering with things, figuring out something that they may or may not end up finding valuable, the power users will hack their way through regardless, but to get real momentum it has to be easy and FAST."_

- Find ways to really work with the major ecosystem tools, platforms, and infrastructure _"open source developer tools are always incremental, and built on the shoulders of giants."_ You don't want to build something that requires some fundamental shift in how they are already working, to succeed you have to be harmonious with existing behaviors, and require the least amount of behavior changes to adopt. 

In my next blog from this interview, I'll be sharing Max's thoughts on how to maintain and manage an open-source project effectively as it goes from initial community-pick-up to global sensation. Follow along for the next post!

Join me for my next interview with Sharan Foga, Board Member of the Apache Software Foundation this Thursday! 
https://lu.ma/01lv9yy0

Learn more about what we're up to with DevLake: https://github.com/apache/incubator-devlake