Today is Dia's 1 year birthday. The oldest mail in my Dia mailbox is from
April 28 1998. Actually it might be a week or two older than that, but
thats the only date i have.
Let me talk a little bit about the history of Dia. Dia was born out of
years of frustration doing diagrams in FrameMaker for papers and
lab-reports at the university.
It started small, like all other projects, but i got some kind of canvas
with object runinng quite quick. I showed it to some friends of mine, and
one of them (hallon) showed it to another friend, who came to see me and
told me it was very cool and stuff, too bad it won't be finished. I
immediately recognized this as true. That is the normal way of spare time
project, you start it, code away until it's half-usable, and then forget
about it.
But this one was different. I got a bit irritated that he could say so,
and i would accept it. So i decided to finish this project. So i kept
working on it. A looong time... And see where that has gotten it!
I feel the design of Dia is quite good. I did do the right thing in the
beginning by scrapping the first version i did and do a complete rewrite.
Dia's design is a bit minimalistic. It is designed to be finished. No
grand ideas and overly complex abstractions. There are of course
abstractions, like the renderer and the object system, but they are quite
small and to the point. I decided from the begining to use ANSI C, both
because that is what i know absolutely best, and because of portability
reasons. The 'object-oriented' design of the canvas objects was given,
that is a text-book example of when to use subclassing, only i implemented
it in C.
Now i feel quite satisfied with Dia's architecture. There are only one
real thing that i would like it to have before it could be called 1.0
(except fine-tuning, various features and new objects), and that is UNDO
capabilities. This would need quite a lot of changes, as all modifications
of diagrams need to pass thorough a central point, and the modification,
with data needed to revert them, needs to be stored on a stack. This is
quite hard, and might lead to changes in the object system. I haven't
though much about this, as i haven't done this before, and it's quite a
lot of work... We'll see if we can do it...
At the moment i don't work much on Dia. Almost nothing in fact. If it
weren't for people like Alejandro, Lars and other contributors there would
be no updates at all. My inspiration and coding efficiency varies a lot
over time, and right now i don't seem to be able to find any energy to do
stuff. I hope i'll do better soon, but i count on you guys till then!
Soo, you read this far eh? All my rambling and all. Thats no good, You
should be coding cool new objects and features, not reading boring email!
/ Alex
Ps. If we have any users that actually LIKE writing, they might wanna do
some kind of user-documentation. Might be good for new users...