Flarum

Forums made simple. Modern, fast, and free!

Extensible

Elegant UI

Mobile First

Stylable

Fast & Light

Secure

Trusted

Localised into many languages with 35 translation packs

english
italian
german
indonesian
ukrainian
Русский
turkish
עברית
bahasa melayu
spanish
brazilian portuguese
română
sinhala
swedish for flarum
czech
vietnamese
japanese
dutch
正體中文語言包
hungarian
hindi
tamil
finnish
bosnian language pack for flarum core and multiple extensions
greek
简体中文语言包
korean
uzbekistan
slovak
azerbaijani
arabic
flarum lolcat
thai
croatian
latvian

Showcase

giffgaff

As a leading British telephone network, giffgaff serves millions of customers. Through innovative use of Flarum, they've built up a passionate peer support community, improving support and engaging customers.

Ten Digit Grid

An avid adventurer and hiker, Mike has found Flarum to be an excellent platform for blogging about his trips, discussing gear, and meeting fellow hiking enthusiasts while slowly increasing engagement.

UPC Switzerland

Leading provider of communication and entertainment in Switzerland. Their Flarum community creates a framework for healthy togetherness while supporting their customers with an appealing, user-friendly community experience.

Blog

Flarum 1.2.0 Released

v1.2.0 - Quokka


An image of an Australian Quokka

📣 The Release


Yet another year has gone by, and another year has come, the Flarum team wishes a happy new year to all of you flarumites 🎉, and may 2022 be another exciting year for the project.
And with all the recent festivities, Flarum also comes bearing a gift! we are very happy to announce the release of Flarum v1.2 which contains more than 240 commits 🤯, made up of bug squashes, performance improvements, accessibility fixes, and some nice feature additions. With over 105 issues closed on the milestone, this is Flarum's second biggest release to date. Let's see some highlights:

👨‍💻 For Developers


