Developing the Future

After almost 8 years, MyBB has certainly come a long way. Its popularity among forum software is strong, and with the release of 1.6 almost a year ago it just keeps growing and growing. With its simplicity and extensions, there’s really nothing you can’t do with MyBB. Every member of the Team, past and present, are no doubt proud of where we are today.

However, we can’t sit still in the ever moving world of forums and message boards. New software appears – it seems, every month – which people expect MyBB to better, and who are we to disappoint? It’s time for us to develop the future.

MyBB 1.6

While there are no new ‘features’ expected for the 1.6 series of MyBB, we’re still dedicated to maintaining it and making sure your forum (and business) is safe.

1.6.4 – where there are over 100 issues that have been fixed – is going to be available very soon. It fixes some (very) old issues dating back years including some obscure security issues. While none of these are ‘high risk’ issues or bugs, it’s always a nice feeling knowing that your site is as stable as it can be. We aren’t just stopping there though – this version is the first in a minor release to have ‘feature updates’.

These feature updates are small improvements to MyBB – as apposed to feature releases which are big changes – and range from things like a setting to globally switch on/off all plugins to providing better access for Plugin Developers and Administrators to check for updates. These will be coming throughout the 1.6 series – and if they affect Plugin Developers or Theme Artists, we’ll keep you informed before their release on the MyBB Community Forums.

Spam Prevention

This year, there has been somewhat of an explosion in the amount of human-cooked spam. More realistic than the robot kind, this spam can range from signature links to forums filled with posts in hours. While the best method is moderation – and reporting users who do spam – there’s always going to be better methods and controls for protecting your forum and cleaning up after them. That’s why we’re working to produce Spam Ninja – a feature update for the 1.6 series that will introduce basic controls to help you eliminate spam and their robot|human chefs permanently.

The Spam Ninja update will be available later this year and will be completely optional if you use it or not. More information on the new features it introduces will be announced closer to the time.

Alongside maintaining 1.6 however, developing MyBB 2 is just as important.

MyBB 2.0

At MyBB, we tend to keep 2.0 secrets close – it’s not that we don’t want you to know! It’s because as the development process moves on, coding and features are more than likely going to change so we don’t want to promise things that might never materialize. Rest assured, while many may think that 2.0 is a mere myth, it does exist and we’ll be walking through some of the boring stuff that won’t be likely to change.

We’ve made no surprises that Justin – our Lead Designer – has created the awesome 2.0 default theme. It brings sweeping changes to the thread and forum layout that will make MyBB stand out from other software, and contrary to a popular thread on the Community, it definitely does not look like vBulletin. While the software still has that MyBB look and charm, it does mean that we’ve had the chance to reorganize various other areas – such as introducing conversation-style Private Messaging, a simplified User CP and Moderation Queues to make things much more modern, efficient and user friendly. As you would expect, it looks and feels like a state-of-the-art forum system.

While we won’t be showing off the software just yet, we can still keep you in the loop.

MyBB 2.0 has been written from scratch in a MVC (Model-View-Controller) method and we’ve been using Yii as its base framework. Standing for “Yes It Is!”, Yii is a powerful, very secure and fast framework and after a very long process, we found it to be the best choice for MyBB. Its database abstraction layers introduces various options (including PDO transactions and Active Record, Yii’s Object Relational Mapping (ORM) techniques) and it provides some fantastically simple language and internationalization ideas. We’ve also used the Twig Template Engine for views, increasing security and adding various possibilities of using PHP in templates. You can see an example (currently part of the 2.0 “login” page) of a Twig template and its output in the screenshot to the right.

For languages, we’re embracing Yii’s language translations. As an example, to translate a string in 2.0 you simply call like this:

// Structure of the 'global' language file
return array(
   'mybb_welcome' => 'Welcome to MyBB {version}!',
   'language_string' => 'Another language string',
   'language_string_2' => "Yet another language string that's awesome."
);

// An example of use in the software
// Will display 'Welcome to MyBB {version}!'
$foo = Yii::t('global', 'mybb_welcome');

// Will display 'Welcome to MyBB 2.0!'
$foo = Yii::t('global', 'mybb_welcome', array('{version}' => Yii::app()->mybb->version));

You can call on whatever language file you want from anywhere in the software. Making a language pack is just as easy as it was in 1.6 too – if not easier!

Another area we’re keen to improve on is MyBB’s installer. The new version introduces a one-click install – you just simply enter all your details and the process practically completes itself. See the screenshot of the introduction page!

