Archive for the 'Chatspot III' Category

Planned Site Enhancements and Module System

Saturday, April 22nd, 2006

So, you might have noticed that Kaniaz and I have been doing some minor updates to the Chatspot website. I’m gonna use this post to explain what these enhancements will be. I’ll then explain the module system.

The most noticable thing, which some of you may have already noticed, is the fact that the site is now integrated with our forum and that there is now a site-wide . It notifies you of your Private Messages from the main site now also, provides a link to the RSS, and some of the forum pages that were linked from the black bar on the forum - which is now gone. We plan to add some other nice bits and peices to this - and if you have any suggestions, post them in Development on the forum.

Some subtle changes have also been made to the forum template. You might have noticed the user column on posts has been shrunk a little and we have shiny new rank images :P . and yes, Kaniaz is working on making the two other templates for the website and thinking of a way to make default subSilver make a bit more like the site design - because let’s face it, it’s not very pretty.

On another note, I’m thinking of making my Trac installation public - that is, our development server - so you can all download copies of the “cutting edge” versions of Chatspot. However, at this point I think it more likely that beta versions will be released to our “veterans” by invite from Kaniaz and I rather than releasing possibly unstable and dangerous code into the wild - yes, we learnt from our Chatspot 2 mistake. Stay tuned for more information on that - but I am not entirely sure I want to do this so don’t hold your breath (and if you do, I’m not liable for death, you have been warned!)

Moving on to modules! Kaniaz mentioned he’d be looking at it, but it’s my turn to post, so I’m going to instead. I’m going to start with a diagram - of Kaniaz’s, ironically - of the Chatspot 3 architecture, taken from our Trac.

ChatspotThree @ trac

So you might be asking - what does all this mean? Controller is the main central point for all of Chatspot’s communication between systems. The first thing that is loaded in is the Modules class. This loads in all the modules - which each have corresponding XML files. The XML tells it what action the module wants to hook into - for example, the post action. When the controller receives an action parameter, it asks the modules class if anything has hooked onto this action. If it has, it then passes control to the module, which will handle the action.

There is then a Database class which is an abstraction layer between phpBB and Chatspot - this automatically cleans up input too, so addslashes htmlentities stripslashes isnt ALL OVER the codebase. There are two helper classes on top of this - User, which handles session data and provides an abstraction between phpBB, and Room, which handles room session data such as permanent, room owner, room permissions (room permissions will be far more complex, too.)
The javascript provides a host of effects and, of course, handles XMLHTTPRequest - which you might know as Ajax. It has support for a growl-like popup which we call “Toast.” Essentially, you can use this for anything you like when writing a module.

Chatspot 3 will be great like this, in our opinion - module coders will be able to do anything without editing the codebase - and end users will be able to have FULL control over Chatspot’s workings (excluding required modules - post, build, poll.) There will be more complex room permissions, moderator permissions, just as people have asked for, so that for example moderator vs admin kicks can be controlled if the Site Admin wishes it to be so (this was requested a few times.)

So, of course, a version of Chatspot you’ll all love is on the way. ;) Keep your eyes out on the forum, because I know you’re all just drooling over my post :P

See you all later,

Techboy

PS: For the record, info was replaced with devblog because it wasn’t visited very often at all according to the site stats.

The v2 Code Crash (and how it’s being rectified)

Monday, April 17th, 2006

Chatspot v1 was quite a ‘quick-fix’ solution built on top of Smartor’s “Chatbox” phpBB modification, which, in itself, is not the best code the world had ever seen. Things would’ve stopped there unless it had experienced roaring success at Dreamviews, which, ultimately, spurred me to take it on as a sort of pet project to see how it could be modified to build upon that success. Unfortunately the focus was more on features than it was stability, and this led to unimaginable problems. v2, as it stands today, is a big mess of several features who all have different ways on how to do things. Various people have contributed their patches and fixes here and there, and it is possible to find seams in coding standards by pretty much just taking a glance at the codebase.

So I was faced with a small dillema. Some people are quite happy with what “just works”, and v2 does this, barely, but it was clear to me and Techboy that there would be absolutely no way to develop the v2 branch any further without creating a huge security hole that happened to have a few chat features bolted onto it. So it was decided a better idea to halt any further development - having to drop some features I would’ve liked to of seen myself - and begin work on a v3 that allowed ‘home grown’ features that other people had added to be dropped into Chatspot easily while fixing the codebase-rot that was beginning to show strains in ways of v2’s performance and security.

v3, then, employs a new modular-feature architecture that allows different modules for different features to be added. We, the authors, employ it, but it is made primarialy for other people to be able to add their features in without disturbing the code. This allows us to update any security holes across any installations that have competent Administrators who are able to use the updater (and it is simple enough, sometimes able to do things itself), while keeping any new features people have added working. v2 is not like that - if there’s a security hole near your hack, you need to start splicing code to solve it. This can be a complicated or at least gruelling task, and v3 completely eliminates this.

How the module system works is something I’ll be looking at in next posts (Saturday). We use modules for core functionality (build frames, post, poll and so forth) and have coupled it with our Javascript framework so modules can easily display their own output or add their own functions without having to modify any of the base code. It’s still under construction, though, and a lot of thought is paid to making sure that it is simple enough to use -  I’m anticpating some annoyance when people see this is not such a feature-filled release, but that’ll soon be quelled ;) - while being powerful enough to reduce the temptation of hacking the code.