Most extensions should be ready-to-go on Flarum 1.2 out of the box. If you're overriding component views, directly manipulating the DOM, or changing core behavior through service providers you might need to implement some minor changes in some areas, here are some key points:
  • For theming, we have now fully switched to using CSS custom properties. It is advised to declare your additional variables, especially colors as CSS custom properties and use them, for an easier transition to 2.0. Check out the pull request for more info.
  • The evented util is now deprecated (flarum/core#2547).
  • Pushing unregistered models to the store is now deprecated (flarum/core#3206).
  • Providing models as attributes to Model.pushData() or Model.pushAttributes() is deprecated (flarum/core#3249).

⤴️ Upgrading


Before you upgrade, make sure to create a backup of your public/assets directory, your composer.json and your database!
Before starting the upgrade process, ensure you are on Flarum 1.0.0 or above in your Admin Dashboard or by typing php flarum info. If you're not, use the previous release notes for upgrading from an earlier version.
To upgrade from 1.0 or 1.1 to 1.2, take a look at our upgrade guide documentation. The process should be much easier compared to previous major version upgrades, due to the lack of breaking changes.
If you run into any issues, please open a new discussion under the Support tag. Ignore similar discussions, and open a new one anyhow. Make sure to mention the output of php flarum info, composer why-not flarum/core v1.2.0, and any errors to their fullest.

🙇‍♀️ Acknowledgements


Flarum wouldn't be the same without our over one hundred contributors, along with their generous time commitments! For this release we specifically thank these wonderful people:

🆘 Support the Project


We need your support to:
  • Guarantee continued development on the software.
  • Create a valuable ecosystem around the project.
  • Ensure healthy extensions are available.
You can support us:
  • 👕 By getting some swag from our merchandise store!
  • 💵 By backing us on Open Collective or on GitHub.
  • 👩‍💻 By contributing to the source code, hop onto any of our open issues.
  • 📈 By creating your own Flarum extensions and sharing them with the world!
  • 🌎 By translating Flarum and extensions into your own language.
  • 💝 By sharing your love for Flarum with friends, family and on the internet.
  • 💬 By hanging out with us, here on discuss!
If you're looking to get coding, make sure to check out our documentation.

🔮 What now?


As with every new release, stay tuned for potential patch releases, we will also very soon release our brand new revamped roadmap for v2.0 🚀.
The Future of Flarum: A Roadmap
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.
Flarum CLI v1.0

Flarum CLI

oclif Version Downloads/week License
A CLI for developing Flarum extensions.


📣 The Announcement

Supporting our extension ecosystem in building even more awesome extensions, is something we firmly believe in. As such @askvortsov has been hammering away at this project (RFC: Flarum CLI Alpha, Flarum CLI Dev Diary), setting up a solid foundation for it to create a powerful tool for extension development that would help developers by automating some repetitive and menial tasks, and allow them to get into the actual work without much hassle.
Today, we're very excited to announce the 1.0 version of this tool, it comes with a range of commands to assist you along the way.

📥 Installation

Using npm simply run the following command to install the CLI globally.
If you have the alpha version installed, remove it first:
$ npm uninstall -g flarum-cli
Now install the new package:
$ npm install -g @flarum/cli
To run a command, use either flarum-cli or fl:
$ flarum-cli COMMAND
$ fl COMMAND
To see a list of available commands, run either of:
$ flarum-cli
$ flarum-cli --help

⬆️ Updating

$ npm update -g @flarum/cli

🌟 Highlights

The CLI has different types of commands for different tasks:
Initialisation
  • flarum-cli init [PATH]: Generates a blank extension skeleton, including all recommended infrastructure.
Infrastructure
  • flarum-cli infra backend-testing [PATH]: Adds (or updates) infrastructure for running automated backend tests.
Backend Boilerplate Generation: Generates different types of backend classes and/or extenders, ready to be used.
  • flarum-cli make backend api-controller [PATH]
  • flarum-cli make backend api-serializer [PATH]
  • flarum-cli make backend api-serializer-attributes [PATH]
  • flarum-cli make backend command [PATH]
  • flarum-cli make backend event-listener [PATH]
  • flarum-cli make backend handler [PATH]
  • flarum-cli make backend integration-test [PATH]
  • flarum-cli make backend job [PATH]
  • flarum-cli make backend migration [PATH]
  • flarum-cli make backend model [PATH]
  • flarum-cli make backend policy [PATH]
  • flarum-cli make backend repository [PATH]
  • flarum-cli make backend route [PATH]
  • flarum-cli make backend service-provider [PATH]
  • flarum-cli make backend validator [PATH]
Frontend Boilerplate Generation: Generate frontend components/classes, ready to be used.
  • flarum-cli make frontend component [PATH]
  • flarum-cli make frontend modal [PATH]
  • flarum-cli make frontend model [PATH]
Code Updates:
  • flarum-cli update js-imports [PATH]: Adds admin/forum/common namespaces to all JS imports from flarum core.
And of course, you can always use the help command to see a list of all available commands with their descriptions:
  • flarum-cli help [COMMAND]

🔥 The Most Powerful Commands

Of all the aforementioned commands, the two most powerful ones that will make a huge difference, are the extension initialisation command and the backend model generation command. The former obviously allows to kickstart the extension with the recommended skeleton from the Core Dev team, while the latter not only creates the backend model, it allows to create all the classes related to the model, from just its name:
  • Table migration
  • Policy
  • API Serializer
  • CRUD API Controllers
  • CRUD Handlers
  • Repository
  • Validator
  • Routes
  • Related Extenders

terminal_example
example_project_with_model_command

🧑‍🏭 Support & Feedback

If you encounter any problems while using the CLI, or would like to propose additional features/commands, please open an issue in the github repository.
Any and all feedback is appreciated.

Links

Flarum v1 Release Announcements
This discussion acts as a way for people to subscribe to announcements on releases. Before stable we would announce releases as separate discussions, because all changes were bundled and released as one beta.
Having passed that milestone we have already released several patch releases for v1.0. These releases were announced either in the v1.0 release announcement or in the Dev Diary. We felt this is not the right place.
From now on we will announce ALL releases, no matter the size, in this discussion. 🔔 So make sure to follow.
  • ⏰ Releases for Flarum and all bundled extensions are announced here and/or linked to.
  • 🔇 Comments are disabled. Please open a discussion for feedback or support.
Previous Release Announcements
Dev Diary: Build 20
Here we go again 😉
v1.2.0 was just released, let's continue keeping you all in the loop about our progress as much as we can.

Developers

Extend

Learn how to harness the extensibility of Flarum to create your own extensions and customize your community.

EXTEND

Contribute

Help us make Flarum even more powerful and customizable! Every bug report, pull request, and documentation improvement is a huge help.

CONTRIBUTE

Built with the best tools

Have you ever changed tires with a spoon? Using the right tools for the job is key to success. We thank our technology partners for their generous product donations!