#8 – On building community
I recently announced the release of Melange 1.0. To my (pleasant) surprise, it generated way more buzz than I anticipated, including a whole day on the Hacker News front page (you can read the discussion here).
All the interest and commentary is, to me, a sign of clear validation that Melange fills a gap in the OCaml ecosystem. It's been refreshing to hear from more people who share the same perspective.
This renewed influx of Melange users reminded me that many of you don't know how I work. And that I've never laid out my thoughts on community building. In this issue, I'd like to fix both. Let's get into it!
Good ideas come from anywhere
To me, it doesn't matter whether you're a seasoned expert in Programming Language Theory or just getting started learning OCaml or getting into Melange. You're welcome, and you're in the right place. Everyone brings a different set of experiences to the table; good ideas are portable, and I especially love hearing from non-traditional backgrounds and communities I'm not a part of.
Prioritize Production
I adhere to the maxim that software is only tested in production. Most of the time, production use cases inform and prioritize the features we build. Personally, this tight feedback loop is what makes a project thrive: production needs allow gathering accurate and actionable feedback from real users. It provides focus, and it provides clarity.
Community as a marketplace of ideas
Competing projects make each other better. In our small corner, it's indisputable to me that Reason had a positive impact on the OCaml ecosystem: esy proved that OPAM could do more and better (and soon, Dune too), brought us OCamlformat, inspired tooling improvements in Merlin, odoc and Dune, and brought new libraries and tools to the OCaml ecosystem.
My current philosophy is that tinkering and experimenting with new ideas is what makes a community flourish. Different users have different constraints; different libraries and tools cater to different use cases; different applications need to make different choices.
Where do I belong?
With Melange, we're trying to foster a community that encourages members to experiment, exchange ideas and, ultimately, ship great software.
I look at my role in the community as a facilitator:
- I'm reachable: you can contact me directly. I don't stand on a pedestal. You're encouraged to reach out and share any feedback.
- I want to empower: you want to ship great software and I'm probably the bottleneck. My role is to get out of your way and implement the features you need to make a great app.
- I want to learn: feedback and iteration is how great products are made. I want to learn what use cases you have, and why Melange is lacking (see 1.). And I want to change my opinions based on your feedback and evidence.
Parting thoughts
I hope the above was clear and informative. I prefer operating in public, and being transparent in our process and the choices we make.
I'd love to hear feedback on the above, and how you think we could do better. Please don't hesitate to reach out.
As always, Happy hacking!
- Antonio