[gnome-db] Re: GRAND MASTER PLAN
- From: Dru <andru treshna com>
- To: Linas Vepstas <linas linas org>
- Cc: msevior physics unimelb edu au, gnome-db-list gnome org, Charles Goodwin <charlie xwt org>, gnucash-devel gnucash org, gnome-office-list gnome org
- Subject: [gnome-db] Re: GRAND MASTER PLAN
- Date: Sat, 13 Mar 2004 13:28:58 +1300
Linas Vepstas wrote:
On Mon, Mar 08, 2004 at 01:43:44AM +1300, Dru was heard to remark:
Overall vision:
A complete database toolkit set that allow the easy rapid application
development of custom db appliations for gnome. Also a collection of
common business applications like accounting, payroll, inventory etc.
Yes. Although I already have a problem with terminology.
"database" is the wrong word, as it implies sql. Its broader
than that. I want two abilities:
1) the ability to take data, be it from sql, an xml file, or
something ephemeral that came over a socket, and convert
it into a set of C-language objects that can be manipulated
and searched and operated on. (Note that a possible data
source is a gtkentry widget...)
2) the ability to suck data out of the c-language objects, and
shove that data back to an sql database, or to an xml file
or to a socket, or into a gtk widget (for display) or into
an abiword document (for display).
Alright i understand. I dont think gnome-db or me has anything close to
doing this.
And i think the only thing i have seen close to it is the code you
showed me.
The reason I like C objects is that as a programmer, I can
do all the whiz-bang application-specific coding easily when
I have plain-old c objects to work with. As a lazy application
programmer, its a real hassle to get the data into and out of
xml, sql, etc. These data formats are "inaccessible". So my
vision for the toolkit is something that converts these
"inaccessible" data sources/sinks into plain-old c objects
that I can easily work with.
I know what you mean. i stopped trying to populate c style structures
from db's, sockets etc a while ago. I didn't like having to write new c
structures for every table, and a couple supporting functions for
mapping values in structure to values in db.
Forms creation.
I think we all seem pretty confident in glade here. thats solved.
Uhh, forms and reports are two sides of the same coin. Remember
my 'bugzilla' analogy: The bugzilla "report" for bug 123 is also
a "form" that allows the user to modify bug 123. I'd like to
be able to embed widgets into abiword docs, and use libglade-like
api's to find & work with those widgets.
i see this more as custom widgets than reports.
Data abstraction layer.
This layer that deals with dynamic data sets. Doing the write backs and
saves of data. There is libgda, bonddb, gnueappserver, qof. Dont touch
gnueappserver, i wrote it and it suxs. I dont think we can look at
working together on this one until we sort out the low level abstraction
db. How far are you down the track for qof linas?
Not that far. I really need to prototype the conversion of my
'generic C objects' to/from SQL in order to confidently say
"this approach works". I was going to do that last christmas...
I have all the pieces ready and checked into cvs, I have the
master plan in my head, but I have to assemble the damn thing.
If I had this prototype, then I would be mentally prepared to
talk about things like 'triggers' which I know that you use.
Mentally, I'm not there yet, not enabled for input.
I see the difficult bit is manging invidiual tables, and when you have a
source of a select statement or view, do you create another c structure
to use it. Its amazing how a programme langauge that hasnt changed in
decades evolves so much over the years.
Reporting
reporting engine, what is gnomedbs requirements? Linas, maybe a gtk
output engine or a xml to gladexml converter, or use the existing html
Reporting is on the same coin as forms, its just on the other side.
A "form" flows data from somewhere else to my application.
A "report" flows data from my application to somewhere else.
This is THE "high level" abstraction layer/API, to me.
My app codes to this high-level API. It then picks a particular
driver. There is one driver that will push data into an abiword
doc. There is another driver that will push data into a pane
of gtk widgets. There is a third driver that will push data
into xml. There is a fourth driver that will pushd data into
sql. A fifth driver will push data into ldap. A sixth driver
builds a web page and pushes it out to Apache. Etc.
(My "DWI" project was my attempt to create this high-level API.
I currently have drivers for glade/gtk and sql.)
Its possible that gnomedb and/or libmergeant has this kind of
ability, but if so, I haven't figured it out yet. Its not
clear how to create new drivers.
Kindaof in a lose sense. no c structures, no apache support. you'd have
to write a wrapper code
from GdaDataModel to c strctures that worked majically. You'd also have
to write wrappers around gnomedb widgets so you can paint/read a
collection of widgets at the same time. You'd need have another
structure that you attache to the widgets and DataModel (or use hash lookups
by some unique charatisitic) that stores your publishing and state
information.
Its a different approach to gnome-db, and libmergeant is proberly not as
mature/well developed yet as you'd hoped. It saves you a lot of time
for individual drivers but its not an easy path to make it stick.
Report Designer.
None of have anything here (expect gnue). Its needed. I was thinking
orginally using openoffice or abiword to design reports but i really
havn't started looking at this at any detail. Any suggestions on how we
are going to achive this? Does this sound feasible?
I've been trying to explain to Martin Sevior what my vision for abi
is, and I think he almost gets it. I thnk once he gets it, it will be
easy. I want abi to have a libglade-like interface. The report
designer creates a named text block, and my program can then change
the text/color/font of the named text block. I can't beleive this
is going to be hard.
Tell him to go use gnucash. I was thinking a 2 phase process here with
lots of xml conversion. (like how bond does it now), but that costs
resources a lot if its done on the fly.
---
Note that the above should be called the "abiword report designer".
The "gtk report designer" is still glade. The "xml report designer"
is presumably some hand-written DTD's or xml schemas or something.
Some types of reports don't need report designers.
The point again: the "report" is really just a pushing out of data
from my app to some other place.
Finincial Objects.
Excellent point. I have my heart set on "workflow objects", which
deal with users and seeing which users can make modifications to
which objects at what point in time. e.g. only a person of type
"manager" can approve of "chair purchase". This might sound
wildly off-topic, but its not: The point is that these "transactions"
should be easy to build on top of the data abstraction layer.
If it is hard to build these types of objects on the data abstraction
layer, then we will have failed with the data abstraction layer.
Do you do double entry book keeping when you store the records? Maybe
if we both use double entry book entry then have naming conventions or
mapping of accounts.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]