FAQ
Basics
What is KeyLines?
KeyLines is a commercially licensed JavaScript Software Development Kit (SDK) for node-link diagrams.
Who makes it?
KeyLines is made by Cambridge Intelligence, a software company based in Cambridge, the UK's leading cluster for software and technology businesses.
Pricing
How much does it cost?
We need to understand your needs before quoting a price. Typically the sale is made up of
- A license for your developers to use the SDK
- An enterprise-wide license for your end-users
- Ongoing support and maintenance
- (Optional) Some development time if the component requires additional features necessary for your deployment
We'd love to make it simpler but honestly the price will depend on your needs. A large mission critical deployment across an organization supporting many different device types will cost more than a more limited deployment.
Please contact us for more information.
Why can't I just build it myself?
Of course, creating this kind of software is enjoyable and if that is what you like to do go ahead, we aren't stopping you!
Do bear in mind that this kind of software is harder than it looks. It will eat up your valuable development resources quickly, not to mention your testing resource once you factor in cross-browser and cross-device testing.
In the long run it will be quicker, easier & more cost-effective to buy-in the capability. That way you can concentrate on developing your core business code.
How can I evaluate it?
Firstly, we will show you a demonstration and answer any questions you may have. Following that we can offer an evaluation license for you or your developers to try out the component for a set period of time.
Open Source
Is this an Open Source project?
No. Don't get us wrong, we love the Open Source community and contribute back where we can, but this is a commercially licensed product. Like everyone else, we have to eat ;-)
Does it use any Open Source code inside it?
No. The KeyLines component has been written from scratch.
Isn't there an Open Source project I can use instead?
There are lots of good open source tools. The best are very good. Others are less developed.
Our advantage is that we offer great support for both old and new platforms under full commercial terms. Our terms include guaranteed levels of support, escrow arrangements, liabilities, change management processes, etc. And because we've invested in this project commercially, we aren't going to wander off to the next shiny new project and drop this one.
Academic/Free
Can I have an academic license?
As a small young company we unfortunately don't have the capacity to offer an academic licensing scheme at present. When we are bigger, we would very much like to offer academic licenses but we can't bear the costs right now.
Free for a good cause?
See above. We will review this policy later down the line.
Frameworks
Can I use this with jQuery / Dojo / Ext.js / MooTools / etc. ?
Yes.
KeyLines has no external dependencies and is a good JavaScript citizen: it does not extend any of the basic JavaScript types and encapsulates everything within its own namespace to avoid global name conflicts.
Does it run on J2EE/.NET/... ?
Yes.
KeyLines runs on top of any server platform - it is a pure client-side component.
API
What does the API look like?
The SDK has detailed documentation for every callable function and every event raised.
There are three main parts to the API:
- Functions
- About thirty for adding/removing/changing items on the visualization, view settings, etc.
- Events
- There are about twenty event types raised by the component as the user interacts with the visualization using the mouse, keyboard & touch.
- Wrapper
- Functions for loading the component
In addition there is a simple JSON format for loading data into and out of the component.
Can I see it?
Sorry but we'll need an NDA in place first. But here's a sample of one function to whet your appetite:
setProperties(items, useRegEx) | ||
| items | Array | An array of items whose properties are to be changed. |
| useRegEx | Boolean | Whether the ids are to be treated as regular expression strings. |
| Return Value | None | Not used |
setProperties is a powerful function for changing the properties of many items at once. Pass an array of items of the form {id: id, propertyName1: value1, propertyName2: value2 }. Items which match the id will then take the new values. It is not necessary to specify all the properties of the item: only specify the properties that you want to change. If you specify useRegEx = true, then the ids passed in are treated as regular expressions. This can be useful for global settings, for example to set the font size across the whole chart: chart.setProperties({id: '.', fs: 8}, true);
Regular expressions are always evaluated with the 'i' (case-insensitive) and 'm' (multi-line) modifiers set, and ids should be passed as _strings_ (not regular expression objects) | ||
How easy is it to learn?
The SDK has fifteen live demonstration projects that show how to use and customize the component.
Our existing customers have found it pretty quick to get up and running.
More
HTML5? Is it SVG or Canvas?
We use Canvas because we find it performs really well and is more flexible for animation work.
How well does it perform?
Pretty well in our opinion. We measure performance by frame rate - the number of animation frames per second - and we regularly stress-test the component to see how many items it can handle.
Performance obviously depends on the device you are using, the browser and the number of items being rendered. To give you some idea, on an average laptop we get around 12 frames a second for 2000 items (1000 nodes, 1000 links).
What about bandwidth?
There are two aspects to that - the size of the component, plus the data transfer across the wire.
The KeyLines components are tiny. The JavaScript version less than 150K, and the Flash file about 330K, most of which is fonts. And provided you set the cache headers correctly they'll only be downloaded the first time anyway.
The data format is designed to be very concise across the network too.
How customizable is KeyLines?
Every visual aspect can be customized - icons, colors, font sizes, background colors, etc.
In terms of behaviour the component raises events that developers can code to: events are raised for mouse and touch actions like dragging, hover, clicks and context menus.
