The third interview in our XenForo trilogy features Kier Darby, XenForo Developer and former Lead Developer and Product Manager of vBulletin. I'm truly blown away by the amount of time and effort Kier put into answering our questions considering he is currently working about 18 hours a day on XenForo.
Kier did an Interview with us a bit over 5 years ago which I strongly urge you to read before going on - it covers a lot of the usual TAZ interview type questions, and some of the answers Kier gave are all the more interesting in retrospect. As I wrote in Mike's interview, I also recommend that you visit the XenForo Mothership to learn more about XenForo. I'll give you two warnings though, and heed them well:
1. If you are not careful, you will find yourself inexorably drawn to participating in the XenForo Community at the expense of sleeping, spending time with your family, and posting in your own forum.
2. The forum seems different from other forums - simple, clean, organic, intuitive, and interactive are some of the words used to describe it. It's a bit of a shocker at first but you'll get used to it.
Do you mourn the passing of Jelsoft? In retrospect, would you have liked to have done anything different before or during the transition?
I poured my heart and soul into Jelsoft and vBulletin for the best part of nine years. Deciding to leave was one of the hardest choices I have ever made. There are many things I would like to have had done differently, but none were within my power to affect. I guess if there’s one regret, it’s that I didn’t push James and John to make me a director of the company when I took over John’s responsibilities.
Surely you considered switching gears after leaving Jelsoft, getting back into computer graphics for example. What made you decide to stick with forum software development?
Going back to CGI wasn’t really a viable option. Having been out of the industry for so long, I am well behind the technical curve. I see things coming out of ILM, Pixar and Weta Digital now that blow my mind, whereas back when I was working in the industry I could explain the production process behind pretty much anything that the leading CGI facilities put out.
The decision to stick with forum software came out of looking at where my expertise really lay, and having spent almost a decade being the face of vBulletin development I felt that I was in command of a wealth of experience and insight into what was needed to move forum software forward into a new decade. When it transpired that Mike (Sullivan) felt the same way, the path became clear.
Developing XenForo is complete reboot for you, starting with a clean slate from the inception of the project. Was that a bit daunting at first? Or was it all good?
Starting from scratch was a big challenge, but it presented some unique opportunities to do things our own way.
We knew that we had a very limited time scale to get things rolling, so we decided to use Zend Framework to provide specific functionality that would have involved reinventing the wheel if we did it ourselves. This allowed us to get started on actual application code much more quickly than we would have been able to do had we written that stuff ourselves. For example, we make use of Zend_Controller_Request_Http and Zend_Db, as they provide almost precisely what we want, but we wrote our own MVC system as we had a very specific idea of what we wanted to achieve.
As time has gone by, we have unplugged various bits of Zend code and provided our own replacements that better suit our requirements, however there are still Zend components in XenForo for the time being, and they will certainly remain into the 1.x releases, as we don’t see a pressing need to remove them at this point.
I think our decision to make use of a framework (albeit in a limited fashion) has worked out well, as we have been able to spend a lot more time producing front-end functionality and refining the user experience into something really polished and pleasant to use.
The platform we have built surprises me on a daily basis with its stability and flexibility. We are still making major changes behind the scenes in the XenForo code, and yet we are running XenForo.com with a live checkout from SVN that is updated dozens of times every day.
I’m also extremely pleased with the speed at which we are able to build new features, and the way that we can do so without being unduly concerned that new functionality is going to cause existing functionality to fall over unexpectedly.
This time around, you’ve had the position of lead developer from the outset. How has that been?
There isn’t really a hierarchy of developers at XenForo, Mike and I have an equal say in how things are done and what features we will target, and we frequently disagree, though our disagreements have seeded some of our best features.
Mike and I are both able to work with any part of the system, so we rarely have a situation where one is waiting for the other though we do have our own particular areas of expertise. Some of the code that Mike has written to handle our template syntax and compilation is awesome stuff and my brain hurts to even think about the interactions it manages, while he leaves the majority of the UI and design work to me. Our combined skill set provides everything we need to develop XenForo effectively and rapidly.
What is your work schedule like?
I think it could be reasonably described as ridiculous. I’m getting by on three or four hours of sleep per night before being awakened by my children, so it’s fairly taxing. However, developing with the XenForo platform is compelling, as is interacting with the community, so I don’t resent my workload at all.
The current paradigm seems to be forum software developer as coder/technician under someone else's direction rather than as creator/artist/coder following his own path. Is the passionate, creative developer obsolete in the current business model?
No, I don’t think so at all. I would point to the success currently being enjoyed by Matt Mecham and the team at IPS. They certainly embody the passionate, creative developer type.
I think events continue to show that there are some fields of software production where large teams working in a traditional business / product / development breakdown do not necessarily end up producing compelling software that customers want to use.
I believe that the moment the developers are removed from the decision-making process for the direction of a software product, quality and productivity will suffer. There are few worse things for a software engineer than being forced to work on a feature or system that you know is ill-conceived and accumulates technical debt, which will inevitably come back to bite you in the end. If the managers responsible for the programmers fail to consult them - at the feature concept stage, not at the implementation stage, the product is doomed to an ignominious end when its momentum eventually stalls.
What is the basic architecture of XenForo?
XenForo follows the model-view-controller (MVC) pattern of object oriented programming. In a nutshell, this means that the code to ask the system to perform an action, the code to fetch the data and manipulate it, and the code to display the result back to the user, are handled in separate modules with no dependencies between them.
As an example, the code that fetches the most recent posts and displays them back as an HTML page can very easily output XML instead, by switching the View layer from one that deals with HTML to one that deals with XML. The underlying business logic and data-fetching code remains unchanged.
This allows us to do some very exciting things, such as delivering pages into overlaid panels via AJAX with nothing more than a simple CSS class definition in the <a href> tag that points to the page in question. You can see this in action on XenForo with many of our pop-up links.
For example, at http://xenforo.com/community/, try clicking the ‘Contact Us’ link in the footer and it will send off an AJAX request that opens up a form in an overlay without reloading the current page. Now try right-clicking the same link and have it open a new tab or window, and you will see the very same form being loaded into a page of its own. You are seeing the same template being used on both pages, and there is no special code to handle that behavior, it comes ‘free’ with the XenForo framework.
There are a lot of enhancements to the standard MVC approach that we have added in order to make (virtually) everything as open and extensible as possible for add-on authors. There most certainly is a learning curve to it, especially when coming from a predominantly procedural system, but the rewards when you get it are fantastic.
I would suggest that anyone who wants to write add-ons for XenForo should seriously consider using an integrated development environment (IDE). Doing so has major benefits, especially in serving to tie the various components of the XenForo system together into a unified whole. XenForo uses one class per file and loads these classes with an autoloader internally, so if you’re not using an IDE, you will find yourself frequently hunting for the file that contains the method or class you want, which is no fun at all.
Both Mike and I use Eclipse PDT as our IDE, and I think it’s safe to say that there is no way that XenForo would be in the such a good condition as it is in now, had we not had the benefit of working with an editor that understands the code and allows us to spot errors as we go.
How will XenForo compare to other forum software, especially vB, in terms of:
- Spam countermeasures
- Resource Utilization
XenForo employs lightweight, semantic HTML 5 throughout and maintains a high signal to noise ratio with our markup. Embedded HTML 5 microdata is employed where appropriate to assist search engines in deciphering what they fetch. We send appropriate HTTP status codes for the content being displayed and make use of human-readable URLs as a fundamental building-block of our linking system, while avoiding situations where multiple different links point to the same content. All content elements have permalinks. Pages not intended to be indexed are marked-up as such to prevent spiders from caching them. This is just a summary of some of our SEO tools - which we don’t even refer to as SEO tools, as they are simply built into the system as a matter of course.
• Semantic HTML: http://xenforo.com/community/threads/semantic-html.892/
Spam Counter Measures:
ReCAPTCHA is implemented as a first line of defense against spam registrations, but should spammers get through, we have a Spam Cleaner tool that can deal with it all quickly and efficiently. Additional approaches are on the list for future XenForo versions.
• Cleaning-Up Spam: http://xenforo.com/community/threads/cleaning-up-spam.2297/
There is a lot to talk about on this subject, so I will just give one example for now. Cross-site scripting (XSS) is a common problem for applications that manage user-generated content. One approach that XenForo takes to deal with this is to store all content in an unescaped form. When that data is displayed in a template, it is automatically HTML-escaped, unless it is specifically instructed to avoid the escaping. This makes it extremely difficult to accidentally introduce an XSS flaw into XenForo.
Skinning / Styling:
This is a subject we are still revealing piecemeal in our ‘Have You Seen..?’ forum. It’s something we have taken a lot of time to get right, so I won’t go into too much detail here, except to point you to a few examples of our style system at work.
• Style Properties - Controlling Style Options: http://xenforo.com/community/threads/style-properties-controlling-style-options.3091/
• Style Properties II - A Closer Look: http://xenforo.com/community/threads/style-properties-ii-a-closer-look.3690/
• Playing With Color: http://xenforo.com/community/threads/playing-with-color.3798/
• Style Inheritance and Reverting Properties: http://xenforo.com/community/threads/style-inheritance-and-reverting-properties.3816/
XenForo was built from the ground-up with modifications and add-ons in mind. As a result, almost every system can be extended and or modified. The MVC architecture lends itself particularly well to this, as it is possible to have code operate on the application after the business logic but before the display code, for example.
• Creating a Simple Modification: http://xenforo.com/community/threads/creating-a-simple-modification.3532/
• Playing With Colour: http://xenforo.com/community/threads/playing-with-color.3798/
Scalability/ Resource Usage:
A common theme in the comments we have received so far from people visiting XenForo.com has been the speed of the application. This is all the more impressive for the fact that we are running on a relatively modest server, which already hosts a five-million post vBulletin 3.8 installation. We are very light on our database usage, and we have barely started to play with additional caching with memcache and similar systems. Good things are to come.
• Real-World Page Loading Speed: http://xenforo.com/community/threads/real-world-page-loading-speed.1215/
What are your plans for a XenForo CMS and other modules in the future?
Right now our focus is fully on the forum. We want to ensure that we get the forum absolutely right before we branch out into additional products. That said, XenForo was always built as a platform, and it has always been our intention to build more applications on top of the framework we have created. The exact shape of those applications will depend upon the take-up of the forum and feedback from customers, along with our own instincts as to what would make the most sense for us to produce.
It's inevitable that XenForo will be compared to vBulletin. To a degree, it's not unreasonable to compare the vBulletin that was developed under your leadership to XenForo. But clearly they are two completely different entities, and they appear to be going in two entirely different directions. Is there any way you can make it clear to us just how different they are, and why they're really not comparable at all (aside from the obvious architectural underpinnings all modern forum software shares). I'm not just talking about differences in coding - I'm talking about differences in philosophy, in priorities, in vision.
vBulletin was born of an age when having more options and more data displayed was a desirable thing. People wanted to be able to control minute details of the way they interacted with a forum - or so we thought.
XenForo is a product that debuts with decades of experience already under its developers' belts, and perhaps a degree more maturity in outlook. Our focus with XenForo is on providing a superior user experience rather than piling on new features. We are more of the opinion now that if we believe there is a right or optimal way to do something, we will just do that, rather than providing options to allow people to do it another way.
This simplifies the code, which helps prevent bugs and speed-up development, and usually makes for a more immediate and enjoyable experience for end users, who get the best out of the software without having to go and set it up themselves. Our years of experience with the software and dealing directly with customers gives us the confidence to do this with the expectation that the choices we make will be the ones that are best for users of the software.
Of course, sometimes we get it wrong, and the way that we think is best is not what our customers think - obviously in these instances we look again at what’s been done and what’s been said and decide if a new approach needs to be adopted.
Additionally, we are not in a mad rush to put more and more features into XenForo. Our focus is far more on quality and user experience - making what we have really enjoyable and intuitive to use, allowing people to rediscover how great it can be to simply post messages to each other.
Back in 2005, as vB 3.5 was being readied for release, I asked you in your first TAZ interview:
And you said:
I have to say that I think you underestimated the respect and affection the vBulletin crowd had for you personally at the time. Those sentiments appear undiminished and are seemingly even stronger now, even before a single beta of XenForo has been released.
So I'll ask again - There seems to be a bit of celebrity associated with being a developer. What's that like?
The world is a big place, and most of the people in it don’t even know what a forum is, let alone the names of some of the people responsible for engineering the software that drives them, so in out-of-work life I very seldom come across anyone to whom my name means anything out of the ordinary.
However, in the world of the forum administrator it does seem that I’m well known. I remember in the early days after XenForo.com opened its doors, the tagline I was seeing everywhere was “Kier’s new software”, which was very flattering (though not strictly accurate, as it’s just as much Mike’s as it is mine).
The response and feedback we’ve had from the community has been astonishing. I really had no idea that we would be looking at our company forums having nearly 60,000 messages posted in just seven weeks, nor that we would see so many ‘big names’ and familiar faces making their way over from other communities to be with us on XenForo. One XenForo member commented that they have racked up over 850 posts since XenForo went live, while they have clocked only 545 in their seven years of posting on the forums of one of our competitors.
In your 2005 interview, you went on to say:
Recently, some XenForo community members dug this quote up and discussed it - they think you're a psychic, or a Prophet. What were you thinking when you wrote it - did you have a premonition of some sort or is it just a manifestation of your work ethic, your values, your philosophy of life?
It certainly wasn’t meant to be prophetic; it was more of a warning - to myself as much as to anybody else. A good reputation and customers’ past experiences can get you so far, but if you stop living up to their expectations, or you are seen to be slipping from a position as the most innovative producer, or the product with the highest level of attention to detail, your customers will eventually abandon you and go with someone who’s doing a better job.
Even as busy as you are, you seem to take great enjoyment in interacting with the XenForo Community - almost as if you were just another member at times.
I think it’s vitally important to interact with the community. The way they discuss topics is informative as to how they are using the tools we have provided, and interacting with people on a personal level helps to foster a sense of community that keeps people coming back. We have tried to develop a rapport and feel to the XenForo.com forums that allows people to discuss pretty much whatever they want (within reason). Having people talk about things they care about is a great way to get them to use our software, and in due course to get them hooked on using it so they want to install it on their own site.
It's the simple things that seem to put you in that frame of mind as ‘just another member’ - good food, going barefoot, the outdoors, your family and friends, photography. Is that what you're all about then? And does that have anything to do with the way you go about creating something like XenForo?
A lot of what I do is related to a desire to experience things. Life is too fleeting to allow its episodes to pass you by, so I tend to take an extra step to make even the mundane become more of a memorable event. I take (a lot of) photos in order to expose some additional detail or mood that may not have been apparent at the time, and to allow others to get some flavor of the experience I had. I love to cook, both for myself and for others, and I’m always experimenting with different combinations of flavors and textures, most of which work quite well, thankfully. I tend to spend the majority of my time barefoot, even when out and about. I like the additional sense of experiencing the ground beneath me - it’s an extra sensory cue that is there for the taking but most people miss.
Does any of this relate to XenForo? Well, I suppose you could say that I view XenForo as a software experience rather than a set of loosely connected tasks. I think people feel much more comfortable with software that they already know how to use through their own intuition. It’s important to be able to distance yourself from the position of software developer, and learn to view the system through the eyes of many different kinds of users in order to provide the experience that is right for them.
Who is actually the voice of Kier in your "Have You Seen...?" demos? That can't be you!
Really? It is indeed me, and I cringe every time I watch one of those videos, often reaching for the mute button. I guess everyone hates the sound of their own voice when it’s recorded.
The videos have been great for demonstrating our features in an accessible way. I probably shouldn’t mention that they are usually the result of the ninth or tenth take, where the previous ones are all terminated with an expletive as I trip over my words or something unexpected happens on screen
Back in June 2009, you made a blog entry entitled The Leap of Faith.
It can't be mere chance that you named the new software XenForo. Zen is a school of Mahayana Buddhism notable for its emphasis on practice and experiential wisdom in the attainment of awakening. As such, it de-emphasizes both theoretical knowledge and the study of religious texts in favor of direct individual experience of one's own true nature. Would you say your experiences over the last year and a half constitute an awakening in a sense?
I’m not sure it’s been an awakening, but certainly an affirmation that people really do value quality and polish, and that going the extra mile to produce something truly great will always be rewarded.
Thanks for taking the time to answer our questions Kier, and congratulations on the imminent relase of XenForo. I trust you've been enjoying the ride?
It has been, and continues to be, extremely hard work to get XenForo to this point and at times the ride has been bumpy. However, I believe that the passion of its developers is evident in XenForo and I am hugely pleased with the reception with which it has been met in its short public life. The ride has most certainly been worth it.
Thank you for your questions, it has been fun answering them.