I’ve always had an interest in knowledge management and how tacit knowledge in particular can be captured within an organisation. I once read about a management consultancy that use a specially constructed database to store information about the different industries and past projects the consultants have worked so that less experienced consultants can access the knowledge of the senior staff when dealing with situations unfamiliar to them. The value in a management consultancy is in the experience (and therefore knowledge) of its consultants so the database they use is an incredibly valuable resource that forms an integral part of the offering to clients. It occurred to me that a database like this is pretty valuable to any type of knowledge worker, in my case I.T., so recently I set about implementing a personal level version of the management consultancy knowledge database.
Rather than starting from scratch and spending a lot of time on database development and not getting much value from this idea until much later on I decided to practice what I preach so I went looking for an existing system that would give me the functionality I need without the development burden.
What I wanted to be able to do is store information in a structured manner that can be easily retrieved, and most importantly of all, easily searched through for the relevant scrap of info that might be needed at any given time. I decided that the best choice for a situation like this was a Document Management System (DMS) of some description as opposed to a Knowledgebase system in order to get the functionality needed to be able to utilise material written by others in the form of manuals, whitepapers, etc that I often download for research.
I’ve seen a document management system work well in a law firm setting where the business revolves around documentation and I understand its power in a setting like that, but a large part of what I do involves reading and writing documentation and there is always a difficulty using that documentation when it comes time to find what you need when you need it. Directory structures only go so far and what I wantred was a search tool and storage method focused on document management.
As I wanted a system for my own personal use there were some important considerations when selecting software. Cost and licensing were the major concerns which meant that an Open Source solution would be the best choice. Another big consideration was leveraging existing infrastructure. I already have a LAMP server in operation to allow me to experiment with PHP applications like WordPress and Joomla, so if I could run a DMS on the same server that would be ideal.
An open source solution would have the added benefit of enabling development further down the line as I’ve been working with CRM lately and I am interested in integrating systems like CRM and DMS in order to centralise data management. DMS is interesting in this context as there’s an opportunity to present information from DMS to CRM in order to assist Sales and Service staff by making information retrieval an integrated part of the main application they use. The need to facilitate integration manifests itself in a requirement for web services functionality.
With these criteria in place there was only one logical choice and that was KnowledgeTree.
The web-based (i.e. LAMP or WAMP based) KnowledgeTree Document Management System is delivered in the hybrid Commercial Edition/Community Edition brand of open source that has become popular in recent years. The community edition is free of charge while the commercial version is sold in the same way as closed source – an approach that worked very well for Zimbra in the email space – the attractive pricing sealing the deal on KnowledgeTree Community Edition (KTCE).
Installing KnowledgeTree requires a choice to be made in terms of which installation method will be used get the system up and running as there are two methods of installing KnowledgeTree on Linux (as well as two ways of installing on Windows). The two install methods are stack and source, the difference being stack provides all the components needed to get up and running whereas source is limited to only the KnowledgeTree specific parts and requires that some other applications are already installed and configured on the server. The stack install is by far the easier approach as there’s no messing about with fiddly configurations needed but it made me wonder what other parts are needed to get KTCE going and why?
Regarding the stack installer the KnowledgeTree website states: “The Community Edition stack installer installs PHP, MySQL, and Apache, and includes the external applications required for running KnowledgeTree Community Edition.” This piqued my interest – what are the external applications and what do they do?
KnowledgeTree is a lot more than a simple database for documents and it turns out that there’s An array of functionality in even the community edition that I wasn’t expecting. KTCE requires the LAMP (or WAMP) applications which is fair enough but its other requirements include:
- Lucene – One of the Apache Foundation projects that provides the text searching capabilities needed in a good DMS and the function I was most interested in
- pdftotext – for indexing the contents of PDF documents
- Unzip – for bulk upload
- zip – for bulk download
- OpenOffice.org – for pdf generation and document comparison
- Java – to run the Document Indexer
- ImageMagick – for Thumbnail creation
- GhostScript – required by ImageMagick for reading of PDF files used to create thumbnails
- Zend Server Community Edition – for PHP optimisation functionality
The array of components that go into KnowledgeTree give an indication to how powerful it is but it concerned me as to how well all these parts would play with the other residents of my LAMP server. Would performing a stack install mess up my existing LAMP config? If so, how time consuming would it be to go through a source install?
A quick review of the source installation method was discouraging due to the requirement for some older versions of certain components, particularly PHP that would require uninstalling the version currently running, hooking up to an older software repository, and installing the older version. While not too arduous a task I was unsure how many parts would need something like this done and how long configuration would take. I already rejected the idea of building a database from scratch due to the amount of time it would need so I was hoping to get going without a long installation process. With this in mind I decided to try the stack install to see what would happen.
It turned out that I needn’t have worried as the stack installation went perfectly and there was no harm done to any of the applications I had already been running, beyond a slight version change here and there which has no impact on what I’m doing with those systems but is something that would have to be considered very seriously in a commercial or other mission critical setting. After the installation MySQL had picked up a new “dms” database and Apache had picked up a new “knowledgetree” entry. The biggest change is in how PHP is now running as KnowledeTree uses an application called Zend Server to provide PHP services (mainly in the area of optimisation) and the version of PHP Zend provides for KnowledgeTree 3.7 is PHP version 5.2.14, whereas PHP version 5.3.4 is now available. While this doesn’t impact me at all at the moment, I will be keeping an eye on how KnowledgeTree move on with PHP. In a commercial environment KnowledgeTree would run on its own server (or more likely group of servers) so these version issues would be segregated away from other applications where they might have an effect.
I set out to get an application that I can use to organise the multitude of documents that I write or reference in order to be more effective. My criteria were simple and KnowledgeTree seemed to provide the functionality I needed. Wow, but how wrong was I? KnowledgeTree Community Edition gave me everything I needed and then kept on giving. Once the system was up and running and I started to explore I kept finding new things that greatly impressed me.
Some of the things that have pleasantly surprised me in KnowledgeTree:
- How well the indexer and search works when it searches within documents
- The ability to generate PDF versions of the documents for printing or distribution
- The ability to store other types of media – like video files and pictures
- Active directory integration out of the box – with about two minutes worth of configuration KTCE integrates with Active Directory for User management which makes it ideal for a corporate environment
KnowledgeTree Community Edition reflects how open source companies are offering their products and the compromises they enter into in order to deliver products of a suitably high standard. KTCE is free of charge but not every part of the system is free as in open source. The Zend Server is completely closed and makes up a major part of how KTCE operates. While Zend works well this approach will not please open source purists however this type of compromise doesn’t tend to bother that many especially as this is how Ubuntu operates and has been incredibly successful as a result. The commercial realities of software development have forced a move away from the open source business models that were so prevalent during the .com boom times.
What KnowledgeTree has done is present software that really is that good. While regarded as a Document Management System the software is also sometimes labelled ECM – Enterprise Content Management and, while the idea of Enterprise Content is a little hard to grasp, it’s clear that knowledge management is not just about documents anymore; though I for one am glad that I now have a handy place to store all those technical manuals I’m always downloading.
A pdf version of this posting can be downloaded here.
KnowledgeTree Community Edition: http://www.knowledgetree.org
Zend Server CE Open Source Status: http://www.zend.com/en/products/server/faq#faq9