Martin Cameron wrote:
>
> Hi David
>
> The outline that you give - of distributed data - is a great one. I have
> been thinking along the same lines for quite a while. However, the medium
> that I would use would be one more specifically designed for the task - a
> Mysql database, the program written in PHP and Apache acting as the
> go-between.
>
> Over Christmas, I have promised myself to design the tables for the
> database. Because I don't really understand all of the interactivity of the
> various relationships yet, that the biggest hurdle. Once I've come to terms
> with that, then we're away.
>
A couple of other thoughts from me....
First, a welcome to those new to the project. Any help is greatly
appreciated.
When I started this project, I was hoping to build a program that could
be used at least on my desktop and laptop boxen. This does involve a
bit of synchronization between two databases, as my desktop is not on a
dedicated connection and I want to take my laptop to the library to do
some research. I don't want to connect to the internet just to perform
this synchronization (I object very strongly to programs that require an
internet connection when they should work perfectly well as standalone
applications; check out my editorial on this in the OS Opinion
archives).
We've got some basic classes started in C++ in the CVS tree already, and
I'd rather not dump that entirely for a different language. Since I
program in C++ at work, and I know what can be done with it, I started
designing with this in mind.
On the database drivers, I was hoping to use the Berkeley DB
(http://www.sleepycat.com) for a couple of reasons - its small size and
the ability to store variable length records. While a smaller program
footprint should be a goal of any software project, I don't remember how
many times I've needed to store something in a database field that is
just a couple of characters longer than the field length. Plus, with
the type of data that we are going to store, especially when you
consider how many extra notes that we need to keep, this would be
unacceptable. With a variable-sized field, this restriction is
removed. My goal is to build a database access layer that will be able
to access records in either Berkeley DB or GEDCOM. This layer would be
built in such a way as to simplify the creation of other database access
classes for other database formats to simplify the database import
process. This can be done, but it has to be done right the first time.
For the user interface, there are a few considerations... Looking at my
own equipment, I've got a desktop box at home running Caldera with KDE
as my default desktop; my laptop has a _much_ smaller drive (200
Megabytes; yeah, it's older, but it's what I've got), that boots with
Tomsrtbt, and leaves the user at the command line. Like the database
access layer, we need to build in a screen functionality layer that will
enable the user to plugin modules for whatever screen library is in use,
be it curses, Qt, Motif or whatever. The "Gang Of Four" patterns book
"Design Patterns: Elements of Reusable Object-Oriented Software"
(http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0201633612&vm=)
has a discussion on how to do this.
Finally, we have a database schema already that I posted in April. It
is online at [http://genes.sourceforge.net/dbschema.html]. There was
some discussion about it on the mailing list after I posted it, but it
was more or less accepted as feasible.
Now, what needs to be done?
We need to build the database access and screen functionality layers so
we can get cracking.
Why hasn't it been done yet?
A lack of time and experience on my part in beginning a project like
this from scratch. I was hoping to have a prototype over the summer but
got caught up in my honeydo list ("honey, do this for me...") and a
complete home LAN rebuild after a couple systems died. I've got some
small updates to the GenDate class code already in CVS to upload, and it
will get there as soon as I get my home connection working reliably
again (we'll probably end up changing ISPs to top it all off). Like
Linus, I would rather have it done right the first time and not set
marketing deadlines (which would just be missed anyway).
Now, I have a question for the list...
Are there any listers who are experienced in designing and building the
two abstraction layers that I've described above?
--
Sean Lamb --- [EMAIL PROTECTED] Software Engineer
while( ) { s/$badcode/$goodcode/g; }
"A day without laughter is a day wasted." -- Groucho Marx
_______________________________________________
Genes-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/mailman/listinfo/genes-devel