This article is being published before it is finished, so I can look at the available layouts more objectively. Please bookmark this page and return soon to see the finished post.

Here’s what I thought were the most important features, when I started looking for software:
LDAP Authentication
File uploads and various multimedia attachments
Spellchecking of entries
Clean URLs (because I’m just that way)
Open Source
Staff familiarity with the underlying language
Size of user community

I narrowed my choices down a little, using the great WikiMatrix Web site.

Here’s a list of contenders with notes that led me to choose MediaWiki for our district-wide compendium of knowledge:

xwiki
http://www.xwiki.org/xwiki/bin/view/Main/WebHome
Beautiful, but written in Java (no expertise on staff).

twiki
http://twiki.org/
Also, very nice looking. Definitely a contender. Written in perl. At first glance the LDAP configuration seems awesomely complicated.

dokuwiki
http://wiki.splitbrain.org/wiki:dokuwiki
My personal favorite. Written in PHP (some expertise in-house). Very simple, clean, appealing interface and design. Well-documented LDAP plugin.

mediawiki
http://www.mediawiki.org/wiki/MediaWiki
The big bruiser. The engine behind wikipedia, etc. Written in PHP. I am not very crazy about the desing and look of this software, but since it sort of looks like Wikipedia, our staff may be familiar enough with it.

Installing and configuring MediaWiki

MediaWiki 1.9.x
Ubuntu Server 6.10
Apache 2.x
PHP 5.x

LDAP Authentication Extension for MediaWiki 1.1e

eDirectory
Open Enterrprise Server on NetWare 6.5

Add the following bit to LocalSettings.php to disallow edits by anonymous users:

// This snippet prevents editing from anonymous users
$wgGroupPermissions['*']['edit'] = false;

Since we do not want anyone to be able to register accounts on the wiki, we add the following code to LocalSettings.php:

// This snippet prevents new registrations from anonymous users
$wgGroupPermissions['*']['createaccount'] = false;

Edit includes/SpecialUserlogin.php. Find the initUser function. That block of code looks like this:

function initUser( $u ) {
$u->addToDatabase();
$u->setPassword( $this->mPassword );

$u->setEmail( $this->mEmail );
$u->setRealName( $this->mRealName );
$u->setToken();

global $wgAuth;
$wgAuth->initUser( $u );

$u->setOption( ‘rememberpassword’, $this->mRemember ? 1 : 0 );
$u->saveSettings();

return $u;
}

Change it so it looks like this:
function initUser( $u ) {
global $wgAuth;

$u->addToDatabase();

if ( $wgAuth->allowPasswordChange() ) {
$u->setPassword( $this->mPassword );
}

$u->setEmail( $this->mEmail );
$u->setRealName( $this->mRealName );
$u->setToken();

$wgAuth->initUser( $u );

$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
$u->saveSettings();

return $u;
}