Blackbelt Forum Design with Ninjaboard
This month we interview Stian Didriksen, lead developer of Ninjaboard, the latest Joomla! forum component from Ninjaforge. Ninjaboard is of particular interest here in the Designer's Studio as it has been constructed with design and Joomla! templates in mind.
What is your inspiration for Ninjaboard? Why do we need another forum component for Joomla!?
Ninjaboard was originally a fork of JooBB. We were looking for a good forum for our site when we rebuilt it for Joomla! 1.5, having used Fireboard on the current site for Joomla! 1.0. We felt that most of the current forum extensions were too bloated and difficult to work with. Most of them had a long history and were full of legacy code making them difficult to customize. As a result we decided to build our own, and create a flexible, modern forum for Joomla!.
We chose to go with a fork initially because JooBB, while lacking in features, had a good solid MVC setup which would make it easier to work with, and we knew that this would reduce our development time. One of the great things about open source is that we can reuse and adapt code. So we didn't want to waste that opportunity. Since the original 0.5 version though we actually ended up replacing pretty much all the code when we converted it to use the Nooku Framework (also known as Koowa), which brought us to the beta versions for 1.0. We are hoping to get the last of the bugs out and release stable 1.0 in the next few weeks which will bring to a close the "creation" phase of Ninjaboard.
What are the benefits of Ninjaboard over other popular forums like Kunena or Agora?
Ninjaboard integrates with the core of Joomla! further than anyone before us. For instance, core SEF, com_search and mod_breadcrumbs all work out of the box with Ninjaboard. Ninjaboard also lets you have multiple configuration profiles, and assign them per menu item id. This allows you to essentially setup multiple forums on your site, each with a different look and feel, and optionally different features.
Another big advantage is maintenance. Forums are updated a lot, and it can be a pain to check whether you have the latest version, and not to mention going to the site, download the new package, and installing it on your site can be a true hazzle. Ninjaboard has a "Check for updates" button right in the dashboard. If there's a newer version available, you just click "Install" and it'll update Ninjaboard on your site right there. You can even do that from your cellphone! :)
From a designer's perspective, what is Chameleon?
Chameleon is the codename of a special template engine we built on top of Nooku Framework, for Ninjaboard. The most exciting feature Chameleon has, is its ability to directly use any module styling found in the Joomla! site template on the board style itself. Chameleon the lizard, is known for its color-changing ability to blend in with their surroundings, as an effective form of camouflage. So Chameleon the engine is essentially doing the same thing. It changes its html output so that it matches the style rules in the template css. This way Ninjaboard is capable of blending in with its surrounding template. What's most exciting about this, is that with two text inputs, and one select list, you're able to control every aspect on how Chameleon "blends". You no longer need to edit PHP files to get an amazing looking forum on your site.
How does focusing on design affect the functionality of a forum?
It's one of the reasons we focus on integrating with Joomla! core. For instance, most forums do breadcrumbs inline. Doing so gives the forum much more freedom on how the breadcrumbs look and feel. But designwise, this freedom is not very interesting. When integrating with mod_breadcrumbs it means that none of the site template styling for breadcrumbs goes to waste. Same with our login form. Many forums also like to do this inline, but when you focus on design you are more interested in making it match the existing styling and functionality the site currently has for com_user. And this also includes search. There are many ajax search modules and such out there, and most templates offer a matching style for the search field, that looks great with the overall design. We chose to integrate with that, instead of doing search inline in the component like the others.
You've done lots of administrator customizations for Ninjaboard. Do you have any concerns with taking a non-standard approach?
Yes, there's always the concern that we may confuse existing Joomla! users with some interface elements being different or behaving differently. But if the non-standard approach is more intuitive, simpler and just better in the end, then we think it's the right thing to do. There's also the concern that things might break, or look terrible in non-khepri admin templates. But Joomla!Praise and Joomla!Bamboo have both been generous enough to send us their admin templates for us to make sure things are working. At the moment, we're not there yet, but Ninjaboard stable 1.0 will change that. ;)
Do you think these types of features should be in the core for all components?
Yes, we do. The main thing I love about Mac computers, is learn one Apple app, like iTunes, then you already know how to use the rest. Simply because they're consistent. Even though many of us extension developers are competitors and because of that desire to make our own extensions stand out from the crowd, we really shouldn't forget that our main competition really isn't each other, but other platforms. Like Wordpress, Drupal, etc. The only way we can really compete against them, is by innovating together, and making our intuitive solutions consistent with each other. That way, we would attract a far bigger user share than we ever would otherwise.
How does using Nooku impact on your development and are there any benefits to the end user?
Using Nooku is just like Iron Man upgrading his suit. It's still the same Tony Stark inside, but he's faster, better, stronger and can do much more than before. There are many benefits for the end user, but most of them are indirect. Actually, the most direct benefit from using Nooku FW is security. Nooku FW has token checks on every single form, automatic data filtering every time you edit or add something, sandbox view layouts, it prevents sql injections on every single database query, and so much more. So you don't have to worry about sql injections, or many of the other common security issues in a lot of Joomla! extensions.
How does using Nooku change the way that the templating system developed?
Nooku promotes KISS methodology for layouts. And strict MVC. This means that our template layouts are free of database queries, controller code or view logic. Business logic and other complex php code should be where they belong. The controller, model or view. Layouts should be as close to static html as possible. And that's how it changed the way we do our layouts. Because of that, it's safer to override Ninjaboard layouts, as there's a smaller risk that there is code that you need to keep in sync (database queries is an good example of code that might change).
Theming existing forum components can be challenging. What makes Ninjaboard easier?
Since I initially started working for NinjaForge as a template designer, I know your pain far too well. Ninjaboard is different because of Chameleon, and where Chameleon is not enough, we take overrides to a new level. This guide explains how the overrides work in more detail: http://nekkidninjas.com/index.php/2010/08/30/how-to-override-ninjaboard-css-js-images. When integrating Ninjaboard to an existing site, it's a little work. The more you use core parts of Joomla!, things like mod_breadcrumbs or com_search (or core SEF), less work. You just install Ninjaboard, import sample content under the Tools section, create a menu link for Ninjaboard, and a new settings profile to configure chameleon and use overrides where you need more than Chameleon has to offer (like when you need forum specific markup).
Since Ninjaboard is a new component can you tell us a little about the plans, such as future features you'd like to add to the component?
For the last six months the three main focus areas for Ninjaboard have been the ACL, converter system and having a fast and rock solid foundation. The ACL is now rock solid, so is our converter system, and our foundation is steel.
So Ninjaboard is at the moment, very, very lightweight on features. What we're going to focus on now is integrating with other social extensions and finalizing our profile system with custom fields and more. Next, we will finalize our APIs so that 3rd parties and site integrators can fully control, extend and manipulate the way Ninjaboard works. We're going to demonstrate how you do that with the upcoming discussbot plugin. We will provide a light, and another dark, base template for Ninjaboard as alternates for those who are using a Joomla! template with weak module styling. More forum converters will arrive, and we're going to add file attachments support to the existing ones, email notifications with reply topics by email. Oh, and here's a biggie, we'll be adding "CCK" like features where you can change and create forum and topic types, adding custom fields to topics, and such. They won't be like anything you've seen in a CCK before though, remember that we do not compromise on usability! ;) And finally, since Ninjaboard is built on Nooku FW, that means as soon as Nooku FW is fully running on J!1.6, and we've upgraded our install script to work with 1.6, Ninjaboard will be 1.6 ready.