As you can tell, we have the basics of the software prepped and ready to start. It’s no longer ‘Planning’, but what I would call ‘Pre-Production’ – where we concrete ideas, features and most importantly, a road map, are written. After working with 2.0, I can tell you that the future definitely is exciting. It’s never tasted so good!

Developing for MyBB

Being apart of the MyBB family and developing the future of forum software is no small task. Being volunteers takes dedication and patience as well as the skills to pull off your role. Take a look at Joining the Team, and if you meet the descriptions, send us an application – we’d love to have you on the Team!

80 thoughts on “Developing the Future

  1. As always, MyBB 2.0 will be released when it’s ready. There are no official timescales of when it will be ready.

  2. Very impressive, this just made me even happier to know MyBB 2.0 is being developed.

    Can’t wait to develop my own stuff for this version, good job Staff!

  3. Great to finally get some MyBB 2.0 information. Spam Ninja sounds cool too – nice work guys!

    Just to let you know, however, the link to the Yii framework doesn’t work – you missed the e off the end of “frame” 🙂

  4. This is simply and truly awesome.And to be frank, I longed for “this” post from a long time and IMO others did too.It is a major step towards the upcoming development of MyBB.Fixing Bugs, Adding new functionality fancy to the human eye and heart.I was wishing for something more then the MyBB 2.0 Login screenshot though :P.Anyways, great work there.Hats-off to the volunteers who broke their sweat for this awesome piece of software.

  5. Can an ex-team member get a sneak preview?

    And if you don’t remember who I am (I was in the pre 1.0 to 1.2 time frame), I’m sure Chris or Dennis will remember me 🙂

  6. Can you guys include a non-rounded theme and a rounded one? It would be a convenience when I would want to make a square-cornered theme.

  7. Thanks for the update guys! Any chance we’ll get to see the roadmap/features soon?

    Also I like the choice of framework (looked at a few different ones out of curiosity when I learned you guys were going to use one). Even though it doesn’t really effect me not knowing any php :P.

    However I do like the look of the twig template engine. Reminds of ModX where the php is pretty much completely separate from the html so it should be great for theme developers.

  8. @Ryan M – Any rounded corners are simply border-radius effects. You can of course remove them at any time!

    @Alex Smith – Twig is indeed awesome and I can’t wait to see what people will do with it. I’m not sure about releasing a ‘final’ list of features, but we’ll of course keep you up to date with the latest developments. 🙂

  9. @k776: I remember your name, but I don’t think you can get a preview. 😛

    @Ryan M: I think this is just a CSS effect, so you’ll be able you change it easily.

  10. i assume that you will be including default .htaccess for clean URLs? The demos included with Yii use the index.php?/path&query_params format (i.e. index.php/game/play and index.php?r=site/page&view=about)

    While progress is good, I expect a large/long learning curve for most plugin developers

  11. I believe Tom has said we will make plugins as simple to write as we can. We don’t want people to have to be PHP wizards to be able to write plugins.

  12. I understand that you guys will make it as simple as possible, I am just concerned that the Yii framework will take some time to learn for the more advanced plugins. I am getting started now on learning it though

  13. @pavemen

    To be honest I think Yii will make it easier for programmers who are new to MyBB. It abstracts a lot of the common processes that are specific to developing web software and I think any programmer who has experience using an OOP/MVC methodology will find developing for MyBB using Yii to be a highly intuitive experience with minimal learning curve.

    To those who are already familiar with web programming and have not used an MVC framework before, it might seem very foreign at first, but soon you will appreciate being able to focus on actually programming your application, rather than monotonously writing the same basic code to support your applications over and over again.

  14. Quite excited to see MyBB 2.0 in development with some great milestones reached. Pretty stoked, keep up the good work. Just one problem is the issue in plugins and theme designs, yii looks like it’s going to effect many of the addons. Anything in mind that may lessen the issue?

  15. I don’t think there’s anything we can do about that. MyBB 2.0 is a complete re-write. So even if Yii wasn’t used, plugins and themes would most likely not work.

  16. I am not familiar with MVC for webapps so this is all more foreign to me than ancient Latin. I have been reading about Yii and have it installed on my development machine so i can work with it. I am slowly getting the basic understanding down, but I am worried about the code for a simple form page is spread over multiple files (site, controller, model, layout, page, etc).

    I am sure I will figure it out. A lot of it is understanding the default function and path naming

  17. @The Elite

    Either way all plugins and themes will have to be rewritten, however it should be quicker to write plugins having the support of a framework behind you.

    @pavemen

    If it helps to ease your concern, none of the staff had any experience with Yii before we started developing 2.0 so we have all undertaken the same learning curve as everyone else will have to, and in general I feel it has been a very positive experience.

    One of the significant reasons we chose Yii was because it has comprehensive and easy to follow documentation, and also there is a book on Yii which is quite good, I have read about two thirds of it myself: http://www.amazon.com/Agile-Web-Application-Development-PHP5/dp/1847199585

    On your point regarding spreading things out across three files, there is a very good reason for that. It allows for models and views to be easily reused, for example, I could write a simple post model representing the basic information of a post, such as a subject, user and a body, then extend that model and use it for a new thread or a PM, only changing the methods and properties that are different. That is only an example to demonstrate the idea, but that wouldn’t be possible if functionality was separated only according to the controller (which is essentially how it is now, where each file represents a controller).

  18. To extend Tim’s comment and to use 1.6’s showthread.php as an example, we have a ThreadController to replace that and in it are each of the input actions.

    For all of the post requests, there would be models to handle them, which act pretty much the same as datahandlers. Where we would output the templates – instead, we render views. It’s practically exactly the same thing, just with different names and locations.

  19. I have a few questions:
    1. Apparently Yii 2.0 will not be compatible with previous Yii versions. How do you intend to mitigate potential impacts?
    2. What criteria did you use for picking Yii over Kohana (for example) – is it because Yii has a lot of modules in it that are used (and thus avoiding effort duplication) – Yii does look bloated particularly if its large feature set is not being used.
    3. How will you support upgrading from MyBB 1.6.x with this new framework-based 2.0 version? I have a forum with a lot of custom CSS too and I was hoping I wouldn’t have to re-write all them from scratch.

    Thanks.

  20. @Evil – You can use Yiilite, which combines most of Yii’s common functions. We’ll be trying to make MyBB follow that so that those ‘extra’ features are only needed when you want them to be.

    After that, there’s marginal differences between frameworks.

  21. @Evil:
    1) We have to wait until Yii 2 is published to see the impact.
    2) I think this isn’t the place to discus this. The developers have tested a lot of frameworks and had to make a decision. 😉
    3) It is just not possible to create a new design new without changing the current one. It may be possible to port your theme to MyBB 2 but I can’t promise it.

    @ChrisR:
    Yii provides an Active Record pattern, which will be used where it is useful.

    @Eric J.:
    The development is in a really early stage. We haven’t decided yet to publish a beta or something like that.

  22. @techu: As stated above, this is not the place to talk about the framework. The developers saw several disadvantages using Zend Framework.

  23. looking into Yii more do you know way they put C in front of all there API name seems very silly to me. eg: CFileValidator, CController, CHttpCookie

  24. @Chris – I believe they put C in front to avoid conflicts, as Yii plays nicely when working with other frameworks.

    @Roberto, you can of course upgrade between 1.6 and 2.0.

    @Ryan – nice to see you! Even though 2.0 is built on top of a framework, it’s surprisingly similar to 1.6 in terms of memory and page load. I kinda expect it to increase, as Stefan mentions, as more features are implemented. I’ve found Twig to be to biggest culprit though, it slows things down considerably.

  25. @Ryan Gorden:
    The code example seams fine to me…
    I don’t think you can compare the speed until all functions are implemented. But the framework is supposed to be fast.

  26. Cannot wait for 2.0 to be released even if it’s a long way away. MyBB always provides amazing updates and the login page looks simply amazing.

  27. Seriously cannot wait for this.

    Q: Given 2.0’s framework approach to development, will it be easier to code an integrated CMS if one wanted to?

  28. @Tom, Glad to see you too and hear progress on 2.0. Doesn’t twig have a complication feature to cache and speed up the template to a degree?

  29. @Aaron, Kevin, Alex – I don’t think it’s an awful long time away, but it does take time to make something awesome especially with MyBB’s surroundings. We’ll keep you up to date with news about development though.

    @Ryan – We’ve implemented the cache, but it still adds ~40% extra load in load and memory. Yii recommends using yiilite and APC, which if you switch it on, the performance is really good. Even though APC will be more available in the future, it looks like those who can’t use it (or another form of cache, haven’t tried them) are set for higher resources.

    On the other hand, it should benefit larger forums.

    I created a dummy application in Kohana and Symfony which does pretty much the same things as 2.0 – Yii performed the best out of the 3 on my machine, so at least it looks like we’re heading in the right direction!

Comments are closed.