Since Flarum was founded in 2015, our "north star" has been the stable release: getting Flarum out of beta, and into production. Now that we've released 1.0.0, a whole new world of possibilities has been opened.
As we move into the post-stable era, one of our top priorities is the stability of the project: we want Flarum to keep growing and improving for a long time, across many generations of developers. A key step towards this is building a strong culture: a set of core values, beliefs, and goals shared across the development team, community, and broader ecosystem.
In this post, we've put to paper a first revision of what we, as a team, see as Flarum's core values.
Product Values
Framework First
We recognize that every community’s needs are different, so we don’t pretend that core is an all-in-one solution. Instead, we’ve decided to keep Flarum core a streamlined framework for our extension ecosystem. This offers several distinct advantages:
- Communities can have the features they need, and only the features they need, simplifying UX and reducing resource cost.
- Since extensions are prioritized, communities can easily tailor Flarum to their needs.
- An extension ecosystem (including premium/private extensions) results in financial investment, which is crucial for long term stability.
- To keep things extensible, we want to keep both the UI and the software architecture streamlined and minimal. We believe that this leads to a better experience for users, admins, and developers.
- A smaller core is much more maintainable and easier to test.
- Domain experts (often third parties) can drive development of features and functionality, so the core Flarum team can focus on stability, extensibility, and expandability.
Flarum core will likely never have the 50+ staff members that many competitors do. But it doesn't need to! If we do this right, a small team will grow and refine our core much faster than a for-profit army could with a monolith. But more importantly, the community surrounding Flarum will become much, much larger than a proprietary forum software's team ever could.
We believe that this is our single greatest differentiator and competetive advantage. It's not as flashy as the UI, (lack of) cost, or any particular feature, but the potential is truly unlimited.
Truly FOSS
First and foremost, Flarum is a forum platform. This comes with the obvious challenge of funding: we rely on volunteered time, individual donations, and support from companies to drive development.
That being said, we believe that this approach is actually an enormous competetive advantage, because we have no competitors in the Flarum ecosystem. When development agencies, premium extension developers, paid service providers, etc make money from Flarum, that is a win for us! Our interests are automatically aligned with the vast majority of commercial projects around Flarum.
In the modern generation of forum products, Flarum's edge remains its committment to being Free and Open Source Software. We are not a for-profit company with an open source product, nor do we charge a license fee. Instead, we emulate the giants of old in remaining free software, while using a modern architecture and fresh approach to the forum concept. This makes Flarum uniquely, truly FOSS.
Flarum is for Everyone
There are two sides to this value.
Firstly, Flarum must be accessible without barriers due to language, culture, or disability. This includes:
- An internationalization-first mindset when developing: all text should be translatable!
- Improving support for foreign language communities (for instance, search is a big area we should continue to focus on).
- A first-class accessibility and screenreader experience.
Secondly, while we will continue to optimize performance and scalability, we never want to cut off the shared hosting market. If anything, we want to put effort into tools that will make shared hosting easier.
Organizational Values
Shared Ownership and Responsibility
Flarum is not owned by a business (see "Truly FOSS" above), it's owned by the community (under the stewardship of the Flarum Foundation). Active/engaged community members generally rise to respected / staff roles, and prominent commercial entities in the ecosystem have a voice through their needs and contributions (again, see "Truly FOSS").
As a team, we have shared responsibility over the development and growth of Flarum. We can organize and have formal or informal development leadership, but we don't think Flarum should ever have "bosses" in the traditional sense.
Every Flarum team member became part of this team because we put our time and energy into Flarum. And I believe that's how we should continue to operate. Everyone should be taking ownership over some projects/aspects of Flarum. A situation where someone is doling out orders and instructions to others is a failure: it centralizes what should be a decentralized, collaborative effort, and creates a bus factor problem.
General Values
Trust Matters
Trust is very hard to build, but easy to lose.
When someone chooses Flarum, they are putting their trust in us. They trust that:
- Flarum will continue to develop and grow.
- Flarum will support them if something goes wrong.
- Flarum won't break significantly without a workaround.
- Flarum will remain free and available.
And the unfortunate reality is, it takes just one incident to seriously shake that trust.
During our beta period, we had a lot of (necessary) growing pains: betas 8, 14, and 16 especially included major breaking changes and bugs.
Now that we are stable, we must change how we work to build long term trust, and honor the promise of stability:
- This is an obvious one, but no breaking changes to the public API in minor/patch releases!
- We should work to improve experience when users (inevitably) run into issues. Support is a key part of trust.
- Big bugs should be patched ASAP and tagged as a new release equally ASAP. Having to wait for 2-3 months can be a dealbreaker.
- We need to support and encourage more testing automation, and provide QA tooling if we can.
- Changes that break things in our main GitHub branch should be reverted or fixed as a top priority. We should try to keep the main branch clean and working.
And then, there's the matter of extensions. This is one of the challenges of a decentralized ecosystem, because while we can improve and refine Flarum core, we cannot directly control the extension and service ecosystem. But trust in Flarum depends on it just as much (if not more) than it does on core. If our philosophy is that features should be implemented as extensions, crucial extensions cannot go out of commission for months on end. This means that:
- The core team should (continue to) consider impact on major extensions when developing core.
- Community developers should be encouraged to prioritize the most important/impactful extensions.
- Community members should feel empowered to contribute to / support the extensions they know and love.
It takes a village, but if we work together, we can go incredibly far.
Finally, trust matters just as much on the individual level as on the team level. If promises aren't kept, commitments aren't kept, and communication isn't consistent and reliable, trust and morale can take a serious hit. This is why one of our strongest internal mantras is "Underpromise, overdeliver".
What Do These Values Mean For Me?
If you've found yourself nodding along while reading this post, Flarum might be a good fit for you! We'll post more information in the coming weeks/months, but for now, here's a quick overview of how you can get involved:
If you're a developer, consider contributing to Flarum. We have an extensive list of good first issues, and documentation on how to get started. This is the most efficient way to help Flarum, and your work can have a lot of impact: there are thousands of Flarum sites out there, with millions of total end users.
If you're experienced in technical writing, your contributions to our documentation could help future users, admins, and developers make the most of Flarum.
If you speak multiple languages, translation contributions could help make Flarum accessible to countless users around the world.
And if you just think Flarum is cool, please consider blogging/tweeting/talking about it! More people aware of Flarum leads to more people engaged with Flarum, and therefore more activity, better extensions, and faster development.