|
|
Items in black have already been written, items in yellow I'm working on now, items in red are for the months to come.
 |
Open documents using human language
phrases |
Using cutting edge tools
and techniques from the Linguistics community, Storage allows document
to be accessed using association with object attributes. Association is
the object reference system understood to be at work in human/human
conversation. We think of objects similarly to "My roommate's desk" not
"earth.us.stanford.dorm5.room109.desk2", and it makes sense to enable
access in this manner rather than the conventional filesystem hierarchy.
Phrases are processed and a list of results fetched in real-time (about
a quarter of a second) allowing fast iteration.
Examples: Movies that were directed
by spielberg, web pages where bgcolor is "#324575", messages sent to desktop-devel@gnome.org.
|
Network Transparent
|

|
Searching, access, file
change notification etc are all network transparent because the
information store is accessed using SQL. Because the query set is
restricted to standard SQL99, enterprise grade SQL servers such as
Oracle could be used, providing a central information store for
thousands of users. Using
ZeroConf (aka Apple's Rendezvous) network-local information stores can
be automatically detected and used. Thus Storage addresses not only
centrally managed setups, but ad-hoc workgroup situations too [v2/3].
|
 |
Backward-Compatible with Existing
Apps
|
Storage provides a
GnomeVFS compatibility layer so existing applications continue to work.
Translators decompose incoming "black box" files into a structured
format when files are copied into the store (or saved from an older
app), and build flat files again when they are copied out. If a
translator is not available the file can be stored as a binary chunk in
the information store, but many file formats will be supported just
through the XML translator. Any format/file can be exported as XML,
though of course it may not be readable by other applications at this
point ;-)
|
Simple API
|
 |
libstorage's native API
provides "Item" GObject's with a simple "getter/putter" interface,
transactions, and child objects. Only two type of Items are available: a
regular attribute based item (good for storing XML and similar formats)
and an optimized binary item (good for storing large streams of binary
data). Coupled with an improved
component system, Storage items operate as full-fledged objects with
orthogonal persistence [v4 or later].
|

|
Storage objects are "alive", not
inert buffers
|
| Change notification is provided on a
per-Object basis allowing well written programs to perform minimal
updates in response to other applications modifying the same file [v2]. Combined with transaction support this
allows multiple applications (even by different authors or across the
network) to access the same document at once, being aware of each other
and where the other user(s) are working/looking [v2]. Data is constantly written to the objects
by applications, and saving is replaced by the ability to mark
points in the document history of particular interest [v3]. |
| He who ignores history is doomed to
repeat it |

|
A simple revision system allows users
to drag a slider and quickly review their documents history from
conception to the current date, the document unfolding as they drag.
Logging of changes and actions on a desktop-wide level also allows the
association function to be more context aware (for example, enabling
queries like "open the spreadsheets I was editing last tuesday before I
started playing quake" or "open the paper I added several paragraphs to
yesterday") [v3]. P.S. Dear GNOME Hackers, in case you are getting nervous now... consider this: if Bowie said "don't jump off the cliff" would you jump just because he told you not to? ;-)
|

|
A nutritious part of this
complete desktop
|
Storage was not designed
in a vacuum, but is a chunk of a greater design for a revised desktop
system. We hope to assemble a system where (among other things) the
barrier between "application" and "desktop" is indiscernable. Documents
are 1st class entities in this design model. Rather than having
applications the desktop is extended with capabilities that allow
editing, viewing and creation of new types of documents, or add new
features and abilities to existing document editing. Storage
facilitates this goal by providing storage objects that are designed to
be shared by multiple code paths simultaneously, and by providing
documents as live objects.
|
| Speaks your language |

|
| Because information is accessed by content rather than by "location",
items installed by the desktop or operating system can be localized. No more "Music" or "Desktop"
folders, or funny hacks with .desktop files that cause item's names in the file browser to not
match their path when you go into them
|
|