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.

    askvortsov 💾 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.

    So excited 😄

      datlechin Getting things done with the terminal made me feel more special. I hope this feature comes in the distant future 😄

      Very surprised with a lot of things, I can feel that you are going to do what the current core team really wants nowadays, which makes perfect sense and is good for Flarum, it is certainly a fresh and motivating approach. Very excited to see this roadmap become a reality. All my support!

      Good stuff. Thanks as always for all of the work and thought you and the core developers put into this project. It’s one of the best open source, self hosted projects out there. It has been for a long time and will continue to be for a long time! 🙏

      Just don’t do too many things just to do them. Or because they are the cool thing to do right now. Which I know is an impossible ask.

      I wish extensions never had to break. Beta to 1.0 was understandable. Or, having to adjust something due to a new PHP version for example is understandable. Losing an extension completely and not being able to fix it is harder to take.

      But I know that’ll be pretty far down the road yet. Maybe by then extensions will create themselves and I’ll be nothing but a body and A.I.

      askvortsov 💥 Features!

      🥰 That's so amazing if you add those features for shared hosting 😉
      Flarum is in softaculus and maybe will be the perfect time to add those features.

      Will flarum grove up and continue like now with his great community

      askvortsov 💾 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.

      🔥🔥🔥🔥🔥 managing a server is really a big headache that's why we look for shared hosting options, make flarum fully compatible with shared hostings including extension store like wordpress plugin store.

      askvortsov 🧩 Widget support built into core, making it simpler and easier to customize frontend layouts.

      🔥🔥

      askvortsov 📥️ Importers for other software, or integration with an importer framework.

      🔥

      Excellent roadmap, guys!

      askvortsov A new bundled extension that adds automated tools to help assist with GDPR compliance.

      IMHO, although it might be not a so "optically" observable feature for a regular user, I find it to be of extreme importance for Flarum's sustainable development nowadays. Very nice!

      Whats about Freeflarum? They still restrict extensions managements after the roadmap completed?

        wolfshards Probably @SKevo can tell us what he thinks about this, but I'm pretty sure that FreeFlarum won't add the package manager to their platform.

        This development sheet is very complete and consistent. I can't wait to test this new version and give you a feedback of my experience. Thank you for this huge development work.

        wolfshards to answer your question, then it's a no.

        As for me, I love where Flarum is heading with this. It will really help the less experienced people to install additional extensions for their forum - and that sounds really great for folks that self-host. But with FreeFlarum, there would need to be some system in place that reviews the extensions to only allow safe and trusted ones to be installed. And actually, there already is our GitHub repository that you can use to request new extensions, so I personally think that this feature would be redundant in our case anyways.

        ☁️ A major rewrite of our JSON:API layer that will drastically reduce the code extensions need to write.

        Has anyone written about the current challenges being faced? I assume this will involve a considerable backwards-compatibility break so I'm interested in what goals are in mind for this.

        Better support for alternative search drivers

        Are you looking to support a specific list of alternative drivers, or attempting something more generic?

        The 2.0 section in particular looks like it's been mostly distilled to items that break backwards compatibility, which shows considerable restraint. 😄 Folks tend to get carried away with those '.0' releases in my experience. Will be interested to hear more about those plans as details get figured out.

        I also appreciate the commitment to press forward with PHP deprecation. I know it's troublesome for many folks but it really does require apps pushing their requirements forward to get folks off of insecure versions in a timely way IMO, and no 7.x versions will be getting patches by then I'm sure.

          linc Has anyone written about the current challenges being faced?

          From my limited understanding (I haven't worked on the JSON:API side of things all that much) the current library we use is outdated and poorly documented which can/will lead to issues with PHP version compatibility in the future along with potential performance issues. Because it's outdated it also most likely does not support the most recent changes/upgrades to the JSON:API spec.

          Our goal is to completely replace our current library with an updated one that is properly maintained and documented for better performance and a better guarantee that it won't break when new versions of PHP are released. Not only that but upgrading will hopefully mean better support from JSON:API spec items that are newer.

            tankerkiller125 Oh I see, so it's more a "refactor-in-place" type of change, and less a "change the API structure to provide new/different data" item. Good clarification, I was off in left field with my reading of it, thanks!

            [2.x] Importers for other software, or integration with an importer framework.

            I still hope to beat 2.0 by a wide margin with a fully rebuilt Porter tool that also supports Flarum. Lacking something existing on your side, my current plan is to dump to SQL directly, but this is likely to leave some gaps (like secondary generated data or other things I don't want to duplicate the logic for on the importer side — I haven't dug enough yet to name what that could be). If there's some other format or considerations you'd like me to make, hit me up sometime in the next month or two. I continue to noodle on this most weekends after setting it aside for a bit over the holidays.