[Pharo-project] How to deliver real-time web and mobile applications?
Hi guys, this is a converstation starter to this genuine question: How to deliver real-time web and mobile applications? ...that can also smoothly work offline and online? I know, itâs annoyingly pretentious, but... (a) what else would make sense? and (b) sounds like the world will (see examples below) (c) what chances we have to achieve it if we donât even aim to it? So do we really have an alternative? ...continues here: http://sebastianconcept.com/brandIt/how-to-deliver-realtime-web-and-mobile-a... I really want to hear your opinion on this sebastian o/
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
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
Awesome vision Seba! It leaves me with the kind of unrealistic feeling that great ideas provoke :D 3 thoughts: 1. homogeneity sounds great but the tech future is heterogeneous (and not a little but in a Long Tail fashion!) 2. dynamic technologies already won. So we might try to take more advantage of this fact. You'll have VM's for every device available (V8, Dart and friends) 3. if doesn't have an impact on the experience, people are not even close to care about what tech are we using to provide it* How us nerds of all kinds are going to deal with this is not clear, but for anthropological and cognitive and economic reasons, this we do know: clients and consumers are not going to ask and pay for... 1. less collaboration 2. less connection (among people in their tribes and other audiences) 3. less device-diversity (for same experience) 4. less availability (of the software that gives them the experience) but quite the opposite. In case of doubt: observe how you, family and colleagues (and their teen children) consume the opportunity is right there for those who can deliver sebastian o/ *actually some of them will (innovators and some early adaptors), but only after they got really excited about the product or service done with it On Oct 28, 2012, at 10:02 AM, 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
Hi Sebastian--
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).
Naiad (Spoon's module system) does this for classes, methods, modules, and authors. http://netjam.org/naiad -C -- Craig Latta www.netjam.org/resume +31 6 2757 7177 + 1 510 396 5727
participants (5)
-
Craig Latta -
Herby VojÄÃk -
Sebastian Nozzi -
Sebastian Sastre -
sebastian@flowingconcept.com