On Sat, 29 Dec 2012 11:48:36 +0900
Carsten Haitzler (The Rasterman) <ras...@rasterman.com> wrote:

> On Fri, 28 Dec 2012 22:31:18 +0000 Michael Blumenkrantz
> <michael.blumenkra...@gmail.com> said:
> 
> > On Fri, 28 Dec 2012 20:17:14 -0200
> > Lucas De Marchi <lucas.demar...@profusion.mobi> wrote:
> > 
> > > Hey!
> > > 
> > > I'd like to start a discussion about eo and its usage in EFL. I got
> > > very frustrated on how it was merged regardless the opinion of the
> > > other EFL developers. IMO it could make some sense in elementary, but
> > > not in the core like ecore, evas, edje.
> > > 
> > > Asking around I discovered I was not the only one.... rather the
> > > opposite - everyone I asked hates how it's done.  Recently I had to
> > > review some patches to elementary, adding the systray support. My eyes
> > > were bleeding. I will enlist here some reasons in no particular order.
> > > Surely there are more... others are welcome to fill them here.
> > > 
> > >  - We replaced the function calls with eo_do(func()). Now, take an
> > > application and imagine all ecore_*, evas_*, elm_* functions replaced
> > > with eo_do(func()). This is not just ugly... it's impractical to use.
> > > 
> > >  - eo_do() is the userspace incarnation of ioctl() - search on LKML to
> > > see how it's hated there.
> > 
> > it does make me consider entering one of those code obfuscation contests...
> > 
> > > 
> > >  - *every* "function" in a backtrace comes with the
> > > _eo_dov_internal()/_eo_op_internal() companion - besides polluting the
> > > bt, for sure they have a cost. And I saw no benchmarks on mailing list
> > > after the addition of eo.  One might think that since *I* am
> > > complaining, *I* should provide them, but I think it's exactly the
> > > opposite - people who added this thing should make sure it's now the
> > > same or better than it was before.
> > 
> > backtraces with eo are the reason I don't see myself ever switching to the
> > 1.8 branch. as for benchmarks, I saw some supposed numbers thrown around
> > during early eo development which claimed that it "was slower, but not that
> > much slower, and worth it for the gains"
> > 
> > > 
> > >  - If we really needed this level of OO in ecore, evas, edje, we'd be
> > > better off using C++ or inventing our own language to fit our needs
> > > instead of doing what we are doing now.
> > > 
> > >  - why is it any better than the smart object we had all these years?
> > > Why not improve that instead of replacing with eo?
> > > 
> > >  - run elementary_test with EINA_LOG_LEVELS=5 and see the
> > > construction/destruction party
> > 
> > not to mention the spam just from running e
> > 
> > > 
> > >  - Despite raster arguing this is not an API break, I strongly believe
> > > it is. It broke compilation of lots of c++ applications (I'll not
> > > repeat myself here... in the mailing list there are my other arguments
> > > why it is an api breakage)
> > > 
> > > 
> > > 
> > > My opinion is to revert the whole thing, but I'm sure this would be a
> > > major task after the surgery to put it in was made.  I'd at least like
> > > the people responsible for it to answer the points above, and people
> > > who like me think this is all crap to step up and say so.
> > > 
> > > 
> > > 
> > > Lucas De Marchi
> > > 
> > 
> > depressing though it may be to think about, I have to agree with your 
> > points.
> > I'm not saying it needs to be reverted, but I don't see any benefit to
> > keeping it unless the goal was to reduce my commits to the afflicted areas 
> > to
> > near zero.
> > 
> > while it's impressive that all of the eo stuff was added with relatively
> > little breakage (as opposed to my expectations), the idea of having to learn
> > what is essentially a different programming language in order to work on efl
> > internals again in trunk is really demotivating. maybe I'll become the kwo 
> > of
> > the 1.7 branch?
> 
> fair enough. it's a change. it's not a change i wanted. it's a change that was
> NEEDED. needed because once you go beyond the scope of us few efl devs, you 
> hit
> a wall of developers who can take our api - documented or not, with examples 
> or
> not, and then just fall over tehmselves and end up wasting our time by the
> bucket load in the process. you never experienced it so you never felt or sw
> the pain. you were insulated. this change is some of that insualtion not able
> to continue and something has to leak. it has to give. if this demotivates 
> you,
> then i guess, so be it. continuing as we were would have demotivated me to the
> point of giving up. it also *HAS* deotivated a dozen+ other people. so we lose
> either way.
> 
> without eo peolpe doing bindings do them the hard way - forever. eo provides
> for introspection and documentation.
> 
> without eo we have our "17 ways to a callback". maybe you don't get annoyed by
> this, but i do. i keep having to try remember "ok, which prototype was that
> callback? i know its void *data... then what? what does it return?". eo tries
> to unify callbacks... AND document them at runtime even (for introspection
> purposes). this makes it insanely easier to build a gui builder and make
> language bindings.
> 
> without eo we still have the danger that code messes up and you accidetnally
> access an invalid pointer... nd then segv. and hen you should know the wonders
> of this... you get a complaint "e crashes!"... and you get no usefl backtrace
> from the user (or not even a backtrace at all). object indirectiona and ids 
> stop
> that. or more accurately, bring the likelihood of it so close to zero it may 
> as
> well be. something has to stomp over the object id table to make this hapen 
> and
> if we mmap the ob id table in its own memory mapping, then the chances of an
> errant write to this memroy are very close to nil - you cao't walk of the end
> of your malloc()ed segment into it. it has pages padding it. it's in address
> range never exposed, so no one actually holds pointer values to the table
> EXCEPT for a very small sliver in eo. this table isn't there right now. but 
> the
> plan was to slide it in and have it there. crashes now go down dramatically.
> invalid accesses are safe and detectable without signal trapping. this holds 
> tr
> not just for e17 but for everything using efl.
> 
> without eo we have to handle cleanup of attached things like timers, animators
> and just random "extra stuff" you ay attach to an object (eg an edje object)
> where you don't want to go make a whole smart obj (class) for it - you just
> wanted to stick on a timer to time out in N sec and then do something. but you
> now have to handle all the cases of if the oject is deleted before timer
> expires. if timer expores, ensure the timer handle attached to obj is nulled
> out, and you have to attach it somehow. with eo you can just create and attach
> and "walk away" and the rest is handled. it lowers the bar to making objects
> like this easily and safely, saving you time.
> 
> right now eo looks bad to you because you see the downsides only and make use 
> of
> none of the upsides. that's part of the transition. i think it's good to air
> this as to a lot of devs they are unaware of why eo is there, and what caused
> its ned to become reality, and what you get in return. until its actually 
> being
> made use of evrywhere, it won't reach full potential, but if its not being 
> used
> at all (which is pretty much the case at the moment) all it has is apparent 
> and
> real downsides (longer bt's call overhead++ etc.). 
> 

I don't disagree with your points, but from my view it still makes everything I 
(and a lot of other developers) do a nightmare. to be truly useful, eo needs a 
lot of developer documentation so that people can get on the fast track to 
knowing what the hell is going on when they see eo nonsense in backtraces or 
are trying to figure out how code written with it works.

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122912
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to