It’s only human. Over time you are destined to forget information and recycle it with fresh knowledge. You do this unintentionally. It seems that even the latest neuron based harddrives, encapsulated inside the human brain, have a limited size capacity before information is either archived or sent to /dev/null. The logical strategy is, of course, to store the important information externally, outside the body, for future reference.
The problem domain
I try to keep up to date on a broad variety of mostly open source technology. The usual trend is to acquire an taste for something, learn enough about it to test it and form an opinion, and then forget all about it. That is, of course, unless I can use it for something immediately. In which case the information may stick if I’m lucky.
Some time back I was configuring a lot of Linux software, mostly for my own personal home use. On many occasions I would find myself in a situation where I would need to repeat a process that I knew I had performed earlier. Although Google is a good friend, I was getting frustrated with myself for wasting time acquiring knowledge only to use it once and then throw it away. I was more or less starting over, every time. My first solution was to persist the freshly gained knowledge to text files.
Prelude to the “battle”
I was quite happy with the solution for a while, but something was still wrong. The second part of the problem was becoming apparant. It wasn’t that things weren’t getting documented in some form or fashion as expected, but I was missing the necessary functionality to reclaim the information when I needed it. Plain text files only get you so far, and although easy to access from a wide variety of user interfaces, they allow for mostly simple read and write access, but not search (Yes, I am aware of grep).
On Linux, using text files is considered the normal thing to do. Most system and application configuration is stored in plain text files so at first this didn’t strike me as abnormal. However, when the number of text files started to reach double figures, together with poorly chosen file names, and grep wasn’t helping me, I concluded that the time had come to bring out the big guns.
Introducing the Wiki
I’m sure most of you know what a Wiki is, but in the event you do not, then let me introduce WikiPedia as the best evidence of a great wiki implementation. It is the largest multilingual encyclopedia available online, containing more than 2 million articles and growing. In general, a wiki is a browser-based collaborative writing environment, to which anyone may contribute without having web programming or publishing skills. It is software that is used to create and display collaborative content, usually without intervention from an administrator or editor.
I began using a personal wiki instead of text files and the success was immediate. Reading, writing, searching and categorizing the documentation was a piece of cake. I can also let others use my wiki should I choose without giving them access to my file system.
MediaWiki software – open source, of course
A lesser known fact is that WikiPedia runs on open source software, created by the WikiMedia Foundation for the WikiPedia project. It is freely available under an open source license for anyone to download and use. The software’s name is MediaWiki and is written in PHP. I will only be discussing the MediaWiki software in this blog entry.
Prerequisites and installation
The easiest way to run MediaWiki is using the Apache web server, PHP and MySQL. All are open source software and form three of the four components of the defacto LAMP software setup. You don’t need to use Linux as your operating system to run MediaWiki, but if you should choose to then your installation will be relatively easy to setup and configure. The aforementioned software packages are normally a part of most common Linux distributions or easily available from the distribution software repository, so you won’t need to download or update a thing – the OS will do it for you. I will avoid going into details on how to install Apache, PHP or MySQL for other systems since there already exists much well written documentation and tutorials for each of these packages online. Remember, Google is your friend.
Let me also add that you will need PHP version 5 or above and MySQL 4 or above. It is now also possible to use PostgreSQL as a replacement for MySQL, should you prefer. In which case you will need version 8.1 or above. You can also replace Apache and use Microsoft IIS as your web server, but surly only someone insane would want to do that…
Of course, you will also need to download the actual MediaWiki software which, as mentioned previously, is also open source. Unpack it to your Apache server document root (usually the htdocs directory) and rename the resulting directory to “wiki”. You should then be able to access the MediaWiki setup wizard from a URL of form “http://yourhost/wiki”. Follow the instructions carefully. If memory serves me correctly, you will need some basic MySQL knowledge, but the tables etc are created automatically on setup. The web server will need write access to the MediaWiki’s “config” directory to store the resulting configuration, but you will be informed should a problem present itself.
Here are two screen shots of how things should look when you start the web based installation wizard.
Has the jury reached a verdict?
Next it’s time to add some wiki content, but this blog entry is just getting too long, so let’s leave it at that for now. Make sure you call back some time later and I’ll introduce some of MediaWiki’s nifty formatting features. Adding web content has never been easier and the results look great.