[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipse-incubator-e4-dev]	E4	towards	generic	connection	management	(was: e4	beyond the ongoing UI conversations...)
 | 
Thanks John for the excellent background.
One thought I had that was sparked by your posting is that it might be 
appropriate to build in support for remoting and caching for multiple 
layers, so that applications could use the appropriate mechanisms given 
their requirements.  So remoting and caching could be at
application (UI model) -> remote services, explicit (i.e. user driven) 
synchronization (e.g. CVS) or auto sync (e.g. cola)
workbench -> remote services? or others
workspace/resources -> EFS+
OS/file system -> NFS (or others, of course)
Everything above the file system can/would use a common connection 
management and hopefully some common APIs for remoting, remote services, 
and caching.
Scott
John Arthorne wrote:
Going back further, we had a different model again from what 
eventually appeared in Eclipse 1.0. In an earlier prototype, resources 
in the workspace were actually stubs for remote resources, with a UUID 
stored in the resource tree that could be used to fetch remote 
contents. The content of the remote resource would be lazily cached 
locally as needed. There are vestiges of this prototype in the current 
resource API, with methods such as IResource#isLocal/setLocal.  
As Kevin points out, one of the disadvantages of this model at the 
time was that it didn't interact well with external tools, since at 
any given time the local resource tree on disk could be empty or only 
semi-populated, and the external tools lacked the necessary hooks to 
invoke the IResource#setLocal call required to make the file or 
sub-tree appear in the local file system. However, there were also 
other disadvantages of this model. An obvious problem was lack of 
offline support. When you became unplugged from the network you could 
only work with the sub-set of resources already local. Also, by making 
local replication transparent there was no natural workflow for 
handling synchronization conflicts when multiple parties edited their 
local replicas of the remote resource concurrently. A final 
disadvantage was performance. The sparse local replica model worked 
great for browsing a large tree and selecting individual files to 
edit. However, when it came to "batch-processing" tasks that needed to 
traverse the entire tree, the entire workspace ended up being sucked 
down to the client anyway. In practice, the first time the user did a 
full build, or a workspace-level search, the entire remote tree had to 
be made local.
For these reasons we switched to a full replication model where the 
entire tree was always local, and the user performed explicit 
synchronization operations to synchronize with the remote resources. 
 This method supports offline editing well, has good performance 
characteristics, and has a clear model for handling and merging 
conflicting changes.  This model and some other remote development 
models are summed up here: 
http://www.eclipse.org/eclipse/platform-core/documents/2.0/remote-development.html. 
I still think this local replication model is the best answer for a 
large number of development scenarios, and I wouldn't want to see it 
lost or compromised in e4. However, there are clearly several 
categories of development that are not well served this model, 
particularly in the areas of device development and mainframe 
development.  Here is one possible approach to addressing this in e4: 
rather than having a local workspace tree with resource stubs 
representing remote files, the entire workspace tree would reside on 
the remote system. An Eclipse instance on the remote system would be 
running a large portion of the traditional Eclipse "stack". Both the 
workspace tree and the UI model would live in this remote instance. 
The UI model would be replicated to the local workstation where it 
would be rendered either in a traditional-looking client with native 
widgets, or a browser (think X Windows).
My perhaps naive thinking is that it's much less expensive to 
replicate the UI model than the workspace, since the UI is typically 
only showing a small fraction of the workspace at any time. Tasks 
requiring intensive physical resource access such as search and build 
would run on the same remote machine as the workspace.  This would 
largely avoid having to reinvent the workspace and the massive 
eco-system of existing applications built on top of it.  It's true 
that since Eclipse has "taken over the world" the problem of 
integration with third party tools is not so great... the main 
challenge now is how e4 can interoperate with the "world" of plugins 
and apps built on the Eclipse 1.0 model.
John
*Kevin McGuire/Ottawa/IBM@IBMCA*
Sent by: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
08/24/2008 12:22 PM
Please respond to
E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
	
To
	E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
cc
	
Subject
	Re: [eclipse-incubator-e4-dev] E4 towards        generic       
 connection        management        (was: e4        beyond the 
ongoing UI conversations...)
	
