There are questions in the boards and everywhere about the future of SMF after the long-awaited 2.0 milestone. Some of you remember or have an idea about how long it took from start to finish, and the difficulties we had along the way. Enough of that, though, we have moved forward and we have taken the road towards a true Open Source project, as many have been waiting for. Lets take a look at the present and future.
The community, for years, has been asking about SMF having more features - those of a blog, a gallery, a CMS, and a dozen other things that don't quite fit with all forums. It's been the position of the SMF project that SMF is a forum first and foremost, and that it has to remain simple, with little to no bloat. Are these two desires polar opposites, or is there a solution to bring the two views in accord?
There is a solution. A simple one, and it's time to let you know where we're going.Long-Term Goals
Last year, I presented the roadmap for future development (post-2.0) to the SMF project team. While the short-term goal was obviously to release 2.0 Gold, the medium- and long-term goals were also discussed. To enumerate a few of the essential goals:
How will we go about accomplishing these goals?
- Built-in extensibility and plugin system. We all know there are pitfalls in using direct code modifications to change the behavior of SMF, especially on templates. We have already taken steps to diminish direct code modifications from 2.0 RC4 onwards, with hooks and a little API, but that was just a step in the greater plan.
- Better theming system. We want themes to be very simple to tweak and customize, nice and understandable. Tweaking SMF themes is not difficult, but making truly great themes is neither easy nor maintainable. It should be.
- Ability to integrate with a blog, CMS, gallery, etc. without having to write or use an external integration. While we're not going to package these things with all forums, they should be simple to install and integrate with if the need arises. You should have the ability to check a box during installation and have the installer download and install whatever you need for you. The community has asked for this for a long time, and we want to make it a reality.
- And much more, but more on those at a later date.
The best way to go, for extensibility and reliability, as well as a years-old wish of the SMF project, is to design SMF in two parts: a core platform, and a forum module plugged into it.
The first part is what we have for a while called "smCore". smCore is designed as a core framework with essential components to serve a wider range of web applications, not only a forum. It comprises functions like user authentication, logging, administration, and a few others - provided in a simple interface for the forum to use (replacing SMF's own generic components with the centralized version). SMF 3.0 is intended as the first module for this core, using its functions. Over time, there may be others - a blog, a CMS, a wiki, a gallery, and so on. The work we do on smCore will benefit each of these things, as well as any top-level modules the community wants to make as well.What does this all mean?
Simply, this means that SMF will have its inner workings completely rewritten. It doesn't mean there will be two packages for installation, the installer can be smart enough to download the module(s) of your choice to your server. To most users, it simply means that the code and the architecture are different under the hood, and nothing more. SMF itself definitely needs a rewrite of its codebase, to be more in line with PHP's best practices and programming patterns. The "core" part is designed to be extensible from the start, so you can easily add to it with modules and plugins in place of direct code modification.What does this mean for the next versions of SMF?
Accomplishing these goals means a rebuild of the current codebase, to become the platform we've always wanted.
smCore Project History and Inheritance
- The immediate next version of SMF, however, is entirely based on 2.0 and will be called SMF 2.1. It aims to bring some absolutely necessary enhancements to forums on 2.0, such as the introduction of even more hooks for modification authors to take advantage of, lots of bug fixes (of course!), a few enhancements that are useful for forums.
We are working on 2.1, with a few of us focusing on it, and will post more about its status in the coming days.
- Additionally, we have been working to make a more few steps along the way to SMF 3.0; SMF has been seeing a refactoring of its codebase, with the main purposes of implementing SMF action handling according to the MVC pattern, and a number of code improvements and reworkings. While this work is still on the current codebase, it has aimed to prepare in a measure the SMF codebase for the move to SMF 3.0.
- The next step is moving to a module-based system. SMF 3.0 will be a forum module based on smCore, and will take advantage of everything we know and learn from the development, along with even more ambitious plans. The rough outline of our plan is as follows:
SMF 3.0, using smCore, will be a "smart installer", but for practical purposes it will seem like just another installer. smCore's inner workings, however, will allow you to install multiple modules at any time, directly into the core instead of trying to, for example, add a blog onto a forum. This will be fully object oriented, align with modern design patterns and best practices, and allow extensibility right from the start. There will be a real plugin system for SMF and other modules, so that the need for direct code modifications will be greatly reduced (though we'll probably still provide a mechanism to do so, for when it's absolutely necessary).
The name "smCore" has been tossed around as far back as last year's SMF development roadmaps, but it's really nothing new. It embodies a years-old desire of SMF developers, from 2005 and earlier, to create a product which is a true platform for development of SMF and first-level modules such as a blog, CMS, gallery, and other things which must currently must be hacked onto the forum and live as second-class citizens on your website. Moreover (development-wise) the initiative of a number of SMF friends, former SMF developers and interested contributors alike, from [Unknown] to a number of developers on other open source applications, to start a "core" project last year, went in a similar direction (though not identical) with what we're talking about here. Some of you may remember the unbelievable spark of ideas and brainstorming that went into envisioning a usable and reusable core for multiple web applications - including a forum - that those taking part aimed to create. Their initiative happened along with, and was perhaps in a was fed by, the same issues in the project that led to the restructure of Simple Machines throughout the last year. Purely from a development point of view, the immense brainstorming that happened there has been, IMHO, a wonderful experience and valuable source of ideas and analysis, choices and trade-offs, that smCore and SMF 3.0 will benefit from.
To put it simply, for SMF itself, we know that the way to go in the future is definitely along the lines of rewriting SMF on top of an easily extensible core platform. Other modules will be built on top of this core, not on top of the forum as they would currently be.Where we are today
From my perspective, it's time to start bringing these plans to fruition. Some of the prerequisite steps have been completed, from the long-awaited Open Source release of SMF 2.0 and the finalization of the umbrella organization, to a number of other steps aiming to truly open this project to its community.
The smCore project will be developed separately from SMF itself, as a sibling project under the Simple Machines organization umbrella. It already has a team of initial Developers (Norv
, and Joshua Dickerson
) and Core Contributors (AngelinaBelle
and Joey Smith
), and the project has already joined Simple Machines.
smCore will have open development, comprised of the following:
- Public read access to the Git repository
- An open issues tracker
- Public feedback and development discussions
- An environment of encouraging and accepting contributions regardless of "official position"
On another note, with the changes to a non-profit umbrella organization, Simple Machines' goal is to host multiple projects and make them available to the community. In time, we aim to develop, under this umbrella organization, a "family" of projects such as smCore, SMF, a help desk system, and many more.Where we are today, development-wise
For SMF 2.1
, we have added enhancements and made fixes to the 2.0 codebase, such as:
- IPv6 Support - Specifically in posts, ip tracking and ban management.
- Mod/admin sessions.
- Jquery library support
- Improved code documentation,
- Security tokens,
- A level of code cleaning.
And others, of course, which we will document in an upcoming blog post. We know that our users, whether admins or translators or customizers from the community need a number of improvements to their 2.0 forums, and we're working on bringing them to you. Watch these blogs and announcements, we will post more as we're getting closer to beta stage on this version!
Work on SMF 3.0
is basically starting when smCore is ready to accept modules, and then, it is being written as a module for smCore. It will be mostly rewritten and partly ported from SMF 2.1 code on a case by case basis, and only in very carefully chosen situations. Porting code is not the same as directly reusing - there is little possible reuse, because of the difference in programming paradigms and design principles between SMF as we know it (and which will remain procedural in 2.1) and SMF of the future.
In the upcoming few weeks, we will have more news about the changes we're making to bring development closer to the community, ease contributions in various areas, enhance official tools and mods and themes areas, ease availability of highly requested tools, and many others. SMF needs you - all of you - whether to give us your proposals, your feedback, your needs, your help, your disagreement - because at the end of the day, we're not building SMF just for us, but for you.
Finally, there's smCore
. We have started the project, done a lot of brainstorming, and laid out a roadmap for what we want to achieve. Some code has been written, rewritten, and written yet again, as we figure out which paths we want to take. We've opted to go with a light MVCS (Model/View/Controller/Storage) pattern rather than a strict and heavy traditional MVC pattern (such as the one Zend Framework uses) so that modules are easy to get up and running with minimal setup and code required. Our main focus with smCore is to have a platform that helps module developers create powerful modules quickly. It's an ambitious project, designed from the ground up to be the best and most simple development platform available. We like the direction we're moving in, and we know you will too.
You should look forward to more frequent updates, by the way. This board has gone unnoticed for far too long!