e4 – why you don’t need e5

This was orginally a reply on Elias post on e5:

On “should take risks”:
We agreed that e4 would be compatible with 3.x. Is not 100% correct: We agreed on the fact that e4 will provide a compat layer so that people can run the 3.x plug-ins which is a completely different thing IMHO because the underpinning designs of e4 are not influenced by this fact.

So what you suggest is what we’ve done in e4 we started with a new set of ideas and code leaving the old one behind already which you notice if you look at the plain e4-bundles in CVS.

On “needs a driver”:
The driver for e4 in my way of thinking is RCP and though you probably don’t believe we are on a good way to make development of RCP much easier. Yet what is missing is tooling, wizards and documentation and people who mastered to learn programming e4-Applications and give you a lending hand.

There’s no need anymore for using plugin.xml for example. You can create an e4 application in a fully programmatic way only you don’t know it as a newcomer.

On “must be easy to learn & master”:
I agree but we should not forget what we are talking about. This are not HelloWorld-programs nor a simple webpages. We are talking about business applications. Still this is a valid point and we need to do our best to give people convenience tools and API to hide away the natural complexities of a multi purpose platform like e4 is one.

General sum up:
I really don’t think that you need an e5 any time soon if you look at how modular e4 is designed from scratch with

  • its extensible workbench-model at the bottom (it even allows you to add your own workbench concepts if you are unhappy with the one coming with e4)
  • its plugable rendering structure on the top
  • its abandoning of singletons making it useable in multi-user environments like RAP (by the use of DI)
  • its leveraging of OSGi (Direct support for OSGi-Services through DI, usage of the OSGi-EventSystem)
  • its even looser coupeling by the use of DI (e.g. I have code I run as plain SWT-Application and inside e4-Applications)

and this all with a really really small amount of size (as Boris already explained in his former reply your numbers are incorrect). The killer feature of e4 is that it comes with concepts and strategies to write UI applications but doesn’t force you the way to do it in certain way by allowing you to exchange (most) of them:

  • You don’t like plugin.xml to make up your UI – Great don’t use it and make up the workbench model from code, your own DSL (e.g. there’s an Xtext-Tutorial at EclipseCon where they show of how to define an Workbench-Model using a DSL), …
  • You don’t like the limitation of SWT or some of their controls – Great don’t use them and replace them with your own ones (and this even by not controling the Application-Startup like you had to do in your Ribbon-Examples for 3.x) by writing your own IPresentation engine which has about 5 methods you need to implement
  • You don’t even like SWT at all – Great don’t use it, use Swing, Qt, ncurses and write your own renderers
  • You don’t like DI but prefer to reach out to the OSGi-Service-Registry your own – Great do it. The argument that you don’t know which services are available is a tooling and documentation issue. The argument that you don’t know which services are available at a given time is something you need to get used to in dynamic environments like OSGi but at least e4 (when using DI) saves from writing code to handle this

I think e4 with the right documentation gives you (and many many people out there) exactly what you/they want so before starting to think about e5 I hope you dive deeper and exploit its possibilities.

To end this post what I like most about e4 is: It gives me back control of almost everything – if I want to – and I can’t live without this power (anymore).

This entry was posted in e4. Bookmark the permalink.

6 Responses to e4 – why you don’t need e5

  1. Lars Vogel says:

    Thanks Tom for your summary. The renderer stuff sounds really powerful.

  2. I anxiously await the ncurses renderer Tom 🙂

  3. Well, part of e5 should be a new, much improved version of SWT. Especially the code in org.eclipse.swt.custom should be much more reusable since it doesn’t depend on the DLLs. This also applies to JFace to some extend; but JFace is more reusable to begin with.

    The main reason why this should be in e5 is that no one is willing to work on this for e4 and with e5, the pressure will be much greater than now.

    • tomeclipsedev says:

      Why do you think this needs an e5? If nobody is willing to work on it, it won’t happen no matter if you call it e4, e5, … .

      Beside that:

      • CTabFolder is going to be very flexible in SWT 3.6 so that e4 can implement its L&F
      • Nebula provides custom controls. Did you ever looked at CWT which has SVG-Rendering, Custom Drawn buttons, …
      • UFaceKit provides Viewers with Java 5-Support and an MVP-Implementation ontop of SWT/Eclipse-Databinding
      • For the reasons you mentioned: it won’t happen for e4.

        “Willing to work on it” is greatly hampered by “can work on it”. I’m still looking for a correct recipe how to compile SWT. For the time being, I’ve just downloaded the source and extracted the sources for StyledText into a new project (which I’ll push on some server within the next few days).

        But all these efforts must be coordinates. The Nebula widgets are all in various states of usefulness and that’s deadly for something as basic as a UI.

        Yeah, I’m whining but I’m whining because I have no solution. My hope is that this will get the attention of someone with a solution 🙂

      • tomeclipsedev says:

        But simply requesting e5 is not the solution. As said there are certain movements into some of you problem areas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.