Thursday, February 21, 2013

Prehistory of QetriX


QX Logo

In 2001 my best friend Pavel (Paul) came up with an idea to create an online discussion website / Internet forum and suggested name “QX”, because in Czech those two letters are only ones pronounced with three phonemes. In English it's much more common, there is also G, H, Y or British Z - /ˈzɛd/.

Anyway, in the meantime qx.cz domain became unavailable, so we eventually settled for QeX and registered qex.cz domain. It costed 1600 CZK = ~90 USD at the time, half of the amount was registration fee, and the other half was one-year prepayment (such amount was several months' worth of our pooled pocket money, that's why we hesitated).

1.x


QeX Logo

Pavel created the first version, using vlibTemplate engine, which he customized for QeX. It was mostly for us to learn PHP and MySQL. We wanted a little more, than just a discussion server, so we called QeX a “Multiportal”.

After signing in, user stepped into “Gate” – home page, where all important stuff resided, in fact it was sort of a "dashboard". From Gate he could go to list of “clubs” (chat rooms), or directly into particular club, where he discussed about a topic the club was created for.

Early logo of QX/QeX we used later as “helper” (like Clippy in MS Office) and appeared in what one day should be a learning center or help center. This logo and the following one were both entirely Pavel's work. Next and final logo contained “e”, as well, not just Q and X, and all those three letters were combined together into a head of hedgehog, or maybe a fox.


The only picture of QeX v1 I found, as a part of our promotion banner. (2001)

2.x

Version 2 was like a typical Internet forum. We had discussion clubs about various topics, where users can write their posts. Any user was eligible to create own club and manage it afterwards. Each club might contain a poll, a “home” (separated HTML text page attached to the club via link) and a “minihome” (HTML text above posts, limited in length).

Pavel introduced a concept of dashboard “sheets”. Service status, charts, daily info, news, weather, currency exchange rates... It was nice and small, sometimes even smaller, than the text itself with all the HTML tags around. And this way we were able to use gradients, and everything looked exactly alike in all web browsers – we're talking about IE5, IE6 and Netscape Navigator here! Everything was in table layout with very little of basic CSS.

Pavel also introduced “visit-cards”, containing all important info about the user, like his/her nickname, profile picture, current online status and timestamp of his/her last activity. Those cards were like a widget, which people can put on their websites.

On Gate there was also a bulletin board and system news. We had a tiny IFRAME, that reloaded every minute and checked for new stuff (like incoming mail or friends online) – there was no global support for XMLHttpRequest (later better known as AJAX) yet.

3.x

3rd version was released in 2003 and unlike previous 2 versions, this one was almost entirely my work. I recreated the whole engine from scratch, but still using the vlibTemplate with Pavel's customizations.

Instead of clubs it had “modules”, with various services. Module was just a shell around its data (=model) and service determined how to interpret the content (=view). We had services like section (list of child modules), discussion, monologue (form of discussion, where only owner can post), chat, gallery, game, plugin, book (one long post per page) etc.

Users could store desired posts to personal memos and post private messages to other users. We didn't need home/minihome anymore, because if required, user was able to create child text module for his/her discussion module with tight link in between.

System went from “clubs are managed by admin” to “modules are managed by the user-creator and his fellows”. User was able to customize the Gate as well, so it became like a dashboard of sort. We also opened modules for anonymous users, in read-only mode.

Modules were categorized into a tree. We had no tags or anything though, everything was managed by hand. But I figured out a smart method for drag'n'drop (in 2003 on web it was really something special), so it was quick'n'easy.

Pavel's most significant idea later was to have a type for every piece of content, instead of having different services. It would allow us to have posts, pictures, games, polls, tables... not only in a single module, but in a single post as well!

But in 2004 it was for us quite hard to achieve, not only because of hardware issues, but mostly because of lack of our skills. And even now this would be challenging to do in an easy-to-use service.

Version 3 had features, like in-browser games, where users could compete against each other (in pseudo real time or turn based) and beat others' high scores. With XHR still in its infancy, this was yet again achieved by an auto refreshing hidden iframe.

There was no Audio API in browsers of that time, but I created a small SWF for that. Thanks to it I was able to play logon/logoff sounds, incoming mail notifications etc.

In model, users and modules have been merged into modules. In database we kept table “users”, which contained auth info (username, password) and user's module ID.

We moved e-mail into “module” table, so users were able to insert content into module by sending an e-mail to module's e-mail address. Our hosting provider at that time was the only one I know about, that allowed assigning a PHP script to an e-mail address and process incoming e-mails.

As a side project we created “WiH” – “Where is He”. Because there were many discussion servers, like QeX, in order to be able to contact particular user as soon as possible, it would require you to know, on which server he/she is active right now.

Retrospectively I think v3.2 was the most advanced version of QeX ever made and influenced QetriX at most. Too bad Pavel eventually hold back in development, and I was ending just by myself. He was more underground, and I was more commercial, so he most likely realized we missed the right time for such underground project and lost his motivation.

Unfortunately, we experienced a major system outage with a database crash. It took some time to restore it and I decided it was time for another reengineering. We lost most of our users anyway.

4.x

In v4 I split major sections into 3rd level domains and created true multiportal – each of those domains acted like separate website with unique look. The module system concept was brilliant, there was no need to change it.

I have to admit there were some great new ideas for v4. I put homogenous data in modules into “windows” and enhanced terminology from “module” to “node”.

User had been able to specify permanent windows, block unwanted windows, define own windows or even call windows from other nodes. Windows had position and state, user was able e.g., to relocate or minimize them. I designed an amazing desktop-like service for our new “windows” concept.

For the first time the user service was much cleaner, no system lists or menus. Everything was up to the user, thanks to windows.

Aftermath

After the outage of v3 QeX had no regular users, so I kinda let the original idea die. I started to focus on for-profit projects, like my CMS, and kept alive only my personal website on QeX. And because the “www” domain was empty and abandoned, I created a web portfolio on it.

In the years after I used QeX in various different ways, but none of them went to reincarnate QeX. Nevertheless, I often realized our ideas for QeX are a goldmine, so from time to time I go thru our old text files and documents, like “ideas for v4”, and look for anything I'd be able to use today. Like my CMS used the module system and it moved to QetriX and Qedy as well.

I still think I may resurrect QeX one day again. After I graduated, I became an employee, so portfolio website is not needed any more and the domain is available for something new once again. The only downside is it's .cz and no other TLDs are available. So maybe something with just local ambitions.