Graph Visualization Technology Choice (This page is more concerned with the technical choices pertaining to the project, it is probably not of much interest to non technical team members)

Spoiler Alert: I will be suggesting we use Sigma.js , due to its responsiveness , integrated webGL rendering, and ease of use and easy of inter-operability with other approaches (and of course Daniele Guido being at CVCE).

For the BLIZAAR project there is a consensus on using web based technologies. In terms of general visualization, libraries such as d3.js and Weavehave been discussed.

For the front end graph visualization, using pure d3.js has some disadvantages, particularly as once graphs become too large for SVG rendering, for example much extra development is required to duplicate much of the SVG style interaction with graph elements.

In terms of speed of rendering SVG is slowest , canvas is faster and WebGL is fastest. However the benefits to using WebGL can sometimes only be gained with a large change of architecture. Simple transformations like panning and zooming may be much quicker, but more complex operations that require regular updates from the CPU can mean that a WebGL implementation is not much faster than a canvas one (if at all). For a task such as graph layout, the GPU would certainly improves speeds however getting the calculation there is still difficult. There is no CUDA equivalent of WebGL at the moment. WebCL is still not ready, a may not be supported by many browsers. The most viable option is compute shaders, but they are not part of the implemented WebGL specification yet. General purpose GPU approaches exist, but due to their inflexibility and difficulty of implementation are not suitable for our purposes.

Sigma.js uses WebGL for rendering (when available) and supports all of the interesting functionalities that make SVG such a benefit, and as such would be an excellent choice as a starting point for graph viz at the front end. We can extend the functionality offered in terms of layout and analytics etc by providing access to other libraries via the back-end.

If you are interested in what is involved in using canvas , svg and webgl with d3.js directly, have a look at the demo I have placed in the GIT repository at