I have been working pretty hard to get a handle on all the changes that
need to be made in order to move gegl to the structure that you and I
have (mostly) agreed on.
There are many changes that run deep into gegl. Changes that require
rethinking of several subsystems at the same time. At some point, it
become easier to start nearly from scratch. I think gegl has reached
that point.
I am concerned that you may think this idea is wacky (read: stupid). If
so, you may never have reached this sentance before you stopped reading.
If you have made it this far, please read a little further. I will go
into detail about why I think this is a good plan.
It was a mistake to not design tiling, caching, and threading into the
system from the start. Adding these systems require changes to nearly
every part of gegl.
It was also a mistake to assume that only one color model would exsist
in the tree at any one time. This also requires changes in many parts
of gegl.
Color conversion is a hard problem. Doing it right requires designing
the system for it. While some consideration in this direction was made.
There was a lack of research into the topic that caused the
considerations to be insufficient. My last point about only one color
model is an example of this. It is my belief that adding Color
conversion after the fact would require significant changes to gegl.
There are several significant changes to the class structure of gegl
that even you suggest is "the right idea." Changing the class structure
this much is equivlent to redesigning whole subsystems of gegl.
I do not think that gegl should be thrown out entirely. There are some
good ideas in there that can and should be salvaged. If fact I don't
really think of it as starting over per say, because you are not
starting from ground zero. There is a lot I have learned from gegl and
I think there is a lot I can continue to learn. It is just that I feel
that rewriting gegl from near-scratch would be easier than putting in
all the changes that need to be added after the fact.
This is all motivated by my frustration. There are several things on
the todo list that interest me. Tiling, cacheing, threading, color
conversion are all topics that I have been spending all my free time and
resources researching. I even think I have some good ideas about how to
do it. However, once I start to figure out how to put those ideas into
effect in gegl, I end up pounding my head as I realize that there are
huge parts I need to change. What happens is that I have to understand
the current system, in order to change things. However, every time I
look at a part of the system, I discover that there is yet another chunk
that needs to be thrown out before I can really put in place these major
subsystem in a way I feel meets the needs of The GIMP.
While it is difficult to ask people to throw away so much, I really want
this to be done right the first time. It needs to be done right so that
Gimp 2.0 doesn't suffer under the design flaws of gegl (after all,
suffering under design flaws the _the_ reason why I am told that Gimp
2.0 was to start from scratch).
I am already doing what I can to further this goal. I am posting my
design on this list as soon as I come up with it. Asking for your input
and revising and revising and revising. I am doing lots of research. I
am looking at gegl as it is, and gegl as it is wanted to be, and
figuring out what things need to change.
I won't feel ready to write a line of shiny new gegl until I feel that
enough of the design is in place. Enough design will be in place when
everyone here (Which, from what I have figured out, means you and me
Calvin) is satisfied with how things are to be done at a fairly fine
grained level, and that we have determined which systems can be
implemented that don't depend on other systems that are not in place yet.
I also feel that no decsion should be made without discussion, so every
idea I have about how I think things should be done, will be posted to
this list, with the expectation that it will be criticized, and thus
improved.
Others may have noticed that I write a lot. I will continue to write a
lot. I have a lot of ideas about the best design approch. I will put
these out in the open and people will criticize. This letter is one of
these ideas.
please criticize constructivly.
--
Dan