Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipse-incubator-e4-dev] Initial discussion on the 'modelled' workbench UI

I expect you can count on lots of help.  The idea of updating a platform in
which models are so plentiful without leveraging a common metamodel (i.e.
Ecore) seems incredible, to me.  I hope EMF and related technologies in
Modeling are seriously considered for use in e4.

Thanks for bringing it up, Tom.

Best Regards,
Rich

  


On 4/3/08 9:00 AM, "Ed Merks" <merks@xxxxxxxxxx> wrote:

> Tom,
> 
> Of course I would be more than happy to help with experiments!  Using EMF
> models would be a boon because they would directly enable a rapidly growing
> stack of modeling technology.   Much of what needs to be built here is
> incredibly complex, though it might not appear so on the surface, and we
> have a diverse established community with a wealth of experience in this
> domain.  So while I'm sure the obvious temptation will be to say  "we want
> something much simpler than EMF because we really don't need all that
> complexity", the end result, in the far distant future, once all the hard
> problems are understood and solved, will inevitably to be something pretty
> much like EMF.   I've been around the block a few times and have seen the
> predictable patterns that lead toward the same inevitable conclusions each
> time.  For example, is SDO really simpler than Ecore, or just different?
> 
> We do have a working prototype of a binary serializer:
> 
>    https://bugs.eclipse.org/bugs/show_bug.cgi?id=206267
> 
> I've not had time to properly integrate it (and to commit to the long term
> support that's expected from Eclipse's projects).
> 
> 
> Ed Merks/Toronto/IBM@IBMCA
> mailto: merks@xxxxxxxxxx
> 905-413-3265  (t/l 313)
> 
> 
> 
> 
>                  
>              Tom Schindl
>              <tom.schindl@best
>              solution.at>                                               To
>              Sent by:                  E4 developer list
>              eclipse-incubator         <eclipse-incubator-e4-dev@eclipse.o
>              -e4-dev-bounces@e         rg>
>              clipse.org                                                 cc
>                  
>                                                                    Subject
>              04/03/2008 03:34          Re: [eclipse-incubator-e4-dev]
>              AM                        Initial discussion on the
>                                        'modelled'  workbench UI
>                  
>              Please respond to
>              E4 developer list
>              <eclipse-incubato
>              r-e4-dev@eclipse.
>                    org>
>                  
>                  
> 
> 
> 
> 
> Hi Eric,
> 
> I'll split my replies into different mails to comment on different
> sections of your mail independently ;-)
> 
> First of all we already discussed a lot on this on EclipsCon and I fully
> agree with the points you are making. Having dived myself into the
> Platform-Code I know how hard it is for a contributor to add a certain
> feature to the current codebase (it's fustrating that if you worked on a
> feature the last weekend you'll need to restart from the beginning the
> next weekend because there are so many classes involved). Having a flat
> structure would improve this a lot.
> 
> Eric Moffatt schrieb:
>> 
>> 
>> Hello, since I'm the person respnsible for the current modelled UI demo
>> presented at EclipseCon I thought I'd kick off the discussions about the
>> architecture we're going to end up with by presenting the thought
>> process that lead to the current demo's structure...
>> 
>> [ Coffee Alert: this email is somewhat long but I wanted to capture
>> everything in one place. You may want to get a fresh cup before
>> proceeding...;-). Once it's been through the mill here for a bit I'll
>> capture the result, polish it up with screen caps etc and put it on the
>> WIKI. ]
> 
> Done and ready to start.
> 
>> 
>> The goal of this email is to stimulate discussion about the design and
>> its implementation; it's an open invitation for *YOU* to become involved
> !
>> 
>> The general idea is to provide an implementation that is much simpler
>> both in its internal implementation and in its external API's (while
>> maintaining the ability to host 'API-clean' extensions written against
>> 3.x). As alluded to in McQ's talk at EclipseCon much of the codebase
>> has, over time, become 'baroque' (read 'overly complex'). UI code is
>> particularly susceptible to this type of erosion since any GUI is under
>> unrelenting pressure from its community for 'tweaks' (this can be
>> treated as a constant that the new architecture should at least attempt
>> to mitigate).
>> 
>> I see re-working this code as simple self-preservation, it's just as
>> hard for me to work with as it is for external developers; I've just
>> spent the requisite 2-3 years working with it and have grown calluses to
>> mask the pain...;-).
>> 
>> The bottom line is that it's become soooo complex internally that it has
>> become extremely difficult for us to get any significant level of
>> community input (our *real* goal here!). The learning curve to
>> understand enough to create a valid patch for any but the simplest of
>> fixes is simply too high, requiring too much of an investment from the
>> would-be contributor. It also means that when patches are submitted
>> (even by truly solid devs) the committers have to spend a -lot- of time
>> working with the contributor to refine it to cover a slew of 'side
>> effects' that, while not necessarily a part of the functionality of the
>> new feature/fix, are required in order to have it observe all of the
>> niceties of 'proper' integration into the Workbench (i.e. Does it handle
>> all the view options like Movable, Closable? Themes? Correct use of
>> Workbench constants / prefs?...ad nauseam, especially for the poor sod
>> who contributed the original patch...;-). While some of this is or can
>> be aided by simply documenting the requirements, hopefully when we're
>> done we'll then be in a state where external contributors can provide
>> features/fixes without adverse side-effects on other parts of the
>> implementation. The same issues serve to limit the effectiveness of the
>> current committers, slowing the overall pace of bug fixing and
> enhancement.
>> 
>> This -must- change...OK, how ?
>> 
>> Well, it's pretty well generally accepted that the Model/View/Controller
>> architecture is the way to go in UI's and, indeed, much of the current
>> framework is implemented this way already. Unfortunately we have way too
>> many different models. In many cases this is the result of each UI
>> enhancement being discreetly coded by the individual responsible and,
>> being good GUI developers, they each implemented their own MVC
>> architecture. We'll see some examples later...
>> 
>> The basic premise behind the demo is to migrate the various models under
>> a single modelling architecture and show how this structure can
>> subsequently be used to drive the UI (rather than "divide and conquer" I
>> call this "consolidate and conquer"...;-). The Model Engine and its
>> elements would become 'first class' citizens in the platform which we
>> can then 'tool up' as appropriate (scripting...) and get maximum benefit.
>> 
>> The rules are simple (and many folks will say "Duh") but you'd be amazed
>> at how many folks break them...
>> 
>> 1) The modelling engine is responsible for containing the currently
>> defined state and reporting any changes to its listeners. Proper
>> implementations would also support save/restore and transactions with
>> (optional) undo/redo. Clients will be supplied with an implementation
>> (implementations?) and will gain immediate benefit from using it (they
>> can expect standardized JFace viewer support including automatic update
>> and editing support).
>> 
>> 2) The GUI components are responsible for presenting the current state
>> of (some subset of) the model and maintaining the correct display of the
>> model's state as it changes. In this case the GUI is everything you see
>> when running eclipse except for externally defined parts (even here we
>> expect to 'port' many of our existing views over to a modelled approach).
>> 
>> 3) In a non read-only world the GUI will also map certain user gestures
>> (i.e. clicking a tool, activating a view) onto -proposed- changes in the
>> model. The word 'proposed' is very important because it's IMO the most
>> common cause of breakages in the architecture. the GUI bit proposing the
>> changes should never take any presumptive action (like adding the
>> element to its list, changing the item's name...). It should say "the
>> user wants to do 'x' and then sit back and listen like everybody else to
>> see what actually happens. This allows a GUI whose model contains
>> internal logic (perhaps an attempt to rename an object to "Foo" will
>> result in a name clash so the model automatically sets it to "Foo(2)").
>> 
>> NOTE: we gain an immediate advantage for threading here. Changes to the
>> model can be made from -any- thread but the listeners are always fired
>> on the GUI thread, little or no need for 'sychExec'.
>> 
>> *[ Disclaimer #1: the current ModelElement implementation is sufficient
>> to get started but should likely be replaced with a 'proper' modelling
>> engine ASAP. Candidates? However, whatever the actual implementation(s)
>> are the public API should be as simple as the ModelElement's. ]*
>> 
> 
> Well I guess EMF would be the most natural choice here, not?
> 
> In my opinion there are multiple reasons:
> -----------------------------------------
> 
> - it's approved and has shown its stability/scalability in many big
>    projects. I think we all agree that we should not reinvent the wheel,
>    right?
> 
> - you get fairly everything for free (change-management,
>    (xml-)serialization (I somewhere heard that Ed and his team work on a
>    binary format, is that right Ed), ...) and a lot more if I look at the
>    different emf subprojects (constraint checking / validation,
>    persistance, ... )
> 
> - you get a whole project team / community to jump on the E4 train and
>    help you and we all agree the more diversity E4 has the better it will
>    get. We / you know the guys behind EMF which should not be
>    underestimated when choosing a technology
> 
> - No Licensing issues because EMF is under EPL
> 
> I'd volunteer to work with you to start a short experiment and transform
> what you currently have into an EMF-Model and maybe some EMF gurus can
> also help us to do this experiment? Once I get the demo running on M6 +
> OS-X, I don't know what's the problem because I followed the wiki step
> by step (besides using M6 instead of the integration build, do I have to
> switch back this one?, Does it work on OS-X?).
> 
> I need to get some work done and when I grab the next 2 cups of coffee
> I'll comment on the next part of your mail.
> 
> Tom
> 
> --
> B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
> ------------------------------------------------------------------------
> tom schindl                               leiter softwareentwicklung/CSO
> ------------------------------------------------------------------------
> eduard-bodem-gasse 8/3    A-6020 innsbruck      phone    ++43 512 935834
> _______________________________________________
> 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



Back to the top