Hi,

In my "what about" emails serie, here's the persistence one...

At the moment, there's a classical problem with most OS:
- create a document, start writing something for a couple of hours,
forget to save your document, power outage, blam, you lost all your
work. That sucks.

I think that's something that should be prevented -- the user should
not have to worry
about that. The "save" operation should still be there, but only as a
"checkpoint", an indication used for the versioning of the document;
by the same logic the undo should not be limited to one level... hop,
in one shot you offer persistence PLUS versioning and possibly even
automatic backup on another location, or synchronisation..

Sure, theses features will probably use lot of space. But:

- you don't really need theses features for *all* files on your system
(even if it could be neat!) : you really need that only for the user's
documents, so you won't use *that* much space
- anyway, if you just save the delta for each step (undo..) and save a
complete document for each "version" (save action), you won't use
*that* much space per document, and most documents aren't that big...
even for videos that should be doable...
- and after all, with current disk space, I really doubt we should
bother too much about that -- I think the proposed features are much
more important !

Now, the question (for me) is not "is it a good idea" but more, "how
the hell are we supposed to do it" :-)

First problem: do we want it to be "compatible" with existing software ?
-> I think it's highly unlikely to have a transparent compatibility,
you'd need modifications if only to call the API.. (but I'm open to
suggestions !)
-> I think it's not that much a problem -- we won't prevent current
unix apps to run anyway, it's just that étoilé apps will provides
something better
-> Ideally it should be easy for GNUstep apps to be adapted to this system !
-> Sure, not being compatible sucks, as it increase the entry level to
your system for applications... but on the other hand, if we just want
to clone KDE/OSX, I'm not sure the project is really worth the effort.
I think we need to propose *new* (and better) things.

Second problem: ok, it's nice to have such a "local" system.. but what
about exchanging information with other people ? I see two solutions:
-> have a "raw" export of your document if it's a standard (jpeg...),
without any metadata or versioning info...
-> have a "full" export of your document (in case you want to send it
to another étoilé's user)

I would like to hear your opinions about that idea :-)

Now, my proposal for the technical part: use a database (PostgreSQL). 
We could either store the files directly in the database, or store
them on the file system
in a special "storage area".

Using a database will let us easily have persistence, versioning,
scalability and it will be extremely easy to have meta data and do
research ... Saving the data to the database could just be saving
binary blobs (NSData) or possibly create separate databases for
handling documents... (using GDL2 + EOModeller)...

The other point of having only one storage area (using a database or
using multiple files on the file system) is that it will be really
handy for our documents and projects management; the files you'd "see"
in your project / folder will be references to the real data stored.
Why so ? to prevent multiple copies, allow multiple view on the same
data (David's shared/overlapping projects point).

Thoughts ?

-- 
Nicolas Roard
"Any sufficiently advanced technology is indistinguishable from magic."
  -Arthur C. Clarke

Reply via email to