CDF's primary rendering engine for charts is JFreeChart, and there are a lot of reasons for that:
- Pentaho supports it
- We have a very good level of technical interaction with it, allowing us to do drill through, etc
- By generating an image, we can use it in static reports, print it, etc
- JFreeChart is really, really good. Does it's job. Period.
- It's hard to interact with it. Being an image, all it can do is render image maps, so sometimes we have an hard time finding a particular value
- It's ugly.
The first point concerns me, though. Should be easy to read information out of the charts, and sometimes that's not the case. Sometimes we need interaction with the data at a level that a PNG file can't give us.
On a recent team Mozilla metrics team meeting where I was showing a dashboard our team developed, I did a test to measure the reaction to find out exactly how important this issue is. I showed them the new dashboard using standard jfreechart components and near the end of the meeting I quickly swapped to the open flash charts version of them. The result was worst than I expected..
- Oh, WOW, this looks awsome!It's undeniable. It has a great impact. Since I work on both sides - developing the framework AND doing actual implementations, instead of fighting it, I can try to build the tools in order to allow the best of both worlds.
- Hum... well, it's really the same thing, the information is identical
- I don't care! It's prettier. And look, there are popups with the numbers. I want this!
Working on a new charting engine for CDF has always been one of my objectives. After this meeting, it has become one of the short time objectives. This is a challenging task; Ideally, the framework developer part of me wants a layer that is independent of the rendering engine. That has a major problem - by doing so I'll probably have to settle with the least common denominator of all engine's functionalities, something that the other me - the one that has to implement each and every one of my client's requests - absolutely don't want to happen.
So I'll probably start by focusing on a good charting engine to pose as an alternative to jfreechart. Sure, there's support to open flash charts, but it's functionality is yet a bit limited. It just doesn't do what I want/need it to do.
I'm more inclined into one of this options (suggestions are welcome here):
Cya in Barcelona next week!