Why enlightenment?

Carsten Haitzler (The Rasterman) raster at rasterman.com
Tue Apr 21 13:26:12 CEST 2009

On Tue, 21 Apr 2009 12:05:44 +0200 Bram Neijt <bneijt at gmail.com> said:

i'm going to keep it short as i really dont have time to go into al the details.

1. i am not interested in c++. this gets rid of qt, fltk and a bunch of other
toolkits. i know there are enough devs also not interested in c++.
2. this (in terms of major toolkits) gets you down to gtk or "something else".

so i'll focus on gtk vs efl.

1. gtk's theme engine is limited. it is limited by the code that lays out
widgets. you cannot make a theme have extra padding in a widget. yo cannot add
layering, text effects or many other things. gtk has no concept of layering
between widgets. widgets are laid out flat and should/cannot overlap.
2. gtk is slower. even just start times. try an app that uses efl and one that
uses gtk (and that have equivalently complex-looking themes/ui setups). see
which one pops up your window first. i have gotten it from developers doing
embedded evices to the point where they laughed at how slow gtk was. once they
used evas/efl - their apps came up seconds sooner. and efl was playing no
tricks to get there. even when they played the dlopen() tricks that maemo does
to launch gtk fast - efl still beat gtk - and it was going the long way around.
i have, in the meantime added a similar hack to elementary. and it now starts
even faster. this is anecdotes directly from people using it. their managers
are pressuring them to get apps to appear instantly. or as instantly as
possible. they hit a wall with gtk they couldnt - for months, improve. someone
decided to try efl and suddenly they were incredibly happy and moving forwards
again. gtk - if you begin to do anything "interesting" with the theme and ui
(theme engine) becomes pretty slow with redraws. visibly so on a slow old
device. keep your gtk to "grey bevels" or solid colors with simply looks and it
goes fine. get fancy and it comes to a crawl.

3. gtk has no ability to do blending in, aroudn or between widgets sanely
because it uses child windows (you would need to introduce compositing to gtk
or remove all child windows which will break its api)
4. try do a ui that INST just plain normal widgets with gtk. see where you get.
try do "xmms" (winamp etc.). efl drops into this kind of ui seamlessly as it
provides a canvas as the core drawing layer. making such custom ui;s (which
many people are rather fond of and make sense in specific cases). try this in
gtk (to the point of it being easy):


(i'm not done with it yet).

5. rendering. gtk uses cairo. cairo is full of floating point. the samsung 2442
has NO floating point unit. it's slow as arse without a fpu. many embedded
systems have no fpu. add to this rendering other than fp.. this means simple
pixel pushing (blending, scaling, etc.). cairo has a software engine of its own
- but normally uses xrender. both of these are significantly slower than evas's
software engine. by more than a factor of 2. doing the same operations. evas
has an xrender engine. it even once had a cairo engine. here i clocked the
cairo engine in at being 1/20th the speed of evas's existing software engine.
evas also has a OpenGL engine, DirectFB, Quartz, win32, wince, (and here in my
own sources i also have a OpenGLES 2.0 engine - sadnly the 3d GLES chipsets
i've tested it on simply run at about 1/4 the speed of evas's software
engine.. on the same platform... so it's awaiting some miracle to make it
speed up to the point of it being useful). it can render to the FB directly
(with no x11 involved). flipping between x and fb is a single line of code the
app selects on init. thus a 1 liner to have your app work in fb to x11.. or both
even without a single recompile or patch. there's an SDL engine, direct3d,
memory-buffer renderer direct-draw and even qtopia engine. thats a hell of a
lot of display targets. you can switch them simply by varying the init line.
gtk does not go here.

6. there are existing meta-object abstraction libraries on top - edje. this
allows you to define a "complex object" and layout in a data file. it splits
the look/theme/feel away from the programmer a bit allowing non-programmers to
generate them. it allows for defining interactions from events (mouse etc.)
signals (virtual events from the app) and animations. thus you can very easily
define a more custom layout for an app (eg a whole winamp skin) in a single
data file... and just load it - place it where you want and "let it go". edje
handles the rest for you. the animation, interaction and abstractions for
layout. no - it's not perfect. it has limits. but it's something gtk doesnt
even vaguely offer. sure you have libglade and to an extent you can begin to do
some.. but not all. not as easily.

yes. i am saying it wasn't good enough. i started evas and efl because nothing
else DID it. and still toolkits are playing catch up. if all you want is your
usual grey boxy normal widget ui - gtk is fine. but if you want to get
interesting. if you want do do imaginative things with layout and layering and
compositing... efl has it. it was built for it. no one stops you from using gtk
- it still works and is there. you are free to use it if you simply prefer it
or love it and wont try something else.

yes. i didnt bring qt in (i eliminated it due to c++ and earlier at the start
it was eliminated due to licensing).

now what other major toolkits are there. fltk is pretty minor and most others
are too so there you are not going to be choosing your toolkit by "popularity"
as they are all more niche.

note - i was invited to openmoko so i didnt CHOOSE efl. there was already deep
interest before i came. i didn't just join then "make it all e".

> Effectively you are saying "nothing else was good enough". But that is
> what everybody says when you ask them why they created something, they
> say "I needed it, and it wasn't there already".
> Could you be more specific on which features you want, and why other
> toolkits can not deliver them? Or give an example of where other
> libraries where just to slow?
> Bram
> On Sun, 2009-04-19 at 11:28 +1000, Carsten Haitzler wrote:
> > On Thu, 16 Apr 2009 17:11:37 +0200 Bram Neijt <bneijt at gmail.com> said:
> > 
> > as such the choice of enviornment, thanks to it running x, is not limited,
> > you can use qt, gtk, sdl, fltk etc. e is a window manager - it happens to
> > also have spawned toolkits that lend themesleves to unique custom ui's and
> > much more flexibility than the larger toolkits. trust me on this - gtk's
> > theme system comes courtesy of me - i wrote it years ago. i know how far
> > you will be able to push gtk (without breaking it and effectively creating
> > a new incompatible toolkit). qt until a few months ago has a major license
> > issue - GPL for a library forces ALL apps to effectively be GPL. for the
> > entire development of gta02 it was GPL. GPL inherently restricts the
> > freedom of app developers to NOT make software GPL (MIT, BSD< or any other
> > license they choose). if you chose to ship with a GPL toolkit - then you
> > limit what app developers can do. so qt was right out (and i know a whole
> > bunch of developers who simply dont want todo c++ in order to use qt - they
> > want to use c or something else).
> > 
> > so gtk has its limits - also i have heard enough complaints of it being
> > slow - and that is from commercial developers in big electronics houses.
> > they really are not squeakingly happy with gtk and are hunting for other
> > solutions. qt had the license problems until a few months ago.
> > 
> > so what other choices do you have if you have eliminated qt for license
> > reasons and you think gtk is just not up to snuff and is unlikely to get
> > there easily without major breaks?
> > 
> > > True, I expected to like the Freerunner as a phone and thought the whole
> > > freedom would just be an added bonus. If the phone isn't that good, I
> > > could always fix small bugs and help out.
> > > 
> > > However, it turns out that I can't understand the direction the
> > > mainstream development is going, and with this small community, the bugs
> > > in other distributions are not small at all.
> > > 
> > > So I seem have to make a choice: put in allot of time, or stick with a
> > > product that I can't understand. The last option is just to sell the
> > > thing before the value drops to much and buy something else.
> > > 
> > > As you say, choices had to be made and this is it. I don't think I'm
> > > closer to understanding the reasoning behind choosing for e, but maybe
> > > this is just an opinion, and we should leave it at that. In the meantime
> > > I think I'll just have to reset my expectations, and decide what I want
> > > to do with this phone.
> > > 
> > > Thank you for your reply.
> > > 
> > > Bram
> > > 
> > > 
> > > 
> > > On Thu, 2009-04-16 at 15:02 +0200, arne anka wrote:
> > > > > So what if the company decided to use that money for something you do
> > > > > not want to be part of, or you think they are throwing away your money
> > > > > doing stupid things. Well, I think at that moment you should pawn the
> > > > > product, not endorse it (maybe even publicly denounce it) and then
> > > > > find another company or product you can be happy with.
> > > > 
> > > > that's a constellation you have to cope with in every commercial
> > > > product (and even in others, too, though you might not measure your
> > > > investments in terms of money).
> > > > what's more, with most companies you don't neither have a saying in
> > > > what the money is spent for nor do you actually get information about
> > > > what that company plans are at all.
> > > > 
> > > > the difference with the freerunner is, that you can install what  
> > > > environment you want and that you are not limited by the decisions the  
> > > > company makes after you bought.
> > > > with the amount of freedom available, openmoko as company in question  
> > > > cannot be supposed to invest in all and every available technology, be
> > > > it a desktop environment or merely a toolkit, but instead one way has
> > > > to be chosen.
> > > > but om having their money on e does not mean, you are forced to use e.
> > > > 
> > > > if, on the other hand, you demand that you have a saying in what the  
> > > > company does with your money, clinging to the merely ficitional
> > > > conception of splitting your money in a part for the actual hardware, a
> > > > part for development done and a part for development to come -- there
> > > > won't be many things left you could purchase.
> > > > 
> > > > btw: that whole question is not at all about e or gtk or qt, but what
> > > > to expect from a frre device -- and that question in turn has been
> > > > discussed in extenso already.
> > > > 
> > > > 
> > > > _______________________________________________
> > > > Openmoko community mailing list
> > > > community at lists.openmoko.org
> > > > http://lists.openmoko.org/mailman/listinfo/community
> > > 
> > > 
> > > _______________________________________________
> > > Openmoko community mailing list
> > > community at lists.openmoko.org
> > > http://lists.openmoko.org/mailman/listinfo/community
> > > 
> > 
> > 
> _______________________________________________
> Openmoko community mailing list
> community at lists.openmoko.org
> http://lists.openmoko.org/mailman/listinfo/community

------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    raster at rasterman.com

More information about the community mailing list