Background on My Flarum Experience
Before I can get into what I learned when I started working on Flarum long term, we first must dig into how I found it when I found it and how I first started using it. It’s essential to get this background information so that you know where my thoughts, opinions, and feelings come from. Something else we need to talk about as well is my development/work background as well.
I first found Flarum kind of on accident one day as I was browsing through Kickstarter looking for the next project I expected to fail (to keep tabs on) when I randomly ran into Flarum. The first thing I thought when I saw it was merely “there is already forum software, it’s sure to fail”. I shared the Kickstarter link with several friends and, most notably, some people on a Minecraft server I was working for as their operations engineer. They also believed that the project would fail.
It wasn’t until quite sometime later when this little Minecraft server project needed a forum, and we began searching for one. We looked at all of the traditional forums (phpBB, esoTalk, FluxBB, etc.), and we looked at both paid and free software. It wasn’t until we decided that we wanted something modern did anyone remember Flarum. At that point, Flarum had moved to GitHub and had reached a beta stage. I decided to test it out locally and was immediately impressed by its speed, extensibility, and overall minimalism. After further review, our dev team and “management” decided that we would try Flarum. This is also when I created my discuss account. I also made my first PR around this time I think.
This first try of Flarum was very successful for our small community. We for sure had some migration pains for users (notably the change from highly specific categories to tags), but after the learning pains were over, everyone agreed that we made the right choice. At this stage, Flarum did not have an extensive extension ecosystem, but it was fine because it did what we needed. After that Minecraft server eventually shut down, I did not use Flarum for quite some time. It wasn’t until this past year or so when my workplace wanted an internal forum that I remembered Flarum and decided to check into the progress and possibly use it again. (Hint: We did, and everyone is loving it!)
Becoming a Trainee
As we began using Flarum at work, I decided that even if my company wouldn’t contribute back (no PHP devs in the company), the least I could do was contribute back myself. This started with some basic documentation updates, after which I was contacted by jordanjay29 from the team to ask if I wanted to work on the docs in a more official manner. I said sure, but I also contributed a little bit of code, this prompted luceos on the dev part of the team to reach out and ask if I wanted to be the first to do a trainee program (also known as FTP).
Once they reached out, I made an unusual decision (for me anyway) and said yes. This led to an interesting training period where I joined them for a development meeting to discuss the goals of the upcoming release and got my first ticket assigned. This was extremely exciting for me as it was the first time ever I would be working on a large, public and (fairly) widely used piece of software, and even better on my favorite software.
My first task to figure out was making Middleware easier to implement for extension developers, In the end, it was fairly simple to add extenders but removing, replacing and re-ordering was a whole different beast. The important part that I had to remember though was that I was a trainee and I absolutely was expected to reach out when I needed help. I reached out to the team and Franz responded to my call for help and we set up a call. In a little under an hour he had taught me everything I needed in order to get started getting all the more advanced features integrated, and when he signed off I continued working, by the end of the night I had completed my first major contribution.
During the training period (completely before becoming officially staff) I also upgraded from Zend to Laminas and upgraded the text formatting library. Although they were tiny contributions they were important nonetheless to keep Flarum up to date and keep users happy.
Joining the Staff
On Sunday, February 9th, 2019 I had officially been voted into the team by the Flarum Foundation board. At around 3 pm that day I went to make some food and when I got back to my computer a little while later (sometime around 3:15 pm) I was welcomed by a mention in a staff-only part of the Flarum discord welcoming me to the team. A day or so later the announcement was made public to the Flarum community as a whole and I was welcomed by everyone with lots of mentions and congratulations (which I greatly appreciated!).
Moving To The Future
For now my training continues until the next release of Flarum (beta.13) but it won’t stop me from making contributions and pushing Flarum forward. I’m currently working on my degree in Cyber Security and Information Assurance, and as part of that, I’ve made it one of my personal missions to tackle some of the things on the security roadmap over time (although likely after stable). I will also continue to look out for issues and problems that can be resolved on Github and discuss. Most importantly though it is not only my mission, but the goal of everyone from the Flarum Foundation to release a stable version of Flarum that everyone can use, trust, and build on. This is the primary mission at this time, and that is my focus.
After Note: It wasn’t until after I originally wrote this post that I came to the realization that very large communities will now be running code I’ve written. It’s a very humbling moment, it’s not the first time my code has been run in production at companies, but it is the first time that code I’ve written will be run on hundreds or even thousands of servers for hundreds or thousands of communities.