Interesting thoughts, but it reminds me of:

1. CouchDB. It is able to connect and synchronize two-way, master-master, and has implementation for server as well as for mobile, so, in a way, they are already there - you work, online of offline, on the same data.

But they have problems, when conflict occurs, someone must resolve it. CouchDB's way is to not accept one or the other, but creates 'confict' object and someone with enough authority must resolve it (automatically or by-hand).

2. Object databases. This is more smalltalkish, but smells of 'we already tried it and the world did not embrace'. In a sense, what you describe seems to me like a distributed object db. If this would work (and, for example, there would be something like CouchDB+CouchApps, but in Smalltalk, I'd be really glad). But I don't know, if it is feasible.

Herby

Sebastian Nozzi wrote:
Hello Sebastian,

[for the interesint part skip to *here*]

I also think that the collaboration platforms that offer more
"real-time" features will win. Even more if they can solve the problem
of not always being connected (on the other hand, this is happening
less and less). Although I think that there is still time, it is not
by much (Google Docs does not currently support offline-mode, though
they had that in the past. For some reason they cancelled the feature;
they also cancelled Wave - maybe it's too complex even for them!??!).

A good approach to making it work with and without connection would
seem to be to assume the worst: assume there is no connection. Model
all updates and sync as delayed and a-sync. And if you DO have
connection, the better :-)

I would go so far as to say that this is how Apple solves the problem
with iCloud and Core-Data. If you are interested in this subject, I
would recommend reading their documentation even if you don't code for
Apple platforms (I don't either, although I planned to). They are not
at the real-time modifications yet, although very close. For me it
WILL be one of their next moves against Google and the Web.

*here*

As for a "Smalltalk" way to solve this, one thing I would love to have
at some point is a framework for automatic (seamless)
data-synchronization. Only that it would not be "data" but "objects"
;-)

Something like that /could/ then be a core Pharo feature, if not a
KILLER feature.

Imagine having 2 related VMs (or unrelated, but with some related
object graph) in two parts of the world. One user changes one object
in the fist one, another changes another (or the same) object in the
second one. When they contact the cloud they synchronize automatically
(either peer-to-peer or to/from a trusted server). And I see the
changes happening automatically, without having to do a thing. Awesome
right? Now that "VM" (or object graph) could be Pharo, or a web-app in
Amber, why not...

If both are connected, then the changes occur immediately, and we
experience it in "real-time". If the connect at different points in
time, then the changes are delayed (delayed collaboration, or
synchronization).

I think the problem is rather complex and I am afraid that it's not
that easy to come up with a solution that is, on the one hand, easy
enough, and on the other hand flexible enough to accommodate for all
cases. Google Docs, or Apple iCloud, are "document-centric". Much
different is to deal with an object graph of any possible shape, I
think.

But there are much brighter minds in this list than mine, and I am
sure that some day one will come with this killer-framework and
Smalltalk will be, once again, at the forefront of innovation :-)

Best regards,

(also) Sebastian


Reply via email to