Given that I replied to one message, I have to agree with Henrique here.

If you're a C programmer, having to work with C-unlike code is a PITA. I
can cite 2 examples that drove me away because of their weird usage:

  - DirectFB: http://directfb.org/docs/DirectFB_Tutorials/image.html the
exception-handling like, also the methods are in the instance rather that
on the class to simplify usage... why not just doing in C++ then?!

  - libev: macros to "simplify" parameter passing and others:
https://github.com/joyent/libuv/blob/1e32cb01b5ae20be0d27fa05ee1555b3f67bf763/src/unix/core.c#L266void
ev__run
(EV_P_ ev_tstamp waittime);... Even node.js stopped using that, code starts
to be unreadable.



On Sat, Dec 29, 2012 at 1:06 PM, Henrique Dante <hda...@profusion.mobi>wrote:

> On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler <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
>
>  Hello, from a new developer pespective, I think Eo is creating an
> unwelcome encapsulation of the API, that's usually neither expected
> nor wanted in C. It's replacing simple function calls with message
> building with handles and varargs. The way I see it, new C application
> developers from the community (as opposed to employees required to
> work on EFL) which could potentially choose EFL as a toolkit, would
> avoid it, not be attracted to it.
>
>  While developing with Eo I also noticed that it breaks cscope usage.
> Whenever I wanted to jump to the definition of some method call, I
> reached a macro in the include file instead. Then I had to use the
> method ID to do a new search, this time not by definition, but by
> usage in class definitions. The other way doesn't work well either:
> single stepping in gdb to find out the code path or looking at a
> backtrace are both polluted with Eo calls. In general single stepping
> on an efl method call should take 5 seconds, but with Eo it may take 5
> minutes. Main negative conclusion about this is that there's no
> trivial way to find out what an Eo call does, and this will discourage
> new developers from reading code.
>
> > 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.).
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >
> >
> ------------------------------------------------------------------------------
> > 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
>
>
> ------------------------------------------------------------------------------
> 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
>



-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: barbi...@gmail.com
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202
------------------------------------------------------------------------------
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. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to