Code: Select all
************************
* JFREECHART ROADMAP *
************************
Written by David Gilbert, JFreeChart Project Leader.
14 August 2003
INTRODUCTION
------------
An increasing number of developers are asking me when JFreeChart 1.0 will be
released. In the open source tradition, the definitive answer is, of course,
WHEN IT IS READY! But although that answer is accurate, it isn't very
helpful.
So, to be a little more informative, I've made the following notes of the
major items that I want to complete before JFreeChart is labelled with the
magical "1.0" version number. This list is not set in concrete, but is
intended to give an indication of the work remaining to be done.
I welcome any feedback on the task list, particularly regarding anything that
I've left off.
A NOTE ON API CHANGES
---------------------
As I've said many times before, once version 1.0 is released, the JFreeChart
API will be frozen. That, I'm sure, is what is motivating people to ask the
"when" question, particularly since the API changes have been significant over
the last few months (to recap, the horizontal/vertical class split was
eliminated, the item labelling mechanism changed, and support for multiple
axes was added, among other things).
Although there WILL be further API changes as the tasks outlined below are
completed, I don't foresee anything on the scale of what has been completed
recently. I will @deprecate where possible, and document otherwise. I accept
that the API changes haven't been well documented in past releases, but please
note that I'm under the same time pressures as everyone else...so no more hate
mail please!
MAJOR TASKS
-----------
[1] Thread synchronisation
It should be possible to update a dataset in one thread, while one or more
charts are being redrawn in another thread. Note that this is not as simple
as putting 'synchronised' keywords here and there - the chart makes multiple
calls to the dataset while drawing, and the dataset needs to be 'locked' from
updates for the duration of all the calls. Ideally, datasets should be able
to queue updates while they are locked...I'm not sure how difficult that will
be to implement though.
[2] Serialisation to/from XML
Provide read and write capability, in XML format, for charts and datasets.
[3] Chart Property Editors
The existing property editors have had little revision since version 0.5.6. I
need to ensure that all aspects of the charts can be customised via the
property editors.
[4] Logarithmic Axes
Some alternative implementations for the LogarithmicAxis class have been
proposed. I agree that there are some changes required - I haven't looked at
the detail yet, but I will.
[5] Radar plots
Add support for radar plots. These can most likely be made to work with the
existing CategoryDataset.
[6] Enhance Chart Legends
I plan to convert the legend to a ChartTitle (so that it can be displayed
anywhere that a title can be displayed), plus provide a mechanism for multiple
legends per chart (to cover multiple axes and datasets).
[7] Pie chart labelling enhancements
Add smarter code for generating pie chart labels avoiding overlapping.
[8] ContourPlot
Tidy up the ContourPlot and ContourDataset code, perhaps getting closer
integration with the XYPlot class.
[9] Eliminate MeterDataset
The MeterDataset interface returns a single value plus information about the
"normal", "warning" and "critical" ranges. The ranges relate to presentation,
and should be moved to the chart/plot classes. MeterDataset can then be
replaced by ValueDataset.
[10] Item Labels
A lot of changes have been made to the code for generating and displaying item
labels. There is some work remaining to tidy up this code.
[11] Domain and Range Markers
Two enhancements are required. First, the ability to highlight ranges in
addition to the current point values. Second, an option to display markers
'in front' or 'behind' the chart data items.
VERSION 2.0
-----------
The following will not make the 1.0 release:
[1] 3D charts
JFreeChart doesn't support "real" 3D charts, only some 3D effects on 2D
charts. It is a frequent request, but this is such a big area that I have
decided to focus on getting the 2D charts right first.
UNDECIDED
---------
I haven't decided what to do with the following tasks yet...please feel free
to comment:
[1] KeyPlot class
The CategoryPlot class uses keys (categories) for the domain axis and values
for the range axis. A new plot class could generalise this to allow:
- keys for both axes;
- values for the domain axis and keys for the range axis;
In effect, this is what the existing symbolic charts (based on the XYPlot
class) do...but the implementation could be cleaner if it is done directly
rather than tacking on symbols to numerical values (which is a motivation for
doing this before 1.0).
[2] Specialised GanttPlot and GanttDataset
The existing Gantt chart has limitations that mostly arise from the use of the
CategoryDataset interface. I think the best long term approach for the Gantt
charts will be to write a purpose-built dataset and plot class for these
charts. This would be mostly new code and quite a big task (which is a
motivation for leaving this out of 1.0).
THE SCHEDULE
------------
You will notice that I haven't attached a date schedule to these tasks. That
is because my ability to forecast:
(a) how much work is involved in each task;
(b) how much time I will be able to spend on development in the coming
months;
(c) how much help I will receive from other developers;
...is so limited that any schedule would be a work of fiction. That said,
my guess is that a 1.0 release will occur in the first half of 2004.