December 2, 2011

Weekend Project: Run Your Own Q&A Site with Coordino

The concept of a user-driven FAQ or question-and-answer service has been around for years already, but it has really taken off recently with the success of commercial sites like StackOverflow and Quora. But if your company or project wants to run an in-house Q&A service for your users and developers, you don't need to write a custom solution, just turn to Coordino.

The open source Coordino package is designed to serve up a fast-and-flexible Q&A site running on MySQL and PHP, complete with a voting system, user reputations, and spam-prevention.

Installation and Setup

The Coordino source code is hosted at GitHub, in the repository of lead developer Jim Walker. So far Walker has not rolled any numbered releases, so the only way to get the code is to grab it from the Git master.

You can use the site's download feature to automatically fetch it as a .zip or .tar.gz archive, of course. Coordino itself is published under liberal BSD-like licensing terms. It incorporates code from the Cake PHP framework, but the repository branch is self-contained, so you do not need to install anything separately. PHP 5 and MySQL 5.1 or greater are recommended. Apache is the only Web server supported for the time being.

CoordinoYou can unzip the archive into your Web root (e.g., /var/www/ — it was written to run from the site root (and not in a subdirectory), although Walker says it should work in a subdirectory as well. If you have trouble, using a subdomain instead may help.

The brief installation instructions in the README.txt file suggest that once you unpack the source bundle you can visit the new URL immediately to start the Web-based installed, but this is not quite true. First you need to create an empty MySQL database and database user for Coordino. You also need to check that Apache's mod_rewrite module is enabled, and you need to make sure that the .htaccess files from the source package are installed (there are several in different directories).

This is because the installer relies on mod_rewrite and the rewrite rules contained in the .htaccess files to find some of its configuration files. If they are not in place, the Web-based installer will fail, blaming missing directories and files that are in reality components that it is looking for via mod_rewrite.

Quite a few users seem to be experiencing trouble with this aspect of the installation process, in particular on shared Web hosting plans. The .htaccess rewrite rules have been modified several times, but if they still are not working for you, your best bet is to visit the issue tracker and see whether or not another user has figured out a set of rewrite rules that work for your hosting provider.

When you get these details worked out, you can visit your Coordino installation's URL in the browser, enter the database settings, and the Web installer will set up the tables. You'll then need to set up your first user account, which will have administrative privileges, and you can proceed to configure your Q&A system.

The configuration options are broken down into usage settings, user administration, an optional banned-words blacklist, and a remote user-login setting. This final category is used to hook Coordino in to an existing user account database, so that you can integrate the system with another Web app or userbase but not demand that every user create yet-another-account. Most of the relevant administrative settings are found in the first category, where you can set the "reputation" scores required for a user account to gain additional privileges, how many "flags" a post must receive before it is removed from public view, and so on. You can also manually change users' privilege levels, if you want to appoint administrator accounts without forcing them to work their way up from zero-reputation beginnings.

Ask Away

Coordino's content is driven entirely by your users. Users ask, categorize, and answer questions, and user votes elevate or demote answers based on fresh, crowd-sourced wisdom. The system is not technically complicated once you get it set up: your admin settings determine who can ask questions, vote, and supply answers, but by and large running a healthy Q&A site is a community management task. From the users' perspective, Coordino provides simple controls: one click access to the latest questions, unsolved questions, and tag cloud, and a personal profile page with links to each user's contributed questions and answers.

Answers to questions and comments on questions (or on answers) are treated separately; this allows your users to maintain a conversational thread. Whenever a question is answered, the system (optionally to the user) notifies the asker by email. Voting is done by logged in users, and up or down votes affect the user reputation. As we saw back in the configuration interface, you as administrator dictate what reputation score is required to comment, answer, vote, and perform other functions.

User profiles are complete enough for standard use — certainly more than sufficient for an intranet service, which was Coordino's original spec. If you were running a public service you might be interested in linking in to some additional resources, such as existing social networking services, such as linking to profile pages on those other services, or even just sharing popular Q&A pages over them. However, adding those features is straightforward enough; the proprietary social networks make it drop-dead simple to integrate their add-ons into common frameworks like PHP.

The anti-spam features advertised on the home page are accomplished through the keyword blacklist and through the use of ReCAPTCHA on the question and answer submission forms. The blacklist is simple enough, but as we all know blacklists require constant maintenance to be effective against spam: simple misspellings and non-alphabetic characters can defeat them, which means that your blacklist will continue to grow larger and larger as the spam arms race continues.

I am also not a fan of ReCAPTCHA, which was a novel idea when first released, but in practice little more than an annoyance now. All CAPTCHA systems are like that to some degree, of course, but ReCAPTCHA is worse than most because 50 percent of its test words come from low-quality OCR scans that seem to get less clear every year. Unfortunately, it is hard-coded in. I am hopeful that in future releases we will see more spam controls (such as link-based rules that flag suspicious, overabundant, or mismatched URIs), and some more flexibility on the bot-prevention mechanisms.

One feature mentioned in the Web documentation and in the administration settings seems not to be present in the code — support for reputation-based advertising rules. That is to say, you can set a reputation threshold above which your advertising is hidden from the user. You could use that to hide ads from employees, or simply reward moderators and other faithful contributors with an incentive to keep their reps ship-shape. Still, it would be nicer to have controls built into the system for managing ads — right now there are not any. I am not entirely sure from reading through the code what advertising networks are supported.

Coordino has a few other tiny problems, such as the tag entry form, which does not tell you that tags must be comma-separated, the various forms do not warn you that you insufficient reputation to use a particular feature, and the Q&A forms do not warn you that entries must be (quite arbitrarily) ten letters long. But for the most part, Coordino stays out of your way, and lets the question and answer process take center stage.

Answer Me This

The Coordino Web pages suggest using the framework for some tasks other than "pure" Q&A, such as voting on issues, or keeping track of group tasks. I'm not entirely convinced that the system would work that well for anything other than a small group, but I do not think it is necessary, either. Coordino runs a lightweight and fast question-answering service, which is self-sorting based on user-supplied tags. That is reason enough to give it a look; there are other systems fine-tuned for issue tracking. What Coordino does it does well: the interface is simple to understand, it runs fast, and it provides the features you need to get started right out of the box.

A few areas in Coordino are ripe for improvement — the squirrelly installation, the hardwired ReCAPTCHA. But Coordino is off to a good start for such a young project. I think that the inclusion of support for integration with external user databases is a sign that the developer team is thinking ahead, and we should expect more such features in future releases. But if you are looking for a way to provide a Q&A system for your users, employees, or customers, Coordino is drastically better than a heavyweight bug tracker or full-blown Web forum package. Plus, the simple LAMP server requirement means you can test it out today, and see what questions come up.

Click Here!