On Tuesday 12 December 2000 21:38, you wrote:
> Richard Taylor wrote:
>[snip: distributed database stuff]
>
> I like this data model.  By providing the means for the user to store
> the location of additional information, where it is available, but still
> allowing the the user to enter as much information as desired in the
> local database, we gain the best of both worlds.  There are a couple of
> ways we could implement this in the current schema...
>
>    - Add a table to hold URL references.  This new table could
>      consist of three fields: PersonID, URL, Notes.
>
>    - Define a special Event Type called URL with which to store
>      this information.  With this Event Type, the date would be
>      stored as 00/00/0000 and the program would not allow the
>      user to enter a date for this event.
>
> I'm partial to the second of these options, because on some of my lines,
> its likely that there would be several places on the internet that would
> have additional information (I'm currently researching a branch that
> connects to Oliver Wendell Holmes).  If the information is stored as an
> event with a zero date, it would sort to the top of the Event list, and
> be instantly seen as a reference to additional information, regardless
> of how much additional data I store on my own.

I think there are two subtly different aspects to this:

        - firstly, where there is information about someone we are interested in
           and we just want to link to that information. Why not put the URL in
           as a repository and enter a source record against an attribute on the
           person. It seams to me that a Web site is no different to a library it is 
           just another repository. We could even just be clever about parsing 
           repository names and turn them into links if they look like a URL. Then
           not change would be nedded to the DB at all.

        - secondly, where we actually want to link two databased together accross      
 
           the Internet. This would enable queries to run across many families if      
 
           they happened to overlap. Web page format is not sufficient for this to
           work. The return from accross the web would have to be in a machine
           readable form (something like XML) and the access to the remote site
           would need to be a remote procesure call (something like SOAP). When we
           are working on our own database no Internet connection happens but when
           we want to do a query that could take in information from another persons 
           database the Internet would be used automatically. There is of course lots
           of issues about letting user veto this, given appropriate user feedback
           etc. but that is all User Interface stuff.

> The only concern with this strategy is that we have no control over how
> the additional information is presented on the internet.  Do we just
> display the page in a browser for the user to peruse or try to display
> the information in Genes' native format?  Naturally, the browser would
> be easier to code, but if the database is in a standard format already
> (i.e. GEDCOM)...
>

In the first case you just display the linked page. In the second you expect 
formated data in return for you query.

> Whatever we decide for this, we need to get Genes to a version where it
> is usable first, then we can look at displaying foreign data in this
> way.
>

I agree. None of this would have a major affect on the DB structure. Better 
to have a basic working system and then evolve it. As long as the DB 
interface is clean.

> This brings up another problem that we've been trying to tackle at work,
> that of feature creep.  During development on a few projects, we've
> found that our users keep asking us to add "just this one little thing"
> to the programs we develop.  The problem this causes is that the simple
> two-day report suddenly becomes much larger in scope and is delivered
> much later (on the order of months) than originally anticipated.  What
> we're doing to combat this is to create a Project Requirements Document
> (PRD) for every project that we work on.
>
> The PRD spells out precisely what tools will be used, what features are
> required and what user interface elements will be added and/or updated
> for the project.  It also outlines the proposed implementation schedule,
> breaking the project down into installation phases, listing exactly
> which requirements will be implemented for each phase.  I should be able
> to get a basic .tex file on the site relatively soon (as well as one
> filled in for Genes itself) that we can start using as a guide...
>

I am not too sure about this in a volunteer project. In my experience people 
will work on the bit of the project that interests them. Feature creep is a 
problem when those doing the code are not those specifying the requirement. 
Have a plan sure. A simple list of major tasks would be OK at this point. 
People can be put themselves forward for leading on those tasks (the smaller 
the task the better). There is already something of that emerging:

        - DB structure
        - DB interface layer
        - Object Model Design and implementation
        - Support classes (Date etc.)
        - UI design
        - Report writing design

Targets are a tricky thing for free software developers. I don't know about 
you but I can only work on this type of stuff in the cracks between the rest 
of life (currently by other half is at the staff Xmas party!). 

I guess the upside is that we have all the time in the world to do it. No one 
is going to pull the plug on funding :-)


> > I am very glad to hear this. I was initially attracted to this effort
> > because you talked about Qt in some of the documentation, then I noticed
> > the Gnome screenshots and thought you had changed your mind. I have
> > nothing at all against Gnome (in fact I like it very much) I just happen
> > to use KDE. I also like the Qt way of doing things.
> >
> > I will go and read the design pattern that you mention.
> >
> > I wonder whether XEmacs has anything to teach us about decoupling widget
> > sets from code. It supports curses, athena and others. Just an idle
> > thought.
>
> I had originally thought of using Qt because I had the documentation for
> it and I had heard rumors at the time about a compact version for
> handheld devices (which has since become Qt Embedded).  The Toucan book
> presented the library in a way that I could easily comprehend what was
> going on in a program that used it.
>
> The GTK screenshots were produced by a program called Glade.  While this
> app allows the user to create screens quickly and produces pretty handy
> fill-in-the-blank code, I don't like the tight-coupling that this code
> would produce.  I would much rather build in an abstraction layer so it
> could be run with curses or any windowing library.  I'll check out the
> XEmacs code to see what we can steal from it...
>

I have had a peek at how XEmacs does it and it is horible. A better model is 
abiword. It appears there is three basic approaches to the problem:

        - write your own widget set and framework and make that portable accross all 
           platforms. This is the Netscape (Mozilla) ways.

        - write an abstraction layer for the framework and use the native widgets      
 
           where possible. This the abiword way. It does mean that you don't
           integrate well into the native environments well though.

        - write the data model and as much of the raw processing in a GUI 
           independent way and then independantly write the GUI for each 
           target platform. 

Personnally I prefer that third option. I like my applications to integrate 
tightly into the GUI I am using. I would like Bonobo support in GNOME, KParts 
support in KDE and OLE support in MS Windows. Sometimes this is a pain 
because the majority of the application is the GUI but for Genes I am not 
sure this is the case. I think the most work is in the Object Model, report 
engine and the database code. Most of the GUI is just dialogs and 
presentation.

Ah well time to pick of the other half from the party.

It is late here so forgive me if I have rambled a bit.

Richard

> --
> 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

_______________________________________________
Genes-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/mailman/listinfo/genes-devel

Reply via email to