KnowledgeOffice is licensed under the GNU Lesser GPL license.

Some background

KnowledgeTree is a web-enabled enterprise document management system developed by Jam Warehouse (download here) that facilitates (amongst other things):
  • Version control
  • Document workflow management
  • Document specific discussion forums
  • Document subscription and notification
  • Full text searching
KnowledgeTree is a well-designed PHP, Open Source product that provides extremely powerful functionality in terms of knowledge management and dissemination within an organization. The response to KnowledgeTree has been overwhelmingly positive and its uptake in Open Source orientated organizations has been hugely successful. Having used KnowledgeTree a fair amount myself, I can say the product is extremely valuable. I have, however, experienced what I am sure is a common frustration with any web-enabled document management system - it is extremely painful having to launch a web browser every time you wish to add, check in or check out a document from KnowledgeTree.

KnowledgeOffice's aim is to alleviate this frustration, thereby allow organizations to successfully maximize their use of KnowledgeTree.


The stated goal is to relieve some of the headache associated with launching a new web browser for core interactions (check in/out and document addition) with KnowledgeTree. Given that most of my own documents are generated using Microsoft Office, KnowledgeOffice integrates directly into

  • Word
  • Excel
  • Visio
Using KnowledgeOffice you can add new documents to, check documents out from and check documents into KnowledgeTree directly from one of the above mentioned Office products. KnowledgeOffice will also keep track of document locations so that, once a document has been checked out for the first time, you never have to browse to a folder in KnowledgeTree when checking it in or out again.

The architecture

For those of you wondering, KnowledgeOffice is written entirely in C#. KnowledgeOffice has three distinct parts:

  • The client
  • The server
  • The core

The client
The client portion of KnowledgeOffice is the part the integrates into Office. It's what most people will use. When installed, the KnowledgeOffice client will appear as a new button labeled 'KnowledgeOffice' on the main Office toolbar. The button is context sensitive and will provide the user with different functionality depending on the current context.

The server
The server portion of KnowledgeOffice is that part that sits on the server the runs KnowledgeTree (yes, it's written in C# and yes that means you *nix fundis out there will wail and gnash your teeth, but that's they way it is. If you REALLY want to use KnowledgeOffice you're going to have to get a Windows machine, run Apache on it and run KnowledgeTree and KnowledgeOffice from there). The server is the link between the KnowledgeOffice client and the KnowledgeTree database and document file system. It provides the client with functionality such as checking in/out, user authentication, document addition etc.

The core
The core is a very small class library that contains components used by both the client and the server.

C# and .NET Remoting?

Some of you maybe wondering why I chose C# as my base language and why I used .NET Remoting for my server-side functionality, instead of maybe a web service or maybe re-using the existing KnowledgeTree architecture? There are a couple of reasons and they're actually all pretty simple:

  1. I work for a Microsoft orientated company and have a fair bit of C# experience;
  2. I needed to evaluate remoting for an upcoming project;
  3. Using C# and .NET Remoting (as opposed to an entirely platform independent solution) cut down my development time quite significantly and;
  4. Much as I hate to admit it, I've become quite a C# fan
So now you know!