Thanks Brian!
Stepping back a minute:
An initial fundamental decision we made way-back-when on Eclipse was 
that we'd be file system based.  It seemed the best way to ensure we 
could interoperate with non-Eclipse based applications, with the file 
system being the one thing in common.
Personally, I'm not sure that's so compelling anymore.  At the time, 
it was a world where there'd be a small number of Eclipse plugins 
trying to work with a huge amount of pre-existing applications.  The 
only way to work together is via the file system. So it was probably 
the right decision then.  But now that Eclipse has taken over the 
world <grin>, I don't think the scenarios still match.
Today the interesting scenarios are around data sharing, data syncing, 
remote access, remote computation, remote services ... that's the 
current pain point of interoperability.  I'm talking more than just 
common shared components for the transports and services (obviously an 
important pre-requisite), but rather a deep integration with what it 
means to be a resource.  Things like: you can't assume they're local, 
you can have a tremendous number of them, maybe each IResource has 
both a local storage and a remote URI, treating local storage as a 
cache, keeping track of sync state, transparently accessing the 
transports...
So take the Eclipse 1.0 thinking and replace "file system" with 
"network".  Maybe *this* is what the E4 platform needs to be.
Easier said then done though. The existing code is tied to the a file 
system based resource model with many subtle assumptions which 
complicate even more the problem of backwards compatibility of API and 
behaviour.
Nonetheless, I do believe that a rethinking of our resource model, 
with the view to remote data interop, could be the fundamental shift 
for E4 and is probably what we need to do to have any kind of forward 
thinking desktop presence.  It is however a ton of work (Jeff McAffer 
and John Arthorne will I'm sure attest to that).
Regards,
Kevin
*brian.fitzpatrick@xxxxxxxxxx*
Sent by: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
08/22/2008 11:42 AM
Please respond to
E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
	
To
	E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
cc
	
Subject
	Re: [eclipse-incubator-e4-dev] E4 towards generic        connection   
     management        (was: e4 beyond the ongoing UI conversations...)
	
Hey Kevin!
Those are definitely some cool ideas!
I think using URIs to map to remote resources (or local ones even) 
would give us a ton of flexibility, but would definitely present some 
interesting challenges. And the whole idea of remote servers and 
resources playing into a common UI for users (or multiple common UIs, 
all with a similar look and feel) would fit into our discussions nicely.
A "cloud" of Eclipse plug-ins and resources all accessible through a 
common UI. What a concept. :)
--Fitz
Brian Fitzpatrick
Eclipse Data Tools Platform PMC Chair
Eclipse Data Tools Platform Connectivity Team Lead
Staff Software Engineer, Sybase, Inc.
*Kevin McGuire <Kevin_McGuire@xxxxxxxxxx>*
Sent by: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
08/22/2008 09:31 AM
Please respond to
E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
	
To
	E4 developer list <eclipse-incubator-e4-dev@xxxxxxxxxxx>
cc
	
Subject
	Re: [eclipse-incubator-e4-dev] E4 towards generic connection       
 management        (was: e4 beyond the ongoing UI conversations...)
	
Hi gang,
> I fully agree that in a world where the "Network" is becoming more
> important than the local client, a generic approach for the user to
> manage connections of all kinds will simplify user experience
> (and help reducing code duplication and bloat).
About a year ago I was looking into an area they were terming "WebOS". 
 The notion was that for rich applications, you need some kind of 
lightweight platform pre-installed on the desktop from which you could 
serve up applications written against it (presumably in JS or PHP or 
whatever).  One platform service was of course a communication 
framework, since generally some or all of your data is going to be on 
the server. This included synchronization as a first class platform 
service so you can treat the local storage as a cache or offline 
access. There were a number of players in this area (approx. 4-5 
companies).  I don't the current state.
At the time, my reaction was, "Hmm, we could be one of those!". We 
essentially have all the components they talked about, though not 
integrated to the same degree, and with p2 we have a first class 
provisioning route.
I view this issue as being intimately tied to the flexible resource 
model topic. For real data mobility, instead of assuming that 
resources map to files as we do now, we should assume they map to 
URIs, served up from anywhere (e.g. a MySQL database), with local 
proxies providing anything from summary information (name, size), 
enough say for navigation, to the full contents for editing purposes. 
Current desktop services such as Search then need to be changed since 
the number of resource can be huge, and searchable content could be 
remote.
So this is a very different notion of "the platform" than what we have 
now. A pretty cool one though!
There a more thoughts squirreled away in my brain somewhere ...
Regards,
Kevin "Not Just About Pretty UIs" 
McGuire_______________________________________________
eclipse-incubator-e4-dev mailing list
eclipse-incubator-e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
_______________________________________________
eclipse-incubator-e4-dev mailing list
eclipse-incubator-e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
_______________________________________________
eclipse-incubator-e4-dev mailing list
eclipse-incubator-e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
------------------------------------------------------------------------
_______________________________________________
eclipse-incubator-e4-dev mailing list
eclipse-incubator-e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev