Our blogs are moving
November 19, 2008 – 3:11 pm by danielHaven’t seen a new post in a while? We are in the process of migrating our blogs to http://www.knowledgetree.com/blog.
More information is available on the old team blog.
Haven’t seen a new post in a while? We are in the process of migrating our blogs to http://www.knowledgetree.com/blog.
More information is available on the old team blog.
Haven’t seen a new post in a while? We are in the process of migrating our blogs to http://www.knowledgetree.com/blog.
You’ll find all our latest posts there including: Screencast: Demonstration of Office Add-in technologies; KnowledgeTree Community Forums upgraded; Exploring possibilities with Apache POI, and Viewing Documents Online - New Community Plugin.
We’re still working on adding more features, but be sure to visit the new KnowledgeTree Team Blog to stay up-to-date with all KnowledgeTree-related news.
It has been a few days since OSCON 2008 has drawn to a close, and the two topics that interested me most have made a few appearances on the all knowing web. One of the two topics is cloud computing. No surprise there as I gave a presentation about it at OSCON. The other is XMPP. Until OSCON I didn’t really give much thought to the possibilities that XMPP is offering, but more on that in a sec.
Cloud computing really has reached buzz word status. Looking at the number of presentations at OSCON dealing with clouds as a proxy of this, shows how just a year ago not a single presentation dealt with cloud computing. OSCON 2008 had about half a dozen presentations dealing with cloud computing in one way or another. The first two days of this week have brought news of HP, Intel and Yahoo’s entry into cloud computing, and then there is a rumor going around that Microsoft is also looking at entering this market. All of this activity and we don’t even yet have an accepted definition of cloud computing.
You could be forgiven if you thought that traditional colo’s are about to disappear from the face of the earth, washed away by heavy rains brought by the clouds. But I would not run out and write their obituaries just yet. As Thorsten von Eicken pointed out in his presentation “Scale into the Cloud with Open Source” the real benefits of cloud computing reveal themselves to applications that are able to scale horizontally. In theory that should be possible with every application, but in reality there usually is some development needed to achieve this. The more significant the modification required, the higher the cost is to switch. The counter argument is that switching will have to be done sooner or later as the demand for the application grows. That is true, yet the cost of switching now could be higher than it will be in a year or two.
There is not only the application to consider. Another important puzzle piece is the management of your cloud. Most conventional management and reporting tools don’t readily map onto the cloud computing paradigm perfectly. And this brings me to XMPP. The development of XMPP has largely fallen under my radar, so I was taken a bit by surprise at the versatility of this protocol.
Let’s just take a step back. One of the biggest challenges when moving to the cloud is the amount of automation that such a move involves. You have servers coming and going, and certain configuration changes need to happen based on this. Your servers also need to co-ordinate with each other and communicate with each other. I have been using Capistrano to do most of this automation. Although I have found it to be an awesome tool, it hasn’t given me everything that I require. SSH is not the perfect protocol for this type of work, and is inherently a one way communication when used in scripts. What I really would like is something that is more ‘interactive’ and real time. Enter XMPP.
People are doing some amazing stuff with XMPP, but what got my interest the most was Engine Yard’s Vertebra. Take a look at this presentation to get an idea how Engine Yard is planning to use it. Wow, some interesting stuff. But wait, there is more. One of the key problems that cloud computing is trying to solve is scalability. And this incidentally happens to be what the good folks over at Flickr are using XMPP for. Evan and Kellan’s presentation “Beyond REST? Building Data Services with XMPP PubSub” discussed how the inherent polling nature of web services, be it REST or SOAP, quickly lead to scalability problems. Have a look at slide 15 and 16 to get an idea of the problems that polling poses for Flickr.
So, XMPP and cloud computing, is this a match made in heaven? Guess time will tell, but I would recommend you keep an eye on this space, I suspect there is more to come.
KnowledgeTree is well over 5 years old now and we have learned a lot from our users about what they require and value in a Document Management System. We have addressed many of these requirements and embraced many of these values over the years. However some requirements and values have remained frustratingly out of our reach.
KnowledgeTree has been lucky enough to have a succession of highly skilled and forward looking architects and developers to whom we owe much of the current ease of use and solid extensible core code. However, along with any mature software product there comes a level of technical debt, functional dead ends and general confusing clutter. Tools and techniques are just different today to what they where yesterday. Thankfully that level is not very high for KnowledgeTree, but it is high enough to hinder us achieving some of our goals for the product. We would like to embrace the true Web 2.0 type user interface with all it’s ajaxified ease of use and responsiveness. We would like to squeeze every ounce of performance out of the latest protocols, third-party applications, operating systems and hardware. We want to make KnowledgeTree easy and fun for community developers of all skill levels to customise, extent and generally tinker with. We would like to do all this in an environment that puts quality first by respecting coding standards and encouraging the development of testable code.
In an effort to realise these goals we have embarked on a refactoring drive that targets areas of KnowledgeTree that are hindering us achieving these goals. We are constantly refactoring KnowledgeTree in our usual day-to-day development but this refactoring drive targets much larger areas than normal and actually will effect the external behaviour of KnowledgeTree. The actual refactoring areas deserve their own blog entry and I am not going into them here. Rather I want to touch on an important tool we use to manage the process. The tool is Version Control and in our case it’s Subversion. We use the concept of development(DEV) and stable(STABLE) major code trunks in the SourceForge code repository. The refactoring drive will result in a larger divergence of the DEV and STABLE trunks for a while. This could cause some confusion so I would like to shed some light on how we will be using the SourceForge code repository trunks and branches.
The major structure we use is as follows…
- trunk
- branches
- tags
- STABLE/trunk
- STABLE/branches
- STABLE/tags
As we are approaching a release we reach a point known as “feature freeze“. At the feature freeze the current root trunk (which we call DEV trunk) is merged across to STABLE/trunk (which we call STABLE trunk) and simultaneously a new stable release branch is created in STABLE/branches/<release-version> (which we call RELEASE branch). Now the process of stabilising for the release starts.
New features and improvements that are not marked for the current version continue to be developed in the DEV trunk along with bug fixes that need to make their way into STABLE trunk and then into a RELEASE branch. STABLE trunk only has bug fixes applied to it. No new features or improvements are applied to or done in STABLE trunk. Builds are done from RELEASE branch and submitted to our QA team and an iterative stability cycle starts.
The general stabilisation workflow on KnowledgeTree pre the refactoring drive was as follows. All developers during their day-to-day activities commit new features, improvements and bug fixes to DEV trunk. Bugfixes that are marked as required by the current release are reviewed and merged from DEV trunk into STABLE trunk. They are then reviewed again as a double check and merged into the appropriate RELEASE branch. A new release is built for QA and the cycle starts again.
What the refactoring drive is going to do is introduce code that is potentially so different from the current RELEASE branch code that bug fixes in DEV trunk make no sense in the context of the RELEASE branch and visa versa. The DEV and STABLE trunks will in effect diverge completely and will only merge again when we reach 3.6 feature freeze. This means we will be forced to change our usual workflow a bit and do the current release bug fixes in the STABLE trunk and merge them into the RELEASE branch and into the DEV trunk if appropriate. This is not a big change but it does mean that STABLE trunk may not be as stable as it has been in the past. More importantly DEV trunk will proabably not be at all stable and should actually be seen as experimental.
So if you want to access the latest stable code then use the latest RELEASE branch in STABLE/branches. If you want the cutting edge code then use STABLE trunk and if you want the bleeding edge code use DEV trunk.
For example, here are the links to use in your Subversion client for the current versions…
Stable=https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.5.2c-Release-Branch
Cutting Edge = https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/trunk
Bleeding Edge = https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk
You can also just explore the code and even the change log and download individual files by using the SourceForge Subversion web front end at…
http://kt-dms.svn.sourceforge.net/viewvc/kt-dms/
Have fun!
In my spare time I’ve been working on a prototype for an Adobe Flex/AIR Drop Box, based on the .Net Drop Box Beta we recently released for KnowledgeTreeLive. Being new to Flex and AIR, I started off slowly with a couple simple PoC’s.
The first was a drag-and-drop tool which, with the help of some great blogs on the subject, was surprisingly easy to implement:
http://blog.vixiom.com/2007/06/29/merb-on-air-drag-and-drop-multiple-file-upload/
http://blog.everythingflex.com/2007/06/18/simple-drag-and-drop-air/
Next, was a basic SOAP-based tool to login and list the contents of the root folder. Conrad’s documentation on using web services came in handy here.
Logging in and retrieving the session key was straightforward:
ws = new WebService();
ws.login(’admin’,'admin’, ‘127.0.0.1′);
I had some issues interpreting the results of the get_folder_contents() call. Initially, the call was returning a null object. To resolve this, I had to set the result type to ‘e4x’ (I suspect that this may have been a bug in Flex beta3):
ws.add_document.resultFormat = “e4x”;
var folderContents:XMLList = XMLList(event.result);
myLabel.text = (folderContents..item)[1].title;
Overall, Flex and AIR were easy to work with and, thanks to Adobe’s slick UI widgets, I think that the prototype ended up looking more like a final product than a throwaway. I implemented the Drop Box on Windows XP and was pleasantly surprised to find that it worked on Mac OS X Leopard, without any tweaking whatsoever!
Lastly, I found KnowledgeTree web services well-suited to developing thin clients of this sort and am excited to see how our community makes use of this interface.
–
Click here to download the latest build. Please let me know what you think.
Note that this is only a prototype, so I wouldn’t recommend using it on any documents you’re attached to ;).
Known issues\limitations:
* Documents are always dumped in the root KnowledgeTree directory;
* No support for folders;
* No way to resize Drop Box;
* Occasional IO issues on Windows XP.
We’ve upgraded KnowledgeTreeLive and released a whole bunch of cool new features for our software as a service document management application: Drag and Drop tools for Windows, Microsoft Office 2007 integration, integration with Zoho Office for online editing of documents and a cool Hot Folders application. More on all of these on the KnowledgeTreeLive Applications page. We’ve also exposed KnowledgeTreeLive’s web services API to users, allowing you to build mashups with KnowledgeTreeLive as the back-end document management store.
Some videos of the new functionality below:
KnowledgeTree’s easy to use Drag and Drop app for Windows
A cool mash-up between KnowledgeTreeLive Document Management On-demand and Zoho Office
This last week saw the release of KnowledgeTree 3.5.2. From a functional perspective, we’ve had some great developments regarding search that I’m wanting to comment on.
KnowledgeTree now includes a search grammar/language, allowing users to construct search queries on almost any field relating to a document. The new search engine provides great flexibility and leverages the power of the database to query document metadata, and the new full text search system based on the Apache Lucene project to query document content.
In previous versions of KnowledgeTree, search functionality has been accessible via a ‘quick search’ dashlet on the dashboard and in a little portlet when browsing through the repository. This has been replaced with an easy to access search widget on the top of each page:
Entering a value in the search widget searches through the metadata, document id, document text, discussion text, filename and full path fields.
The advanced search query builder has been modeled similarly to previous versions. The advanced search has improved grouping to allow improve the user experience in selecting search fields.
Search results are returned similar to search engine results, ranked by relevance:
All the bulk actions available when browsing are available via the search results.
Improvements to search also include searching based on full path - allowing you to create search query based on a specific folder and it’s child folders. Further, you can now also perform wild card searches. Searching terms such as ‘th*’ will return documents containing ‘thread’, ‘threat’, etc. Wildcards can be incorporated between letters, such as ‘t*t’ meaning to match words starting and ending with ‘t’. A question mark (?) may be used as a single character wildcard.
There should also be a noticeable improvement to performance when adding a document as the indexing process is now done as a background task. A number of administrative pages are provided to help administrators diagnose problems with indexing.
Lastly, the search using the grammar syntax is supported via web services - allowing third party applications to locate documents in KnowledgeTree more easily.
In time we’ll be able to provide considerably more improvements, with many other features such as records management utilising some of search capabilities. Further extensions in the ’search pipeline’ include word proximity matching and others made available via Apache’s Lucene full text search.
Brian Reale and his team at Colosa launched their very cool ProcessMaker product this week. ProcessMaker is a commercial open source Workflow / Business Process Management (BPM) software tool designed for medium-sized organizations and is designed to allow a business or process expert with no programming experience to model and then automate an organization’s business processs. ProcessMaker includes a nifty AJAX web interface for form design and process mapping, and includes powerful document creation, security and 3rd party application integration capabilities (with a KnowledgeTree interface coming Real Soon Now(tm)).
ProcessMaker has been released under the Affero GPLv3 and is available for download from SourceForge.net. The tool is written in PHP and one-click installers are currently available for Linux and Windows.
As mentioned above, the team at Colosa are integrating ProcessMaker with KnowledgeTree, providing ProcessMaker with a secure, version controlled repository for documents created during processes. The interface is also likely to provide the ability to attach documents stored in the KnowledgeTree repository to activities in a process.
We wish the team all the best as they develop the product, build community and build their business!
We don’t yet officially support running the KnowledgeTree server on Macs due to complications around getting all of KnowledgeTree’s dependancies working on OS X. In particular, OpenOffice.org’s dependancy on X11 (and not native Aqua) makes putting together an easy to install, commercially supported stack quite complicated. (A native Aqua port of OpenOffice.org is ostensibly on the way but there hasn’t been a development release since July 2007 )-: )
There are however two routes to getting the KnowledgeTree server working on the Mac:
The BitNami KnowledgeTree stack is currently based on KnowledgeTree 3.5.2 Beta 1 but should be updated to a newer version sometime in the near future. Whilst this is a really slick and easy way to install most of KnowledgeTree’s dependancies BitNami still doesn’t ship with Java (J2SE), the Lucene Indexer enabled and OpenOffice installed. As a result, you will still need to follow the Source Only instructions mentioned above (and tailor appropriately for Mac OS X) to get document full-text indexing and KnowledgeTree’s powerful search capabilities working properly across document contents (metadata should still be indexed as it is database-bound).
BitRock, the guys who provide KnowledgeTree’s certified stack technology, have also added a number of other stacks to their BitNami portal, covering popular CMS’s, blog applications, bug trackers and the like. Well worth a look.
BitNami’s KnowledgeTree installer running on OS X 10.5.2 Leopard:

And the welcome page (note that BitNami’s Apache runs on port 8080 to avoid conflict with OS X’s own Apache instance):

As mentioned above, the BitNami installer doesn’t install all dependancies and KnowledgeTree notifies you of this on the Administrator’s dashboard:

And the BitNami stack’s PHP Info:
