Sanguine Thanks for posting this ?
I'm going to start with a bit of a history lesson, to explain how we got to where we are now.
Back in 2015, coming off of a failed Kickstarter campaign, I took a year off my uni course to devote solely to building Flarum. More than anything, it was a huge learning experience. Franz (who was working on FluxBB 2.0 at the time) joined me a few months in. I had already started building the app in Ember.js, and we decided to rewrite with Mithril.js for performance reasons.
It took a good few months, but we eventually completed all the basic functionality you'd expect from a forum – categories, search, quoting, likes, good mobile UX, topic subscriptions – and launched the first beta in August. More features rolled out and we released beta 2 the next month.
Although Flarum was looking good on the outside, we weren't happy with how the code was structured on the inside – and it was important to get this right so that extensions would have the power they needed, and so that we could eventually commit to maintaining APIs and semantic versioning. So we spent the next couple of months working on a large codebase refactor to try and fix that.
Things slowed down in 2016, as I had failed to put in place a plan to maintain a reasonable pace of development before I returned to uni. Documentation was still sparse, we hadn't really pursued any new core developers, and generally speaking things stagnated a bit. Beta 5 came out in March, a whole four months after beta 3/4.
While the software was quite usable at this stage, we still weren't ready to "go stable" because we wanted to build some more extensions to further flesh out the extension API. And as the year went on, I think we got into a bit of a catch-22. In order to improve the extension API, we needed to build more extensions. But we were wary of building more extensions because we were planning some big, ill-defined changes to the extension API. We got stuck in a rut with a lack of direction, lack of a plan, and a resulting lack of motivation. It was another half a year before we released beta 6, which mostly contained small community contributions.
At the end of 2016 I sat down and started to properly draft a list of specific actions we needed to take in order to stabilize the API. It was long, and the changes were vast. Among them was a large namespace restructure (that is finally about to be merged). The scale of some of these changes was daunting, and the motivational block on development remained. More planning continued in the background at the start of 2017, but tangible development progress was severely lacking.
It had been almost a whole year since the last release when beta 7 came out, and it wasn't a particularly exciting release. We still hadn't really moved on any of the refactoring we had planned. Clearly the scale of what we were trying to achieve was just too big, and we weren't going to get anywhere if we continued along that roadmap.
So in September we came up with a new one, breaking the changes down into smaller, more managable chunks. Our staff got together and talked about how we can speed things up and revitalize the project. Since then, things have been looking a bit more positive:
- @luceos has come on board as a core developer.
- @Franz and @luceos have been working hard on the large namespace refactor and upgrading to Laravel 5.5, which will be merged very soon.
- I finished my exams, and have been working on various improvements and features for a client.
- We launched a Patreon to cover our server costs (which were previously out-of-pocket), and diminish the need for us to do client work.
I suppose one way to look at all of this is that "good things take time". The plan we have for Flarum is really exciting, and much of it may not have come about without the brainstorming "downtime" throughout late 2016/17. We're really grateful for everyone's patience during this time.
But I would be kidding myself if I said that this is an acceptable way to lead an open-source project. It's not, and I'm sorry that I've let everyone down. I want Flarum to be a well-run, respected community project, and at the moment its reputation has been tainted by the fact that it's still in "beta" after almost three years. I'm seriously working on trying to be a better leader, and I'm extremely thankful for the amazing team around me trying to hold me accountable.
Here's what to look out for in the next few months:
- We want to be more transparent with what we're working on, so we'll be making an effort to keep release milestones up-to-date. Specifically, I need to extract all of the planning information we've currently got in an internal doc into GitHub issues.
- Franz is working on a brand new abstraction for the extension API which will make writing extensions 10x easier.
- I'll be working on improved database and search performance over the coming weeks.
- We'll release beta 8 at some point after the above is done.
- Then it will basically be full steam ahead with writing documentation and preparing a version 0.1 release candidate.
I think contributions were unfortunately caught in the catch-22 that I mentioned earlier: before we encouraged contributions too much, we wanted our big codebase refactor to be done. But in order to get that codebase refactor done quicker, maybe we needed more contributors?
Now that the refactor is pretty much there, things should get a lot easier, both in terms of contributors finding places to contribute, and in terms of us engaging them. We're more than happy to coach people in conjunction with our development work!
The contribution story will also get a lot better once we turn our attention towards the docs. In the meantime, if you have the know-how, we would definitely appreciate any contributions to the docs to make it super easy for people to get started. CONTRIBUTING.md could very much do with a refresh.
My personal vision for Flarum has always been just to make awesome open-source forum software. Beautiful, simple, fast, extensible.
I'm not concerned at the moment by how many people are using it, because it's still in beta. Pretty much all of our growth to date has been organic.
I'm not too concerned about making a profit either. It would be nice to be able to have enough donations coming in through the Patreon to not have to worry about doing client work. And it would be nice to set up an official SaaS one day, once the software is stable. But for now, I consider that a distraction from my primary vision – making awesome forum software.
Hope that answers some of your questions. I'm more than happy to hear any suggestions and critique as to how we can run this ship better ?