I remember when I first came across Flarum, one of the things that really excited me was Toby's roadmap for stable. On top of all the great existing features and abilities of Flarum, it was really neat to see what lay ahead.
In the over two years (wow!) since Toby left the project, a lot has happened. We published 11 releases, including the long-awaited Stable v1.0.0. We came up with, and launched the Flarum Foundation to steward Flarum's future, and ensure that it always remains, free, open source, and accessible. We published a formal writeup of our philosophy and values for Flarum, and released Flarum CLI to help automate away the menial parts of development. And soon, we're resetting our backlog to a clean slate to help us make better, more relevant, and less stressful progress.
It's been a few years now since Toby released that roadmap, and it's about time for an update. Our current core development team sat down, and drafted our vision for the near future of Flarum, based around our long-term philosophy. So without further ado:
* mandatory futher ado: due to the way development works, it's likely that plans will shift and this document will change. But if they do, it'll be for the better of Flarum. Anyways:
๐ v1.x
These are the changes we're hoping to include in upcoming minor releases of Flarum. Some of these might roll over into v2.0.
๐ฅ Features!
- ๐พ A new bundled extension that will allow you to install, update, and delete extensions, and update Flarum, without using a terminal. If we get this right, a one-click-install experience becomes easy.
- ๐ก๏ธ A new bundled extension that adds automated tools to help assist with GDPR compliance.
๐ท Engineering
- ๐ฎ Rewrite the frontend of core and bundled extensions to TypeScript, which gives better editor hints when developing, and helps automatically detect bugs.
- ๐ Use PHPStan on the backend of core and bundled extensions. Similarly to TypeScript, this allows you to automatically check your code for some type errors.
- ๐ค๏ธ Adopt an "export registry" system for our frontend, which will automatically export most classes, functions, and objects to make them available to extensions. If possible, this could also include a system to reuse JS libraries between extensions.
- ๐งฉ More and better components, used in core and available to extensions.
- ๐งช Support for automated frontend unit testing via Jest.
- โ๏ธ Create a system of frontend extenders, which will make configuring the frontend safer and more flexible.
๐๏ธ Ecosystem
- ๐๏ธ New step-by-step "Getting Started" tutorials for extension developers in our documentation.
- ๐ค More tools to simplify managing extension infrastructure, updating extensions for new Flarum releases, and developing extensions for Flarum CLI.
โฐ๏ธ v2.0
These are the changes we're hoping to include in the next major, extension-breaking version of Flarum.
- โ๏ธ A major rewrite of our JSON:API layer that will drastically reduce the code extensions need to write.
- ๐ช A rewrite of our frontend components and CSS using Flexbox and Grid, which should make customizing the UI much easier and more scalable.
- ๐ A refactor of our admin dashboard implementation, with support for searching for settings across all pages.
- ๐ Better support for alternative search drivers, along with a refactor of our frontend search UI.
- ๐๏ธ Upgrading some of the libraries we use, such as Illuminate, to the latest versions.
- โฐ๏ธ Dropping core's dependency on jQuery.
- โฌ๏ธ Support for only PHP 8.0+, which will allow us to clean up our backend in some very nice ways.
๐ v2.x
These are changes we're hoping to include at some point in the future, but aren't sure when yet.
- ๐ฑ A redo of Flarum's mobile UI interface.
- ๐จ Support for multiple themes that users can choose from.
- ๐ A formal API specification for an extension marketplace, so you can use sites like Extiverse directly from your forum.
- ๐ก๏ธ Content Security Policy headers.
- ๐งฉ Widget support built into core, making it simpler and easier to customize frontend layouts.
- ๐งโ๐คโ๐ง A better groups/permissions system that scales well with many permissions, groups, and tags.
- ๐ฅ๏ธ Importers for other software, or integration with an importer framework.
- โ๏ธ A lot of other really cool things!
๐ Continuous Efforts
Some goals don't fall neatly into a release. These are issues where we might never reach 100% perfection, but we'll always strive to improve:
- ๐ซ Better accessibility.
- ๐๏ธ Better performance and scalability for large communities.
- ๐๏ธ Better SEO.
Help Us Make This Happen
If these plans excite you, please consider supporting the Flarum project. Our documentation goes over many ways to help. The most impactful way to help is to contribute to development: if you want to be a part of this journey, reach out and we'd be happy to help you get started. Contributors with a track record of activity are considered for our invite-only trainee programme, which can lead to becoming a full core developer.