Re: [E-devel] eo and efl

2013-01-01 Thread David Seikel
On Tue, 1 Jan 2013 15:02:02 +0900 Carsten Haitzler (The Rasterman)
ras...@rasterman.com wrote:

 On Mon, 31 Dec 2012 13:46:41 +1000 David Seikel onef...@gmail.com
 said:
 
  On Mon, 31 Dec 2012 10:20:21 +0900 Cedric BAIL cedric.b...@free.fr
  wrote:
  
   On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
   barbi...@profusion.mobi wrote:
On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL
cedric.b...@free.fr wrote:
On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
lucas.demar...@profusion.mobi wrote:
  
  snip
   
Bindings: I'm still to see that for real, but IMO it will make
bindings worse. Also, people tend to think of bindings as a
simply expose C functions in that language 1:1. This is
horrible, you're developing for some language and you must cope
with that language's style as much as possible. If the work to
make the Python or JS bindings were just to generate 1:1, it
would be better, but we took the time to think how to match
language nicely.
   
   This is debatable. I do think that a 1:1 binding is fine as it
   provide an easy and sure path with time. Still there is clearly a
   need to implement a layer in the binded language to abstract it
   and make it feel like a native JS, Python, whatever API. You may
   not have a 1:1 binding in Elev8, but I think you are doing a
   higher up layer in JS with EasyUI that could have been an
   abstraction between a 1:1 binding and the JS world. I also think
   that this way the binding would have a much easier time to
   provide a stable API and the script could just include the EasyUI
   layer they used for development. That one would have worked on
   every version of the binding without any breakage ever and it
   would have make the life of maintaining that binding much more
   easy.
   
For bindings, the worse part here is that you'll never be able
to construct va_list then you'll never be abe to expose eo_do()
itself.
   
   It's not worse, it just limiting and sad. You will be limited to
   use only one function call even when you have all the value
   needed to do much more... I also would have liked a way to bind
   that.
   
Then it's like fixing a problem that is not broken.
   
   Seriously ? Our binding are massively behind. We have barely one
   maintained binding, JS and a few other that are slowly dying. If
   half of our API was present in them, I would be happy, but that's
   far from being the case. So what is the status of the Perl,
   Python, Ruby, Go and all other bindings ? Tell me they are all
   great, cover 80% of our API (I am not even asking for 100%) and
   well maintained.
  
  The Lua bindings are great, well maintained, but only cover a small
  percentage of EFL API.  They also try to leverage Lua ways of doing
  stuff to make it easy for Lua scripters, it's not exactly a 1:1
  binding.  It's close to 1:1 though.  It's not slowly dying.  :-P
  
  I would love to resurrect my ancient RAD tool and have some higher
  level stuff for edje Lua, but I suspect Raster would veto that.  I'm
  not ready to do that yet anyway, so will leave that for a later
  discussion.
  
  The textblock API is kinda scary huge, that's why I left it out last
  time I was adding Lua bindings.  Which bit me last week when I was
  considering a design that would use textblock from Lua.  lol
  
  BTW, no one answered my previous question - will I have to redo the
  Lua bindings to suit eo now?
 
 no. you don't have to. current efl api will keep working fine until
 2.0 after then it may continue to work (to greater or lesser extents)
 but there definitely will bee no support for expansion of it and new
 stuff will go via eo. i'd say it's early days for eo so you may end
 up with teething problems if you try to move to it, BUT, it may also
 save you a buttload of time in the long-run due to introspection etc.

I also wanted to try out the LuaJIT C binding stuff.  So I think I
might experiment with them both, see what pans out the best.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2013-01-01 Thread David Seikel
On Tue, 1 Jan 2013 16:30:21 +0900 Carsten Haitzler (The Rasterman)
ras...@rasterman.com wrote:

 On Tue, 1 Jan 2013 15:16:13 +0900 Jérôme Pinot ngc...@gmail.com
 said:
 
  On 01/01/13 15:02, Carsten Haitzler wrote:
  [snip]
   but there definitely will bee no support for expansion of it
  
  This stings, really.
 
 no one said 2.0 is happening soon. it's a long ways off yet. my
 intent is to have 1.x for at lest 5 years from 1.0. gustavo pushed
 for 2.0 asap. break early, break often. i disagree. eo is a path TO
 2.0 i guess and it slides in early and gives us a long time to beat
 things into shape.

So that will be 1.x for at least five years, meaning we start 2.0 in
2018, with 18 years of development (since 0.17 took 17 years, I figured
0.18 will take 18).  That means a release date in 2036?  Lets allow a
couple of years for safety, and we can have the next major release on
19 January 2038, the nearest major End of The World.  B-)

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2013-01-01 Thread The Rasterman
On Tue, 1 Jan 2013 16:34:57 +0900 Jérôme Pinot ngc...@gmail.com said:

 On 01/01/13 16:30, Carsten Haitzler wrote:
  On Tue, 1 Jan 2013 15:16:13 +0900 Jérôme Pinot ngc...@gmail.com said:
  
   On 01/01/13 15:02, Carsten Haitzler wrote:
   [snip]
but there definitely will bee no support for expansion of it
   
   This stings, really.
  
  no one said 2.0 is happening soon. it's a long ways off yet. my intent is to
  have 1.x for at lest 5 years from 1.0. gustavo pushed for 2.0 asap. break
  early, break often. i disagree. eo is a path TO 2.0 i guess and it slides in
  early and gives us a long time to beat things into shape.
 
 bee, stings, humour

h bee... hahahahaha sorry - missed that reference. :) get it now :)

 Just thought this endless thread was going too much serious /o\
 
 -- 
 Jérôme Pinot
 http://ngc891.blogdns.net/


-- 
- Codito, ergo sum - I code, therefore I am --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2013-01-01 Thread The Rasterman
On Tue, 1 Jan 2013 18:21:14 +1000 David Seikel onef...@gmail.com said:

 On Tue, 1 Jan 2013 16:30:21 +0900 Carsten Haitzler (The Rasterman)
 ras...@rasterman.com wrote:
 
  On Tue, 1 Jan 2013 15:16:13 +0900 Jérôme Pinot ngc...@gmail.com
  said:
  
   On 01/01/13 15:02, Carsten Haitzler wrote:
   [snip]
but there definitely will bee no support for expansion of it
   
   This stings, really.
  
  no one said 2.0 is happening soon. it's a long ways off yet. my
  intent is to have 1.x for at lest 5 years from 1.0. gustavo pushed
  for 2.0 asap. break early, break often. i disagree. eo is a path TO
  2.0 i guess and it slides in early and gives us a long time to beat
  things into shape.
 
 So that will be 1.x for at least five years, meaning we start 2.0 in
 2018, with 18 years of development (since 0.17 took 17 years, I figured
 0.18 will take 18).  That means a release date in 2036?  Lets allow a
 couple of years for safety, and we can have the next major release on
 19 January 2038, the nearest major End of The World.  B-)

8-P :)

 -- 
 A big old stinking pile of genius that no one wants
 coz there are too many silver coated monkeys in the world.


-- 
- Codito, ergo sum - I code, therefore I am --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-31 Thread Jérémy Zurcher
On Monday 31 December 2012  10:20, Cedric BAIL wrote :
 On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
 barbi...@profusion.mobi wrote:
  On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr wrote:
  On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
  lucas.demar...@profusion.mobi wrote:
   I don't want to be the boring guy complaining on this. But I can't
   agree neither on the reasons why this went in, nor how it went in. For
   me eo is just raping C and all the problems pointed out should be
   fixed elsewhere.
 
  Please describe how. For example how do you plan to link cleanly any
  object from ecore or eio for example with any evas_object ? How do you
  plan to give memory compaction ? How do you see we could do the ID
  indirection ? How can we do a live debug of live object in a program ?
  How do you provide multiple inheritance ? How do you provide API and
  ABI stability over time ? How do you make bindings easier to keep in
  sync possible ? Please share your idea. If you dislike Eo so much, you
  must have an alternative in mind that solve the same issue that Eo
  solve. At the moment, I only see rants and no care about the problem
  that Eo address and the answer we have been giving here.
 
  I was trying to stay out of this thread, everybody knows I hate Eo and was
  against this since the beginning, showing facts on problems it caused to
  debug.
 
  But with these arguments, you're being too naive an eo is the solution for
  everything is not working.
 
  the memory compaction, for example, is independent and either you found out
  the light that nobody else did, or you'll face huge problems if you try.
  Not everywhere uses eo_data_get(), then if you replace the memory with some
  other address underneath, you'll end with lost pointers, garbage and it
  will be super-hard to find. The change will not be doable in the code base
  of our size. If may have worked if we started coding like that from day0.
 
 Indeed the eo_data_get doesn't allow that. I have been working on a
 proposal to solve that problem and open some more possibility. I
 planned to write a mail later this week. Anyway the idea is to move to
 an api like a rw mutex. So that as long as you hold a pointer to it,
 it wont get compacted. Main target are currently Evas and Edje where
 it would help and the code affected is not that big (basically mostly
 in canvas/ subdirectory).
 
  ID indirection helps what? making debug harder?
 
 You get an assert as soon as you use or reuse a wrong pointer. Instant
 backtrace that point to the source of the problem. Zero delay. No
 hiding. It will help application developers that tend to still
 manipulate dead object.
 
  ABI/API stability is worse, not better. You still have the same problems
  you had before, but the existing tools to check that (nm + shell scripts to
  compare 2 libs) won't work... and the worse part is simple: before you
  could reorder the functions around, now you must keep them in order as they
  imply an ID and it can't change. Okay, this is very minimum, but it is
  worse, not better in that regard.
 
 nm + shell is a very limited tool to check for API/ABI stability. It
 completely ignore structure and enum. So it's worse but anyway relying
 on nm + shell for doing an automated test here, is really a wrong
 argument. If you want this kind of tool, you will need to move to a
 llvm/clang's plugin anyway and that kind of plugin would be able to
 check API/ABI stability for EO.
 
  See, you can't still change the parameters. You can't change the return
  type. You can't change the function name.
 
 This is not C++, you can change the parameters and return value as
 long as they remain opaque. As for changing the public name of a
 function, I don't see how you could still provide an API/ABI
 compatibility with such a feature. But as we are doing C, API/ABI
 stability is almost an non issue here compared to other language
 (which was my main point on that subject).
 
  Bindings: I'm still to see that for real, but IMO it will make bindings
  worse. Also, people tend to think of bindings as a simply expose C
  functions in that language 1:1. This is horrible, you're developing for
  some language and you must cope with that language's style as much as
  possible. If the work to make the Python or JS bindings were just to
  generate 1:1, it would be better, but we took the time to think how to
  match language nicely.
 
 This is debatable. I do think that a 1:1 binding is fine as it provide
 an easy and sure path with time. Still there is clearly a need to
 implement a layer in the binded language to abstract it and make it
 feel like a native JS, Python, whatever API. You may not have a 1:1
 binding in Elev8, but I think you are doing a higher up layer in JS
 with EasyUI that could have been an abstraction between a 1:1 binding
 and the JS world. I also think that this way the binding would have a
 much easier time to provide a stable API and 

Re: [E-devel] eo and efl

2012-12-31 Thread Henrique Dante
On Mon, Dec 31, 2012 at 2:15 AM, Cedric BAIL cedric.b...@free.fr wrote:
 On Mon, Dec 31, 2012 at 12:24 PM, Henrique Dante hda...@profusion.mobi 
 wrote:
 On Sun, Dec 30, 2012 at 9:28 PM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:06 AM, Henrique Dante hda...@profusion.mobi 
 wrote:
  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.

 It took me time to understand what you mean by definition. My

  A definition is a declaration that includes the element's content.

 Your definition is still vague when speaking about macro, prototype
 and implementation.

 I'm not a big fan of discussing terminology. My definition is C
definition, so we shouldn't be discussing this.


 understanding of your complaint is that you don't like virtual. cscope

  The way you are saying suggests that I don't like some part of object
 orientation, which is false. I was strictly referring to the
 implementation of Eo and its influence on development.

 will never be able to find the implementation (for me definition is

  Method calls that were not polymorphic, from concrete classes, were
 made polymorphic with Eo. And in this case, polymorphic means
 explicitly referenced by an ID. That's the virtual I didn't like. But
 even if I liked it, it would have broken jump-to-definition the same
 way.

 Jump to declaration is not broken and provide documentation, prototype

 Correct, but it jumps to the abstract (base) declaration, not to the
derived one, even with a bottom level object with its own
implementation.

 for said call. That what developer using EFL are looking for.

  The problem you mentioned was restricted to a (small ?) subset of
 methods, the ones derived from base classes. Now the whole libraries
 have this problem.

 the prototype, that's why I was confused) at compile time, because it

  That's a declaration.

 is determined at runtime. The same problem exist with C++ and people

  No idea how that's done in C++. I think cscope works with C++ by
 luck. However in an OO language, a method call bound to a concrete,
 bottom-of-hierarchy, instanced object should be enough to jump to
 its definition, at compile time, even if the method is virtual (this
 should only be harder if it's necessary to walk through the object
 hierarchy). Anyway, jumping to definition of a virtual method with
 cscope on a C++ project can be done with 1 search, not 2.

 So now, I don't follow you anymore. Jumping to the prototype of a
 virtual in C++ work exactly the same way it work in C. At least from
 an user of the API. I think I now do understand what you mean. You are
 doing development inside EFL and try to find the macro that correspond
 to a function implementation, right ?

 Yes, I was not worried about the prototype, I needed the implementation.


 As a matter of fixing that issue, couldn't you not instruct csope to
 do the double jump for you ? It doesn't sounds like the problem is
 more a limitation in your tool than a real issue.

 I'd do a script for that, or more probably, will avoid reading the code.


 think that virtual is useful somehow.

  Not sure why you're talking about the concept of virtual. My comment
 was about noticing that developers might avoid EFL because Eo (not OO)
 has negative effects on development.

 Maybe because your explanation is confusing. I was supposing you were
 writing application with EFL and did use the EO API and where
 complaining about that. Now I think you are trying to work inside EFL
 with EO API and are complaining about some limitation of your tool.

 To make things simpler, ignore my second paragraph. I explicitly
stated that this was something I also noticed, but you ignored the
first paragraph and focused in trying solve my specific problem,
instead. Even if you convinced me that what's broken are my tools,
this is not about me.


 In fact we need virtual today in EFL for at least to case, for at
 least to case that I know of. First geometry get on Evas_Object_Text
 and second for all the *_file_set that lurk around, have the same
 prototype and do the almost the same think, but just exist to confuse
 the developer.

  That looks like there are too few cases to consider it as a benefit.

 That's just the two first example that came to me without having the
 need to search for anything. I am sure there is more. Making a non
 virtual and virtual function call would have added a layer of
 complexity and risk for API/ABI break later. It's a trade-of .

  Repeating again, I sent the comment to sugest that Eo could have a
 negative acceptance by developers.

 It was difficult to understand the context of your remark. Now, I
 think you are trying to get used to EFL source code and Eo is another
 bit of complexity in that 

Re: [E-devel] eo and efl

2012-12-31 Thread Jorge Luis Zapata Muga
On Mon, Dec 31, 2012 at 2:20 AM, Cedric BAIL cedric.b...@free.fr wrote:

 On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
 barbi...@profusion.mobi wrote:
  On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr
 wrote:
  On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
  lucas.demar...@profusion.mobi wrote:
   I don't want to be the boring guy complaining on this. But I can't
   agree neither on the reasons why this went in, nor how it went in. For
   me eo is just raping C and all the problems pointed out should be
   fixed elsewhere.
 
  Please describe how. For example how do you plan to link cleanly any
  object from ecore or eio for example with any evas_object ? How do you
  plan to give memory compaction ? How do you see we could do the ID
  indirection ? How can we do a live debug of live object in a program ?
  How do you provide multiple inheritance ? How do you provide API and
  ABI stability over time ? How do you make bindings easier to keep in
  sync possible ? Please share your idea. If you dislike Eo so much, you
  must have an alternative in mind that solve the same issue that Eo
  solve. At the moment, I only see rants and no care about the problem
  that Eo address and the answer we have been giving here.
 
  I was trying to stay out of this thread, everybody knows I hate Eo and
 was
  against this since the beginning, showing facts on problems it caused to
  debug.
 
  But with these arguments, you're being too naive an eo is the solution
 for
  everything is not working.
 
  the memory compaction, for example, is independent and either you found
 out
  the light that nobody else did, or you'll face huge problems if you
 try.
  Not everywhere uses eo_data_get(), then if you replace the memory with
 some
  other address underneath, you'll end with lost pointers, garbage and it
  will be super-hard to find. The change will not be doable in the code
 base
  of our size. If may have worked if we started coding like that from day0.

 Indeed the eo_data_get doesn't allow that. I have been working on a
 proposal to solve that problem and open some more possibility. I
 planned to write a mail later this week. Anyway the idea is to move to
 an api like a rw mutex. So that as long as you hold a pointer to it,
 it wont get compacted. Main target are currently Evas and Edje where
 it would help and the code affected is not that big (basically mostly
 in canvas/ subdirectory).

  ID indirection helps what? making debug harder?

 You get an assert as soon as you use or reuse a wrong pointer. Instant
 backtrace that point to the source of the problem. Zero delay. No
 hiding. It will help application developers that tend to still
 manipulate dead object.

  ABI/API stability is worse, not better. You still have the same problems
  you had before, but the existing tools to check that (nm + shell scripts
 to
  compare 2 libs) won't work... and the worse part is simple: before you
  could reorder the functions around, now you must keep them in order as
 they
  imply an ID and it can't change. Okay, this is very minimum, but it is
  worse, not better in that regard.

 nm + shell is a very limited tool to check for API/ABI stability. It
 completely ignore structure and enum. So it's worse but anyway relying
 on nm + shell for doing an automated test here, is really a wrong
 argument. If you want this kind of tool, you will need to move to a
 llvm/clang's plugin anyway and that kind of plugin would be able to
 check API/ABI stability for EO.

  See, you can't still change the parameters. You can't change the return
  type. You can't change the function name.

 This is not C++, you can change the parameters and return value as
 long as they remain opaque. As for changing the public name of a
 function, I don't see how you could still provide an API/ABI
 compatibility with such a feature. But as we are doing C, API/ABI
 stability is almost an non issue here compared to other language
 (which was my main point on that subject).

  Bindings: I'm still to see that for real, but IMO it will make bindings
  worse. Also, people tend to think of bindings as a simply expose C
  functions in that language 1:1. This is horrible, you're developing for
  some language and you must cope with that language's style as much as
  possible. If the work to make the Python or JS bindings were just to
  generate 1:1, it would be better, but we took the time to think how to
  match language nicely.

 This is debatable. I do think that a 1:1 binding is fine as it provide
 an easy and sure path with time. Still there is clearly a need to
 implement a layer in the binded language to abstract it and make it
 feel like a native JS, Python, whatever API. You may not have a 1:1
 binding in Elev8, but I think you are doing a higher up layer in JS
 with EasyUI that could have been an abstraction between a 1:1 binding
 and the JS world. I also think that this way the binding would have a
 much easier time to provide a 

Re: [E-devel] eo and efl

2012-12-31 Thread Lucas De Marchi
On Sun, Dec 30, 2012 at 11:33 PM, Carsten Haitzler ras...@rasterman.com wrote:
 On Sun, 30 Dec 2012 14:19:01 -0200 Lucas De Marchi
 lucas.demar...@profusion.mobi said:

 On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler ras...@rasterman.com
 wrote:

  i shall start with a single one: 'Subject: [E-devel] Eobj - Request for
  review/comments' in april 2012.

 indeed I missed that. But don't be that silly. Let me explain:

 wait. you challenge me to provie even 1 example (there's more) and now you
 dismiss it by saying don't be silly? this line of logic i fail to follow.

It's the same logic Mike applied. That was not a RFC: generalizing
all objects with a single one


 I just added a project under PROTO/ named ldm with features X, Y and
 Z. Will you review it? probably not.

 if you said we want to make this the future of all oo infra in efl and asked
 for input, i would.

 5 month later later I come back and replace all your Eo structs
 underneath you with my ldm structs, because this is the way I think is
 the right way.  Will you complain? Of course you will.

 that is nothing like what happened. not even close. you have many 
 opportunities
 to have input, comment etc.

 To worse, it was added together with the move of the tree to efl/. And
 I *DID* complain saying there was no reason to rush eobj in.  Of
 course you didn't hear because a patch like eobj would be impossible
 to maintain out of tree.

 indeed it would be impossible - saying i didn't listen is just your way of
 saying you disagreed therefore i will say you didn't listen. you even 
 provide
 a justification for disagreing here, and yet... you decide it's not 
 listening.

for me not listening is the same as disagreeing here.


 what i see here is there is a change, and i don't like change. i hate change.
 change means i have to adapt and i hate doing that.

oh, who is clueless now? I am the changer guy. I love changes. The
good ones, not just because we can.



 i suggest we roll back the async rendering code in evas. it's change. it
 creates problems. it hasn't solved anything. oh - and edbus. it's change. it's
 created leaks and crashes and soaked up my time during my vacation. let's roll
 it back. i hate change.

I am impressed by your lack of arguments now bringing up this.


 don't be silly. this is EXACTLY what you sound like. you'd now just pulling
 justifications out of the air to back a desire for no change.

I said don't be silly because you are twisting the words and facts
to justify adding eo.



 And as others pointed out, saying this has been discussed on IRC and
 mailing list and interpreting that like it has been decided to do
 this way is just silly.

 there were 2 main lines of how to solve our oo stuff. gustavo's which was
 just use smart objects which i said wouldn't fly because we can't make lower
 level objects use this (timers etc). they are also too heavy-weight for such
 uses even if we twisted the world. evas canvases then can't ve objects either.
 they also do not support multiple inheritance (or multiple interfaces) which i
 listed as a requirement because elm was literally creating objects that did
 this (scrolled entry for example). i had requirements that went roughly like
 this:

 1. support normal single inheritance
 2. multiple inheritance must work sensibly
 3. we have to be able to go down to ecore and make timers etc. into objects
 4. we have to be able to attach objects to eachother weakly or tightly (weak
 refs or strong refs)
 5. we need to clean up our callback prototype mess and unify
 6. we need to make object ptr (handle) access much safer in the event of freed
 objects or errant (garbage) pointers as well as typechecks
 7. since #6 probably is going to raise object access overhead, some way of
 alleviating this would be really nice
 8. we have to be able to slide it under our current api/abi so stuff keeps
 working as it used to but in future we can migrate to it once slide 
 underneath
 everywhere
 9. support runtime method overriding etc.
 10. unify the data attaching we have (evas_object_data_set/get/del)
 11. allow for memory compaction/gc to alleviate fragmentation

 i think i had a few more. some were more important that others, but
 multiple-inheritance was a big one as it was problematic with just stuffing
 struct in struct methods of single inheritance gobject did.

oh... now I see one of the reasons why I don't like it... it's gobject
on steroids.



 eo wasn't even created yet. there were toy attempts/exampels in different 
 forms
 etc. to explore ideas and see what would work or not but nothing concrete. 
 this
 was the time to have a say. even with the first iterations of eo - it was the
 time to have a say. eo solves  the bove, OR lays the groundwork to be able to
 solve the above transparently under the hood in future.

 now you claim eo adds all sorts of problems. the eo_do() is impractical. i 
 just
 don't get that. it's just as practical as now.

 obj = 

Re: [E-devel] eo and efl

2012-12-31 Thread David Seikel
On Mon, 31 Dec 2012 18:18:10 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi wrote:

 On Sun, Dec 30, 2012 at 11:33 PM, Carsten Haitzler
 ras...@rasterman.com wrote:
  On Sun, 30 Dec 2012 14:19:01 -0200 Lucas De Marchi
  lucas.demar...@profusion.mobi said:
 
  On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler
  ras...@rasterman.com wrote:
 
   i shall start with a single one: 'Subject: [E-devel] Eobj -
   Request for review/comments' in april 2012.
 
  indeed I missed that. But don't be that silly. Let me explain:
 
  wait. you challenge me to provie even 1 example (there's more) and
  now you dismiss it by saying don't be silly? this line of logic i
  fail to follow.
 
 It's the same logic Mike applied. That was not a RFC: generalizing
 all objects with a single one

First RFC = Request For Comments, so that part was in there.  Second,
traditionally a RFC is about a specific implementation.  It's up to the
objectors to supply the comments that was requested, in a timely
fashion, otherwise the proposer wont know there's any objections.
Quibbling over the exact title now instead of making comments at the
time is just silly.

Here in EFL we have other traditions to, one is to rewrite stuff.  I've
had stuff rewritten out from under me when it was still being
developed, I don't like the replacement, but seems most others do.  I
just shut up about it, except for rare snide comments like this
one.  :-P

So if you really don't like it, write a replacement, or shut up.

I'm still on the fence about eo, coz I've not had to deal with it much
yet.  And no one has answered the question I keep asking.  lol

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-31 Thread The Rasterman
On Mon, 31 Dec 2012 13:46:41 +1000 David Seikel onef...@gmail.com said:

 On Mon, 31 Dec 2012 10:20:21 +0900 Cedric BAIL cedric.b...@free.fr
 wrote:
 
  On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
  barbi...@profusion.mobi wrote:
   On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr
   wrote:
   On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
   lucas.demar...@profusion.mobi wrote:
 
 snip
  
   Bindings: I'm still to see that for real, but IMO it will make
   bindings worse. Also, people tend to think of bindings as a simply
   expose C functions in that language 1:1. This is horrible, you're
   developing for some language and you must cope with that language's
   style as much as possible. If the work to make the Python or JS
   bindings were just to generate 1:1, it would be better, but we took
   the time to think how to match language nicely.
  
  This is debatable. I do think that a 1:1 binding is fine as it provide
  an easy and sure path with time. Still there is clearly a need to
  implement a layer in the binded language to abstract it and make it
  feel like a native JS, Python, whatever API. You may not have a 1:1
  binding in Elev8, but I think you are doing a higher up layer in JS
  with EasyUI that could have been an abstraction between a 1:1 binding
  and the JS world. I also think that this way the binding would have a
  much easier time to provide a stable API and the script could just
  include the EasyUI layer they used for development. That one would
  have worked on every version of the binding without any breakage ever
  and it would have make the life of maintaining that binding much more
  easy.
  
   For bindings, the worse part here is that you'll never be able to
   construct va_list then you'll never be abe to expose eo_do() itself.
  
  It's not worse, it just limiting and sad. You will be limited to use
  only one function call even when you have all the value needed to do
  much more... I also would have liked a way to bind that.
  
   Then it's like fixing a problem that is not broken.
  
  Seriously ? Our binding are massively behind. We have barely one
  maintained binding, JS and a few other that are slowly dying. If half
  of our API was present in them, I would be happy, but that's far from
  being the case. So what is the status of the Perl, Python, Ruby, Go
  and all other bindings ? Tell me they are all great, cover 80% of our
  API (I am not even asking for 100%) and well maintained.
 
 The Lua bindings are great, well maintained, but only cover a small
 percentage of EFL API.  They also try to leverage Lua ways of doing
 stuff to make it easy for Lua scripters, it's not exactly a 1:1
 binding.  It's close to 1:1 though.  It's not slowly dying.  :-P
 
 I would love to resurrect my ancient RAD tool and have some higher
 level stuff for edje Lua, but I suspect Raster would veto that.  I'm
 not ready to do that yet anyway, so will leave that for a later
 discussion.
 
 The textblock API is kinda scary huge, that's why I left it out last
 time I was adding Lua bindings.  Which bit me last week when I was
 considering a design that would use textblock from Lua.  lol
 
 BTW, no one answered my previous question - will I have to redo the Lua
 bindings to suit eo now?

no. you don't have to. current efl api will keep working fine until 2.0 after
then it may continue to work (to greater or lesser extents) but there
definitely will bee no support for expansion of it and new stuff will go via
eo. i'd say it's early days for eo so you may end up with teething problems if
you try to move to it, BUT, it may also save you a buttload of time in the
long-run due to introspection etc.


-- 
- Codito, ergo sum - I code, therefore I am --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-31 Thread The Rasterman
On Mon, 31 Dec 2012 18:18:10 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:

 On Sun, Dec 30, 2012 at 11:33 PM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Sun, 30 Dec 2012 14:19:01 -0200 Lucas De Marchi
  lucas.demar...@profusion.mobi said:
 
  On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler ras...@rasterman.com
  wrote:
 
   i shall start with a single one: 'Subject: [E-devel] Eobj - Request for
   review/comments' in april 2012.
 
  indeed I missed that. But don't be that silly. Let me explain:
 
  wait. you challenge me to provie even 1 example (there's more) and now you
  dismiss it by saying don't be silly? this line of logic i fail to follow.
 
 It's the same logic Mike applied. That was not a RFC: generalizing
 all objects with a single one

wth? so now you want to get pedantic with an rfc wording? there are not many of
them. comment was asked for long ago now. you chose not to. it's a bit late for
the rip it out and don't do it at all point. i'll repeat it here. if there
are things to improve and make better in eo - sure. make those points. let's
improve it.

  I just added a project under PROTO/ named ldm with features X, Y and
  Z. Will you review it? probably not.
 
  if you said we want to make this the future of all oo infra in efl and
  asked for input, i would.
 
  5 month later later I come back and replace all your Eo structs
  underneath you with my ldm structs, because this is the way I think is
  the right way.  Will you complain? Of course you will.
 
  that is nothing like what happened. not even close. you have many
  opportunities to have input, comment etc.
 
  To worse, it was added together with the move of the tree to efl/. And
  I *DID* complain saying there was no reason to rush eobj in.  Of
  course you didn't hear because a patch like eobj would be impossible
  to maintain out of tree.
 
  indeed it would be impossible - saying i didn't listen is just your way of
  saying you disagreed therefore i will say you didn't listen. you even
  provide a justification for disagreing here, and yet... you decide it's
  not listening.
 
 for me not listening is the same as disagreeing here.

a very fundamental difference, but that may be lost on you.

  what i see here is there is a change, and i don't like change. i hate
  change. change means i have to adapt and i hate doing that.
 
 oh, who is clueless now? I am the changer guy. I love changes. The
 good ones, not just because we can.

you only lik the changes you make - as you understand them. others changes are
to be debated long after the opportunity for debate is over.

  i suggest we roll back the async rendering code in evas. it's change. it
  creates problems. it hasn't solved anything. oh - and edbus. it's change.
  it's created leaks and crashes and soaked up my time during my vacation.
  let's roll it back. i hate change.
 
 I am impressed by your lack of arguments now bringing up this.

i'm continuing from the logic of change is bad so roll it back. most of your
complaints are just that.

  don't be silly. this is EXACTLY what you sound like. you'd now just pulling
  justifications out of the air to back a desire for no change.
 
 I said don't be silly because you are twisting the words and facts
 to justify adding eo.

i listed a long list of things as to why eo fits the bill. i gave a list of
things we need. it provides solutions. you do not provide them.

  And as others pointed out, saying this has been discussed on IRC and
  mailing list and interpreting that like it has been decided to do
  this way is just silly.
 
  there were 2 main lines of how to solve our oo stuff. gustavo's which was
  just use smart objects which i said wouldn't fly because we can't make
  lower level objects use this (timers etc). they are also too heavy-weight
  for such uses even if we twisted the world. evas canvases then can't ve
  objects either. they also do not support multiple inheritance (or multiple
  interfaces) which i listed as a requirement because elm was literally
  creating objects that did this (scrolled entry for example). i had
  requirements that went roughly like this:
 
  1. support normal single inheritance
  2. multiple inheritance must work sensibly
  3. we have to be able to go down to ecore and make timers etc. into objects
  4. we have to be able to attach objects to eachother weakly or tightly (weak
  refs or strong refs)
  5. we need to clean up our callback prototype mess and unify
  6. we need to make object ptr (handle) access much safer in the event of
  freed objects or errant (garbage) pointers as well as typechecks
  7. since #6 probably is going to raise object access overhead, some way of
  alleviating this would be really nice
  8. we have to be able to slide it under our current api/abi so stuff keeps
  working as it used to but in future we can migrate to it once slide
  underneath everywhere
  9. support runtime method overriding etc.
  10. unify the data attaching we 

Re: [E-devel] eo and efl

2012-12-31 Thread Jérôme Pinot
On 01/01/13 15:02, Carsten Haitzler wrote:
[snip]
 but there definitely will bee no support for expansion of it

This stings, really.

-- 
Jérôme Pinot
http://ngc891.blogdns.net/


signature.asc
Description: Digital signature
--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-31 Thread The Rasterman
On Tue, 1 Jan 2013 15:16:13 +0900 Jérôme Pinot ngc...@gmail.com said:

 On 01/01/13 15:02, Carsten Haitzler wrote:
 [snip]
  but there definitely will bee no support for expansion of it
 
 This stings, really.

no one said 2.0 is happening soon. it's a long ways off yet. my intent is to
have 1.x for at lest 5 years from 1.0. gustavo pushed for 2.0 asap. break
early, break often. i disagree. eo is a path TO 2.0 i guess and it slides in
early and gives us a long time to beat things into shape.

-- 
- Codito, ergo sum - I code, therefore I am --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-31 Thread Jérôme Pinot
On 01/01/13 16:30, Carsten Haitzler wrote:
 On Tue, 1 Jan 2013 15:16:13 +0900 Jérôme Pinot ngc...@gmail.com said:
 
  On 01/01/13 15:02, Carsten Haitzler wrote:
  [snip]
   but there definitely will bee no support for expansion of it
  
  This stings, really.
 
 no one said 2.0 is happening soon. it's a long ways off yet. my intent is to
 have 1.x for at lest 5 years from 1.0. gustavo pushed for 2.0 asap. break
 early, break often. i disagree. eo is a path TO 2.0 i guess and it slides in
 early and gives us a long time to beat things into shape.

bee, stings, humour

Just thought this endless thread was going too much serious /o\

-- 
Jérôme Pinot
http://ngc891.blogdns.net/


signature.asc
Description: Digital signature
--
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of 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_122512___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread Lucas De Marchi
On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler ras...@rasterman.com wrote:
 On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante hda...@profusion.mobi 
 said:

 On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-30 Thread The Rasterman
On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:

 On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante hda...@profusion.mobi
  said:
 
  On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler ras...@rasterman.com
  wrote:
   On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-30 Thread Lucas De Marchi
On Sun, Dec 30, 2012 at 9:49 AM, Carsten Haitzler ras...@rasterman.com wrote:
 On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
 lucas.demar...@profusion.mobi said:

 On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante hda...@profusion.mobi
  said:
 
  On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler ras...@rasterman.com
  wrote:
   On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-30 Thread Cedric BAIL
On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
lucas.demar...@profusion.mobi wrote:
 I don't want to be the boring guy complaining on this. But I can't
 agree neither on the reasons why this went in, nor how it went in. For
 me eo is just raping C and all the problems pointed out should be
 fixed elsewhere.

Please describe how. For example how do you plan to link cleanly any
object from ecore or eio for example with any evas_object ? How do you
plan to give memory compaction ? How do you see we could do the ID
indirection ? How can we do a live debug of live object in a program ?
How do you provide multiple inheritance ? How do you provide API and
ABI stability over time ? How do you make bindings easier to keep in
sync possible ? Please share your idea. If you dislike Eo so much, you
must have an alternative in mind that solve the same issue that Eo
solve. At the moment, I only see rants and no care about the problem
that Eo address and the answer we have been giving here.
--
Cedric BAIL

--
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


Re: [E-devel] eo and efl

2012-12-30 Thread Gustavo Sverzut Barbieri
On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr wrote:

 On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
 lucas.demar...@profusion.mobi wrote:
  I don't want to be the boring guy complaining on this. But I can't
  agree neither on the reasons why this went in, nor how it went in. For
  me eo is just raping C and all the problems pointed out should be
  fixed elsewhere.

 Please describe how. For example how do you plan to link cleanly any
 object from ecore or eio for example with any evas_object ? How do you
 plan to give memory compaction ? How do you see we could do the ID
 indirection ? How can we do a live debug of live object in a program ?
 How do you provide multiple inheritance ? How do you provide API and
 ABI stability over time ? How do you make bindings easier to keep in
 sync possible ? Please share your idea. If you dislike Eo so much, you
 must have an alternative in mind that solve the same issue that Eo
 solve. At the moment, I only see rants and no care about the problem
 that Eo address and the answer we have been giving here.


I was trying to stay out of this thread, everybody knows I hate Eo and was
against this since the beginning, showing facts on problems it caused to
debug.

But with these arguments, you're being too naive an eo is the solution for
everything is not working.

the memory compaction, for example, is independent and either you found out
the light that nobody else did, or you'll face huge problems if you try.
Not everywhere uses eo_data_get(), then if you replace the memory with some
other address underneath, you'll end with lost pointers, garbage and it
will be super-hard to find. The change will not be doable in the code base
of our size. If may have worked if we started coding like that from day0.

ID indirection helps what? making debug harder?

ABI/API stability is worse, not better. You still have the same problems
you had before, but the existing tools to check that (nm + shell scripts to
compare 2 libs) won't work... and the worse part is simple: before you
could reorder the functions around, now you must keep them in order as they
imply an ID and it can't change. Okay, this is very minimum, but it is
worse, not better in that regard.
See, you can't still change the parameters. You can't change the return
type. You can't change the function name.

Bindings: I'm still to see that for real, but IMO it will make bindings
worse. Also, people tend to think of bindings as a simply expose C
functions in that language 1:1. This is horrible, you're developing for
some language and you must cope with that language's style as much as
possible. If the work to make the Python or JS bindings were just to
generate 1:1, it would be better, but we took the time to think how to
match language nicely.
For bindings, the worse part here is that you'll never be able to construct
va_list then you'll never be abe to expose eo_do() itself.

Then it's like fixing a problem that is not broken.

Raster had better points, which could be easily fixable in a simpler way
(unified callbacks, references, type). The Eo is bringing a problem, not
solving one :-( Actually it would be better to have invested in something
like Vala, that looks like a higher level language that translates to C,
other than doing this in C and having to solve problems everywhere else,
like tools, debugger... the so called e ide.

-- 
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


Re: [E-devel] eo and efl

2012-12-30 Thread The Rasterman
On Sun, 30 Dec 2012 09:55:10 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:

 On Sun, Dec 30, 2012 at 9:49 AM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
  lucas.demar...@profusion.mobi said:
 
  On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler ras...@rasterman.com
  wrote:
   On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante hda...@profusion.mobi
   said:
  
   On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler
   ras...@rasterman.com wrote:
On Fri, 28 Dec 2012 22:31:18 + 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.
  

Re: [E-devel] eo and efl

2012-12-30 Thread Gustavo Sverzut Barbieri
On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler ras...@rasterman.comwrote:

 On Sun, 30 Dec 2012 09:55:10 -0200 Lucas De Marchi
 lucas.demar...@profusion.mobi said:

  On Sun, Dec 30, 2012 at 9:49 AM, Carsten Haitzler ras...@rasterman.com
  wrote:
   On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
   lucas.demar...@profusion.mobi said:
  
   On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler 
 ras...@rasterman.com
   wrote:
On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante 
 hda...@profusion.mobi
said:
   
On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler
ras...@rasterman.com wrote:
 On Fri, 28 Dec 2012 22:31:18 + 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. 

Re: [E-devel] eo and efl

2012-12-30 Thread Michael Blumenkrantz
On Sun, 30 Dec 2012 13:24:06 -0200
Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote:

 On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler 
 ras...@rasterman.comwrote:
 
  On Sun, 30 Dec 2012 09:55:10 -0200 Lucas De Marchi
  lucas.demar...@profusion.mobi said:
 
   On Sun, Dec 30, 2012 at 9:49 AM, Carsten Haitzler ras...@rasterman.com
   wrote:
On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:
   
On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler 
  ras...@rasterman.com
wrote:
 On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante 
  hda...@profusion.mobi
 said:

 On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler
 ras...@rasterman.com wrote:
  On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-30 Thread Lucas De Marchi
On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler ras...@rasterman.com wrote:
 On Sun, 30 Dec 2012 09:55:10 -0200 Lucas De Marchi
 lucas.demar...@profusion.mobi said:

 On Sun, Dec 30, 2012 at 9:49 AM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Sun, 30 Dec 2012 09:27:40 -0200 Lucas De Marchi
  lucas.demar...@profusion.mobi said:
 
  On Sat, Dec 29, 2012 at 10:32 PM, Carsten Haitzler ras...@rasterman.com
  wrote:
   On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante 
   hda...@profusion.mobi
   said:
  
   On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler
   ras...@rasterman.com wrote:
On Fri, 28 Dec 2012 22:31:18 + 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
   

Re: [E-devel] eo and efl

2012-12-30 Thread Lucas De Marchi
On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
 lucas.demar...@profusion.mobi wrote:
 I don't want to be the boring guy complaining on this. But I can't
 agree neither on the reasons why this went in, nor how it went in. For
 me eo is just raping C and all the problems pointed out should be
 fixed elsewhere.

 Please describe how. For example how do you plan to link cleanly any
 object from ecore or eio for example with any evas_object ? How do you
 plan to give memory compaction ? How do you see we could do the ID
 indirection ? How can we do a live debug of live object in a program ?
 How do you provide multiple inheritance ? How do you provide API and
 ABI stability over time ? How do you make bindings easier to keep in
 sync possible ? Please share your idea. If you dislike Eo so much, you
 must have an alternative in mind that solve the same issue that Eo
 solve. At the moment, I only see rants and no care about the problem
 that Eo address and the answer we have been giving here.

ohh... I and everyone else in  the world are missing the cure to
cancer tha is eo.

You don't solve with eo most of the points above and the ones you
solve is in horrible way expecting users to use eo_do() everywhere.
And you pay the price of creating more problems like was pointed out
already. Needless to say you are creating problems to solve with EO. I
don't want multiple inheritance and id indirection, thank you (as I
said, maybe this would make sense in elm, where there is some use of
multiple inheritance). API/ABI stability is not improved in any way.

This is not C,  is the eo language. And please don't treat the
complaints to your baby as rants.


Lucas De Marchi

--
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


Re: [E-devel] eo and efl

2012-12-30 Thread Cedric BAIL
On Sun, Dec 30, 2012 at 12:06 AM, Henrique Dante hda...@profusion.mobi wrote:
  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.

It took me time to understand what you mean by definition. My
understanding of your complaint is that you don't like virtual. cscope
will never be able to find the implementation (for me definition is
the prototype, that's why I was confused) at compile time, because it
is determined at runtime. The same problem exist with C++ and people
think that virtual is useful somehow.

In fact we need virtual today in EFL for at least to case, for at
least to case that I know of. First geometry get on Evas_Object_Text
and second for all the *_file_set that lurk around, have the same
prototype and do the almost the same think, but just exist to confuse
the developer.

 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.

Did you try Daniel's gdb script for that task ?
--
Cedric BAIL

--
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


Re: [E-devel] eo and efl

2012-12-30 Thread Cedric BAIL
On Sat, Dec 29, 2012 at 3:04 PM, David Seikel onef...@gmail.com wrote:
 On Sat, 29 Dec 2012 02:14:07 +0100 Cedric BAIL cedric.b...@free.fr
 wrote:
 On Fri, Dec 28, 2012 at 11:55 PM, David Seikel onef...@gmail.com
  However, I've just wasted a whole day tracking down that I was
  passing an Evas_Object to a function that needed an Evas.  It
  compiled and worked fine under the merged efl tree, but not on EFL
  1.7.4.  Under 1.7.4 there was no complaints, just missing text.

 This is cleary a bug, it should have triggered a critical warning at
 run time. Care to share which function ?

 edje_object_add()

 The client is coming around tonight, and now I'm a day behind.  So I'm
 not gonna be spending any more time beating at it to help you diagnose
 things today.  The fact that it just worked perfectly with no error
 messages in merged efl tree is what took all the time tracking down,
 coz I was looking everywhere else to find the problem.  lol

The problem is that it should work with EFL tree. I tested it here and
definitively edje_object_add(Evas_Object *parent) does work. It does
have the same behavior has elm_*_add function there. Before it was not
allowed to pass an Evas_Object instead of an Evas canvas, now it is.
So this is not a bug, but an evolution so that all our API match Elm
API. Does that explain the behavior you did get ?
--
Cedric BAIL

--
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_122412
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread Cedric BAIL
On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
barbi...@profusion.mobi wrote:
 On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
 lucas.demar...@profusion.mobi wrote:
  I don't want to be the boring guy complaining on this. But I can't
  agree neither on the reasons why this went in, nor how it went in. For
  me eo is just raping C and all the problems pointed out should be
  fixed elsewhere.

 Please describe how. For example how do you plan to link cleanly any
 object from ecore or eio for example with any evas_object ? How do you
 plan to give memory compaction ? How do you see we could do the ID
 indirection ? How can we do a live debug of live object in a program ?
 How do you provide multiple inheritance ? How do you provide API and
 ABI stability over time ? How do you make bindings easier to keep in
 sync possible ? Please share your idea. If you dislike Eo so much, you
 must have an alternative in mind that solve the same issue that Eo
 solve. At the moment, I only see rants and no care about the problem
 that Eo address and the answer we have been giving here.

 I was trying to stay out of this thread, everybody knows I hate Eo and was
 against this since the beginning, showing facts on problems it caused to
 debug.

 But with these arguments, you're being too naive an eo is the solution for
 everything is not working.

 the memory compaction, for example, is independent and either you found out
 the light that nobody else did, or you'll face huge problems if you try.
 Not everywhere uses eo_data_get(), then if you replace the memory with some
 other address underneath, you'll end with lost pointers, garbage and it
 will be super-hard to find. The change will not be doable in the code base
 of our size. If may have worked if we started coding like that from day0.

Indeed the eo_data_get doesn't allow that. I have been working on a
proposal to solve that problem and open some more possibility. I
planned to write a mail later this week. Anyway the idea is to move to
an api like a rw mutex. So that as long as you hold a pointer to it,
it wont get compacted. Main target are currently Evas and Edje where
it would help and the code affected is not that big (basically mostly
in canvas/ subdirectory).

 ID indirection helps what? making debug harder?

You get an assert as soon as you use or reuse a wrong pointer. Instant
backtrace that point to the source of the problem. Zero delay. No
hiding. It will help application developers that tend to still
manipulate dead object.

 ABI/API stability is worse, not better. You still have the same problems
 you had before, but the existing tools to check that (nm + shell scripts to
 compare 2 libs) won't work... and the worse part is simple: before you
 could reorder the functions around, now you must keep them in order as they
 imply an ID and it can't change. Okay, this is very minimum, but it is
 worse, not better in that regard.

nm + shell is a very limited tool to check for API/ABI stability. It
completely ignore structure and enum. So it's worse but anyway relying
on nm + shell for doing an automated test here, is really a wrong
argument. If you want this kind of tool, you will need to move to a
llvm/clang's plugin anyway and that kind of plugin would be able to
check API/ABI stability for EO.

 See, you can't still change the parameters. You can't change the return
 type. You can't change the function name.

This is not C++, you can change the parameters and return value as
long as they remain opaque. As for changing the public name of a
function, I don't see how you could still provide an API/ABI
compatibility with such a feature. But as we are doing C, API/ABI
stability is almost an non issue here compared to other language
(which was my main point on that subject).

 Bindings: I'm still to see that for real, but IMO it will make bindings
 worse. Also, people tend to think of bindings as a simply expose C
 functions in that language 1:1. This is horrible, you're developing for
 some language and you must cope with that language's style as much as
 possible. If the work to make the Python or JS bindings were just to
 generate 1:1, it would be better, but we took the time to think how to
 match language nicely.

This is debatable. I do think that a 1:1 binding is fine as it provide
an easy and sure path with time. Still there is clearly a need to
implement a layer in the binded language to abstract it and make it
feel like a native JS, Python, whatever API. You may not have a 1:1
binding in Elev8, but I think you are doing a higher up layer in JS
with EasyUI that could have been an abstraction between a 1:1 binding
and the JS world. I also think that this way the binding would have a
much easier time to provide a stable API and the script could just
include the EasyUI layer they used for development. That one would
have worked on every version of the binding without any 

Re: [E-devel] eo and efl

2012-12-30 Thread The Rasterman
On Sun, 30 Dec 2012 14:19:01 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:

 On Sun, Dec 30, 2012 at 12:51 PM, Carsten Haitzler ras...@rasterman.com
 wrote:
 
  i shall start with a single one: 'Subject: [E-devel] Eobj - Request for
  review/comments' in april 2012.
 
 indeed I missed that. But don't be that silly. Let me explain:

wait. you challenge me to provie even 1 example (there's more) and now you
dismiss it by saying don't be silly? this line of logic i fail to follow.

 I just added a project under PROTO/ named ldm with features X, Y and
 Z. Will you review it? probably not.

if you said we want to make this the future of all oo infra in efl and asked
for input, i would.

 5 month later later I come back and replace all your Eo structs
 underneath you with my ldm structs, because this is the way I think is
 the right way.  Will you complain? Of course you will.

that is nothing like what happened. not even close. you have many opportunities
to have input, comment etc.

 To worse, it was added together with the move of the tree to efl/. And
 I *DID* complain saying there was no reason to rush eobj in.  Of
 course you didn't hear because a patch like eobj would be impossible
 to maintain out of tree.

indeed it would be impossible - saying i didn't listen is just your way of
saying you disagreed therefore i will say you didn't listen. you even provide
a justification for disagreing here, and yet... you decide it's not listening.

what i see here is there is a change, and i don't like change. i hate change.
change means i have to adapt and i hate doing that.

i suggest we roll back the async rendering code in evas. it's change. it
creates problems. it hasn't solved anything. oh - and edbus. it's change. it's
created leaks and crashes and soaked up my time during my vacation. let's roll
it back. i hate change.

don't be silly. this is EXACTLY what you sound like. you'd now just pulling
justifications out of the air to back a desire for no change.

 And as others pointed out, saying this has been discussed on IRC and
 mailing list and interpreting that like it has been decided to do
 this way is just silly.

there were 2 main lines of how to solve our oo stuff. gustavo's which was
just use smart objects which i said wouldn't fly because we can't make lower
level objects use this (timers etc). they are also too heavy-weight for such
uses even if we twisted the world. evas canvases then can't ve objects either.
they also do not support multiple inheritance (or multiple interfaces) which i
listed as a requirement because elm was literally creating objects that did
this (scrolled entry for example). i had requirements that went roughly like
this:

1. support normal single inheritance
2. multiple inheritance must work sensibly
3. we have to be able to go down to ecore and make timers etc. into objects
4. we have to be able to attach objects to eachother weakly or tightly (weak
refs or strong refs)
5. we need to clean up our callback prototype mess and unify
6. we need to make object ptr (handle) access much safer in the event of freed
objects or errant (garbage) pointers as well as typechecks
7. since #6 probably is going to raise object access overhead, some way of
alleviating this would be really nice
8. we have to be able to slide it under our current api/abi so stuff keeps
working as it used to but in future we can migrate to it once slide underneath
everywhere
9. support runtime method overriding etc.
10. unify the data attaching we have (evas_object_data_set/get/del)
11. allow for memory compaction/gc to alleviate fragmentation

i think i had a few more. some were more important that others, but
multiple-inheritance was a big one as it was problematic with just stuffing
struct in struct methods of single inheritance gobject did.

eo wasn't even created yet. there were toy attempts/exampels in different forms
etc. to explore ideas and see what would work or not but nothing concrete. this
was the time to have a say. even with the first iterations of eo - it was the
time to have a say. eo solves  the bove, OR lays the groundwork to be able to
solve the above transparently under the hood in future.

now you claim eo adds all sorts of problems. the eo_do() is impractical. i just
don't get that. it's just as practical as now.

obj = evas_object_image_add(evas);
evas_object_image_filled_set(obj, EINA_TRUE);
evas_object_file_set(obj, blah.jpg, NULL);
evas_object_move(obj, 0, 100);
evas_object_resize(obj, 200, 100);
evas_object_show(obj);

very common thing in code. with eo

obj = eo_add(evas_object_image_class_get(), evas,
 evas_obj_image_filled_set(EINA_TRUE),
 evas_obj_image_file_set(blah.jpg, NULL),
 evas_obj_position_set(0, 100),
 evas_obj_size_set(200, 100),
 evas_obj_visibility_set(EINA_TRUE));

how is that impractical to use? how is it ugly?

i've already said that eo_do is not ioctl() - it's vastly different since it
doesnt rely 

Re: [E-devel] eo and efl

2012-12-30 Thread Henrique Dante
On Sun, Dec 30, 2012 at 9:28 PM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:06 AM, Henrique Dante hda...@profusion.mobi 
 wrote:
  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.

 It took me time to understand what you mean by definition. My

 A definition is a declaration that includes the element's content.

 understanding of your complaint is that you don't like virtual. cscope

 The way you are saying suggests that I don't like some part of object
orientation, which is false. I was strictly referring to the
implementation of Eo and its influence on development.

 will never be able to find the implementation (for me definition is

 Method calls that were not polymorphic, from concrete classes, were
made polymorphic with Eo. And in this case, polymorphic means
explicitly referenced by an ID. That's the virtual I didn't like. But
even if I liked it, it would have broken jump-to-definition the same
way.

 The problem you mentioned was restricted to a (small ?) subset of
methods, the ones derived from base classes. Now the whole libraries
have this problem.

 the prototype, that's why I was confused) at compile time, because it

 That's a declaration.

 is determined at runtime. The same problem exist with C++ and people

 No idea how that's done in C++. I think cscope works with C++ by
luck. However in an OO language, a method call bound to a concrete,
bottom-of-hierarchy, instanced object should be enough to jump to
its definition, at compile time, even if the method is virtual (this
should only be harder if it's necessary to walk through the object
hierarchy). Anyway, jumping to definition of a virtual method with
cscope on a C++ project can be done with 1 search, not 2.

 think that virtual is useful somehow.

 Not sure why you're talking about the concept of virtual. My comment
was about noticing that developers might avoid EFL because Eo (not OO)
has negative effects on development.


 In fact we need virtual today in EFL for at least to case, for at
 least to case that I know of. First geometry get on Evas_Object_Text
 and second for all the *_file_set that lurk around, have the same
 prototype and do the almost the same think, but just exist to confuse
 the developer.

 That looks like there are too few cases to consider it as a benefit.

 Repeating again, I sent the comment to sugest that Eo could have a
negative acceptance by developers.


 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.

 Did you try Daniel's gdb script for that task ?

 No idea what it is.

 --
 Cedric BAIL

 --
 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

 There's a Microsoft ad in your e-mail.

 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

--
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_122412
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread David Seikel
On Mon, 31 Dec 2012 09:44:50 +0900 Cedric BAIL cedric.b...@free.fr
wrote:

 On Sat, Dec 29, 2012 at 3:04 PM, David Seikel onef...@gmail.com
 wrote:
  On Sat, 29 Dec 2012 02:14:07 +0100 Cedric BAIL cedric.b...@free.fr
  wrote:
  On Fri, Dec 28, 2012 at 11:55 PM, David Seikel onef...@gmail.com
   However, I've just wasted a whole day tracking down that I was
   passing an Evas_Object to a function that needed an Evas.  It
   compiled and worked fine under the merged efl tree, but not on
   EFL 1.7.4.  Under 1.7.4 there was no complaints, just missing
   text.
 
  This is cleary a bug, it should have triggered a critical warning
  at run time. Care to share which function ?
 
  edje_object_add()
 
  The client is coming around tonight, and now I'm a day behind.  So
  I'm not gonna be spending any more time beating at it to help you
  diagnose things today.  The fact that it just worked perfectly with
  no error messages in merged efl tree is what took all the time
  tracking down, coz I was looking everywhere else to find the
  problem.  lol
 
 The problem is that it should work with EFL tree. I tested it here and
 definitively edje_object_add(Evas_Object *parent) does work. It does
 have the same behavior has elm_*_add function there. Before it was not
 allowed to pass an Evas_Object instead of an Evas canvas, now it is.
 So this is not a bug, but an evolution so that all our API match Elm
 API. Does that explain the behavior you did get ?

That explains the behaviour.  It just did not help to track down the
problem I had.  Perhaps this evolution should be documented?

I do the major development for this embedded project on my workstation,
then later double check it on an emulator, then test it on the real
hardware.  It's nice and quick using the workstation, but very slow to
make the version for the emulator and hardware.  The hardware has to
use the latest EFL released tarball, but recently I've been using merged
EFL tree on my workstation.

My problem is solved now, and the client is happy.  I get the rest of
the year off now.  All 11 hours of it.  lol

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
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_122412___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread David Seikel
On Mon, 31 Dec 2012 10:20:21 +0900 Cedric BAIL cedric.b...@free.fr
wrote:

 On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
 barbi...@profusion.mobi wrote:
  On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL cedric.b...@free.fr
  wrote:
  On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
  lucas.demar...@profusion.mobi wrote:

snip
 
  Bindings: I'm still to see that for real, but IMO it will make
  bindings worse. Also, people tend to think of bindings as a simply
  expose C functions in that language 1:1. This is horrible, you're
  developing for some language and you must cope with that language's
  style as much as possible. If the work to make the Python or JS
  bindings were just to generate 1:1, it would be better, but we took
  the time to think how to match language nicely.
 
 This is debatable. I do think that a 1:1 binding is fine as it provide
 an easy and sure path with time. Still there is clearly a need to
 implement a layer in the binded language to abstract it and make it
 feel like a native JS, Python, whatever API. You may not have a 1:1
 binding in Elev8, but I think you are doing a higher up layer in JS
 with EasyUI that could have been an abstraction between a 1:1 binding
 and the JS world. I also think that this way the binding would have a
 much easier time to provide a stable API and the script could just
 include the EasyUI layer they used for development. That one would
 have worked on every version of the binding without any breakage ever
 and it would have make the life of maintaining that binding much more
 easy.
 
  For bindings, the worse part here is that you'll never be able to
  construct va_list then you'll never be abe to expose eo_do() itself.
 
 It's not worse, it just limiting and sad. You will be limited to use
 only one function call even when you have all the value needed to do
 much more... I also would have liked a way to bind that.
 
  Then it's like fixing a problem that is not broken.
 
 Seriously ? Our binding are massively behind. We have barely one
 maintained binding, JS and a few other that are slowly dying. If half
 of our API was present in them, I would be happy, but that's far from
 being the case. So what is the status of the Perl, Python, Ruby, Go
 and all other bindings ? Tell me they are all great, cover 80% of our
 API (I am not even asking for 100%) and well maintained.

The Lua bindings are great, well maintained, but only cover a small
percentage of EFL API.  They also try to leverage Lua ways of doing
stuff to make it easy for Lua scripters, it's not exactly a 1:1
binding.  It's close to 1:1 though.  It's not slowly dying.  :-P

I would love to resurrect my ancient RAD tool and have some higher
level stuff for edje Lua, but I suspect Raster would veto that.  I'm
not ready to do that yet anyway, so will leave that for a later
discussion.

The textblock API is kinda scary huge, that's why I left it out last
time I was adding Lua bindings.  Which bit me last week when I was
considering a design that would use textblock from Lua.  lol

BTW, no one answered my previous question - will I have to redo the Lua
bindings to suit eo now?

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
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_122412___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread David Seikel
On Mon, 31 Dec 2012 10:33:30 +0900 Carsten Haitzler (The Rasterman)
ras...@rasterman.com wrote:

snip

 eo to some very minor extent does kind of invent a new lang within
 c. i mulled the idea of an added pre-processor at compile time to be
 able to add things like namespacing and cutting down typing fluff but
 others rejected the idea. it didn't happen - ok. fair enough. it'd be
 c PLUS some efl speciic language extensions in a preprocessor much
 smarter than cpp. c++ would entail a massive change much more
 invasive than eo and it'd come with other side-effects too like the
 complaints of build times and memory needed just to build efl from
 eveyr dev. your complaints herew oudl jsut morph into other peoples
 complaints about this.

One other problem with a change to C++, I would leave, and I suspect
many others would to.  Though I'm sure there would be an influx of new
C++ developers to compensate.  It's not that I don't know C++, I've
been doing C++ programming professionally for over a decade.  I just
much prefer C to C++.  Very strongly prefer.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
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_122412___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread David Seikel
On Mon, 31 Dec 2012 01:24:03 -0200 Henrique Dante
hda...@profusion.mobi wrote:

 On Sun, Dec 30, 2012 at 9:28 PM, Cedric BAIL cedric.b...@free.fr
 wrote:

snip

  --
  Cedric BAIL
 
  --
  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
 
  There's a Microsoft ad in your e-mail.
 
  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
 
 --
 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_122412
 ___
 enlightenment-devel mailing list
 enlightenment-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Oh look, there's a Microsoft advert in your email to.  There likely
will be one in mine.  It gets added by the SourceForge mailing list.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
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_122412___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-30 Thread Cedric BAIL
On Mon, Dec 31, 2012 at 12:24 PM, Henrique Dante hda...@profusion.mobi wrote:
 On Sun, Dec 30, 2012 at 9:28 PM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:06 AM, Henrique Dante hda...@profusion.mobi 
 wrote:
  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.

 It took me time to understand what you mean by definition. My

  A definition is a declaration that includes the element's content.

Your definition is still vague when speaking about macro, prototype
and implementation.

 understanding of your complaint is that you don't like virtual. cscope

  The way you are saying suggests that I don't like some part of object
 orientation, which is false. I was strictly referring to the
 implementation of Eo and its influence on development.

 will never be able to find the implementation (for me definition is

  Method calls that were not polymorphic, from concrete classes, were
 made polymorphic with Eo. And in this case, polymorphic means
 explicitly referenced by an ID. That's the virtual I didn't like. But
 even if I liked it, it would have broken jump-to-definition the same
 way.

Jump to declaration is not broken and provide documentation, prototype
for said call. That what developer using EFL are looking for.

  The problem you mentioned was restricted to a (small ?) subset of
 methods, the ones derived from base classes. Now the whole libraries
 have this problem.

 the prototype, that's why I was confused) at compile time, because it

  That's a declaration.

 is determined at runtime. The same problem exist with C++ and people

  No idea how that's done in C++. I think cscope works with C++ by
 luck. However in an OO language, a method call bound to a concrete,
 bottom-of-hierarchy, instanced object should be enough to jump to
 its definition, at compile time, even if the method is virtual (this
 should only be harder if it's necessary to walk through the object
 hierarchy). Anyway, jumping to definition of a virtual method with
 cscope on a C++ project can be done with 1 search, not 2.

So now, I don't follow you anymore. Jumping to the prototype of a
virtual in C++ work exactly the same way it work in C. At least from
an user of the API. I think I now do understand what you mean. You are
doing development inside EFL and try to find the macro that correspond
to a function implementation, right ?

As a matter of fixing that issue, couldn't you not instruct csope to
do the double jump for you ? It doesn't sounds like the problem is
more a limitation in your tool than a real issue.

 think that virtual is useful somehow.

  Not sure why you're talking about the concept of virtual. My comment
 was about noticing that developers might avoid EFL because Eo (not OO)
 has negative effects on development.

Maybe because your explanation is confusing. I was supposing you were
writing application with EFL and did use the EO API and where
complaining about that. Now I think you are trying to work inside EFL
with EO API and are complaining about some limitation of your tool.

 In fact we need virtual today in EFL for at least to case, for at
 least to case that I know of. First geometry get on Evas_Object_Text
 and second for all the *_file_set that lurk around, have the same
 prototype and do the almost the same think, but just exist to confuse
 the developer.

  That looks like there are too few cases to consider it as a benefit.

That's just the two first example that came to me without having the
need to search for anything. I am sure there is more. Making a non
virtual and virtual function call would have added a layer of
complexity and risk for API/ABI break later. It's a trade-of .

  Repeating again, I sent the comment to sugest that Eo could have a
 negative acceptance by developers.

It was difficult to understand the context of your remark. Now, I
think you are trying to get used to EFL source code and Eo is another
bit of complexity in that picture. I guess you never looked at GObject
:-) In all object model implemented in C, there is some boiler plate
like that. Eo come with its own.

 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.

 Did you try Daniel's gdb script for that task ?

  No idea what it is.

efl/data/eo/eo_step.py.

 --
 Cedric BAIL

 --
 Master Visual Studio, SharePoint, 

Re: [E-devel] eo and efl

2012-12-30 Thread daniel.za...@samsung.com
On 12/31/2012 06:15 AM, Cedric BAIL wrote:
 On Mon, Dec 31, 2012 at 12:24 PM, Henrique Dante hda...@profusion.mobi 
 wrote:
 On Sun, Dec 30, 2012 at 9:28 PM, Cedric BAIL cedric.b...@free.fr wrote:
 On Sun, Dec 30, 2012 at 12:06 AM, Henrique Dante hda...@profusion.mobi 
 wrote:
   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.
 It took me time to understand what you mean by definition. My
   A definition is a declaration that includes the element's content.
 Your definition is still vague when speaking about macro, prototype
 and implementation.

 understanding of your complaint is that you don't like virtual. cscope
   The way you are saying suggests that I don't like some part of object
 orientation, which is false. I was strictly referring to the
 implementation of Eo and its influence on development.

 will never be able to find the implementation (for me definition is
   Method calls that were not polymorphic, from concrete classes, were
 made polymorphic with Eo. And in this case, polymorphic means
 explicitly referenced by an ID. That's the virtual I didn't like. But
 even if I liked it, it would have broken jump-to-definition the same
 way.
 Jump to declaration is not broken and provide documentation, prototype
 for said call. That what developer using EFL are looking for.

   The problem you mentioned was restricted to a (small ?) subset of
 methods, the ones derived from base classes. Now the whole libraries
 have this problem.

 the prototype, that's why I was confused) at compile time, because it
   That's a declaration.

 is determined at runtime. The same problem exist with C++ and people
   No idea how that's done in C++. I think cscope works with C++ by
 luck. However in an OO language, a method call bound to a concrete,
 bottom-of-hierarchy, instanced object should be enough to jump to
 its definition, at compile time, even if the method is virtual (this
 should only be harder if it's necessary to walk through the object
 hierarchy). Anyway, jumping to definition of a virtual method with
 cscope on a C++ project can be done with 1 search, not 2.
 So now, I don't follow you anymore. Jumping to the prototype of a
 virtual in C++ work exactly the same way it work in C. At least from
 an user of the API. I think I now do understand what you mean. You are
 doing development inside EFL and try to find the macro that correspond
 to a function implementation, right ?

 As a matter of fixing that issue, couldn't you not instruct csope to
 do the double jump for you ? It doesn't sounds like the problem is
 more a limitation in your tool than a real issue.

 think that virtual is useful somehow.
   Not sure why you're talking about the concept of virtual. My comment
 was about noticing that developers might avoid EFL because Eo (not OO)
 has negative effects on development.
 Maybe because your explanation is confusing. I was supposing you were
 writing application with EFL and did use the EO API and where
 complaining about that. Now I think you are trying to work inside EFL
 with EO API and are complaining about some limitation of your tool.

 In fact we need virtual today in EFL for at least to case, for at
 least to case that I know of. First geometry get on Evas_Object_Text
 and second for all the *_file_set that lurk around, have the same
 prototype and do the almost the same think, but just exist to confuse
 the developer.
   That looks like there are too few cases to consider it as a benefit.
 That's just the two first example that came to me without having the
 need to search for anything. I am sure there is more. Making a non
 virtual and virtual function call would have added a layer of
 complexity and risk for API/ABI break later. It's a trade-of .

   Repeating again, I sent the comment to sugest that Eo could have a
 negative acceptance by developers.
 It was difficult to understand the context of your remark. Now, I
 think you are trying to get used to EFL source code and Eo is another
 bit of complexity in that picture. I guess you never looked at GObject
 :-) In all object model implemented in C, there is some boiler plate
 like that. Eo come with its own.

 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.
 Did you try Daniel's gdb script for that task ?
   No idea what it is.
 efl/data/eo/eo_step.py.
eo_step has been committed in revision 80760. Check the log to 

Re: [E-devel] eo and efl

2012-12-29 Thread Michael Blumenkrantz
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 + 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 

Re: [E-devel] eo and efl

2012-12-29 Thread Henrique Dante
On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler ras...@rasterman.com wrote:
 On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-29 Thread The Rasterman
On Sat, 29 Dec 2012 13:06:25 -0200 Henrique Dante hda...@profusion.mobi said:

 On Sat, Dec 29, 2012 at 12:48 AM, Carsten Haitzler ras...@rasterman.com
 wrote:
  On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-29 Thread Vinícius dos Santos Oliveira
2012/12/29 Carsten Haitzler ras...@rasterman.com

 reality is day in and
 out people turn up looking at efl as a single unit.


When will EFL be a single unit? What release?

I think I'll have free time to help with the C++ binding in a few months.

-- 
Vinícius dos Santos Oliveira
https://plus.google.com/118295250366112843114
http://vinipsmaker.wordpress.com/

Linux user #481186

Majoring in Computer Science (UFAL)
--
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


Re: [E-devel] eo and efl

2012-12-29 Thread The Rasterman
On Sat, 29 Dec 2012 21:39:13 -0300 Vinícius dos Santos Oliveira
vini.ipsma...@gmail.com said:

 2012/12/29 Carsten Haitzler ras...@rasterman.com
 
  reality is day in and
  out people turn up looking at efl as a single unit.
 
 
 When will EFL be a single unit? What release?
 
 I think I'll have free time to help with the C++ binding in a few months.

well we're already well on the way to having a single src tree. this may be
many releases down the road until we build single libefl.so's - it's still
debatable if we make 1 or to eg libeflcore.so libeflui.so etc. to split things
involved in ui from core back-end thigs that are useful for non-ui stuff like
servers etc. - but the first step is a single tree.

-- 
- 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. 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


[E-devel] eo and efl

2012-12-28 Thread Lucas De Marchi
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.

 - *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.

 - 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

 - 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

--
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of 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_122812
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-28 Thread Michael Blumenkrantz
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?

--
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of 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_122812
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-28 Thread David Seikel
On Fri, 28 Dec 2012 22:31:18 + Michael Blumenkrantz
michael.blumenkra...@gmail.com wrote:

 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?

I'll add my two cents worth.

Initially I think I was keen on the idea, but was waiting to see what
the implementation was like.  It did worry me that we seemed to be
getting more than one OO system being worked on at the same time.

However, I've just wasted a whole day tracking down that I was passing
an Evas_Object to a function that needed an Evas.  It compiled and
worked fine under the merged efl tree, but not on EFL 1.7.4.  Under
1.7.4 there was no complaints, just missing text.

So today, I don't like the implementation.  I've not actually studied
it though, just pissed off after today's wasted work.  There may be
things about it I actually like if I bother to look at it.  lol

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of 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_122812___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] eo and efl

2012-12-28 Thread Cedric BAIL
Hello,

On Fri, Dec 28, 2012 at 11:17 PM, Lucas De Marchi
lucas.demar...@profusion.mobi wrote:
 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.

It does, just everything is not done yet. See below.

 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.

Why ? You have less to type than before and you can now mix function
call from different name space. It does bring benefit by reducing the
need to check EINA_MAGIC for every API call for example. It still
provide type checking to some extent at compile time. It also open up
some load time improvement by reducing the number of symbol to link.
Later on we can split the enum and the legacy api in two library, so
application that only use eo_do will have the benefit of a faster
startup time.

By having one entry point we can now improve our debugging infra quite
a lot. For example, instead of returning pointer, we can return an ID
and check if it is still valid before touching it avoiding safely all
use after evas_object_del for example. We now have weak reference and
refcounting.

There is also some possibility to reduce memory usage and run some gc
to compact memory as needed.

  - eo_do() is the userspace incarnation of ioctl() - search on LKML to
 see how it's hated there.

As far as I know ioctl doesn't have any type checking at compile time.

  - *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.

I did benchmark at every point when this was added in trunk. You will
see some patch from me in evas_render code that was linked to some
speed regression. Over all expedite suffer a less than 5% slow down
(without using directly eo_do API).

  - 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.

C++ is not really sweeted for ABI/API stability ( for reference :
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++
). With EO, we only have two rules to follow: only add new enum at the
end of the enum list and never remove any inheritance link. Every
think else is good to go.

That's of course without talking about startup time...

And also live debugging feature. There is an ongoing work on
integrating clouseau and eo. This mean we will be able to also walk
the list of all live object in a running program. For large program
like Enlightenment, this open up the possibility to check how many
idler, timer, animator, ... are sitting around and how we can optimize
our stack. That's why moving Ecore to Eo make sense. One infra that
help every one. In fact Eo will help us a lot in writing an EFL IDE.

  - why is it any better than the smart object we had all these years?
 Why not improve that instead of replacing with eo?

Because smart object is really far from any useful object model. No
multi inheritance. Highly tied to evas_object... I will let you
continue on that list, just look at Eo feature and you will see
everything that smart object are lacking and can't get.

  - run elementary_test with EINA_LOG_LEVELS=5 and see the
 construction/destruction party

That is something I think is annoying to. It is clearly to much
verbose for nothing, should be fixed in my opinion.

  - 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)

Yes, in C++ you can't change a returned type ever or it break ABI/API.
That's a C++ issue. Regarding C++, it is now much more easy to provide
a clean binding to EFL that will have much less chance to have his
ABI/API break.
--
Cedric BAIL

--
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with 

Re: [E-devel] eo and efl

2012-12-28 Thread Cedric BAIL
On Fri, Dec 28, 2012 at 11:55 PM, David Seikel onef...@gmail.com wrote:
 On Fri, 28 Dec 2012 22:31:18 + Michael Blumenkrantz
 michael.blumenkra...@gmail.com wrote:
 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?

 I'll add my two cents worth.

 Initially I think I was keen on the idea, but was waiting to see what
 the implementation was like.  It did worry me that we seemed to be
 getting more than one OO system being worked on at the same time.

 However, I've just wasted a whole day tracking down that I was passing
 an Evas_Object to a function that needed an Evas.  It compiled and
 worked fine under the merged efl tree, but not on EFL 1.7.4.  Under
 1.7.4 there was no complaints, just missing text.

This is cleary a bug, it should have triggered a critical warning at
run time. Care to share which function ?
--
Cedric BAIL

--
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


Re: [E-devel] eo and efl

2012-12-28 Thread The Rasterman
On Fri, 28 Dec 2012 20:17:14 -0200 Lucas De Marchi
lucas.demar...@profusion.mobi said:

 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.

it makes no sense to put in elm unless the base of efl also has it. a whole
POINT of eo is so you can do things like attached a timer as a child to button
and have it auto-deleted when the button is. in the end this all requires that
anything you want to work this way has to be an eo obj. this is a result of
real life problems with programmers doing things like making animators and
timers and simply never cleaning them up when the parent object they worked
on was deleted. they neve bothered to attach a del calback and track these
things and then others end up with their days wasted hunting down these bugs
because there wasn't a sensible and easy way to bind such thnigs together.

 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.

anyting systray related makes my eyes bleed.

  - 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.

disagree. what we can do now is ammortise call costs

eo_do(obj, move(10, 20), resize(30, 50), color(255, 128, 0, 255), show());

we have only 1 entry cost (eo_do). all the magic checks and so on are done
onces for all of move+resize+color+show. there is a good reason for this. one
of the intents of eo is to indirect object ptrs. frankly as above. people who
can't read backtraces properly or handle memory well are wasting efl devs time
aain and again. i want object ptrs gone. that means obj * is actually going
to become an ID and then an indirect table lookup. it's set up in such a way
that it then impossible to access memory accidentally from an object handle.
you either access valid memory or you know its empty. this raises the entry
cost. offsetting that with multi-call per entry evens things out. my only
unhappiness is lack of namespacing in c so we could have shotened the func
macros to the above.

  - eo_do() is the userspace incarnation of ioctl() - search on LKML to
 see how it's hated there.

vastly different. ioctl is used as a one-thing-at-a-time stuff every func on
the planet into ioctl via params. eo_do() is a protocol buffer. like write()
but the compiler builds the protcol buffer for you on the stack which is much
nicer. no it's not async. but its not ioctl(). very far from it. the only
similarity is that it has a single entry point parent. (well actuallt you can
do the same on eo_add - pass multiple method calls WHILE adding the obj so once
returned the obj is already set up).

  - *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.

benchmarks have been done - it depends what you benchmark and how. it's in the
0-10% range of overhead. this was already expcted and a price we know we have
to pay in return for other things. if you USE is as 1 eo_do() == 1 old
evas/edje etc. func - then yes - expect that overehad. if you make use of the
multi-call stuff.. overhead drops a lot. in fact you may begin to gain as we
currently do magic number and ptr checks for every efl call. eo will ammortise
its higher check cost over N calls, as long as you try and kep N  1 then
you're on the path to winning.

  - 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.

c++ would be a sledgehammer solution and comes with lots of downsides of its
own. other languages too. the fact is we can slide eo in without rewriting in
another language. the only thing really missing is namespacing.

  - why is it any better than the smart object we had all these years?
 Why not improve that instead of replacing with eo?

see above. need ot lower down. also smart objects are evas objects. evas
objects are big, fat and bulky. they consume a lot of memory.

  - run elementary_test with EINA_LOG_LEVELS=5 and see the
 construction/destruction party

that was there already. we alloc and free events all the time. we construct and
destruct 

Re: [E-devel] eo and efl

2012-12-28 Thread The Rasterman
On Fri, 28 Dec 2012 22:31:18 + 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 

Re: [E-devel] eo and efl

2012-12-28 Thread David Seikel
On Sat, 29 Dec 2012 02:14:07 +0100 Cedric BAIL cedric.b...@free.fr
wrote:

 On Fri, Dec 28, 2012 at 11:55 PM, David Seikel onef...@gmail.com
 wrote:
  On Fri, 28 Dec 2012 22:31:18 + Michael Blumenkrantz
  michael.blumenkra...@gmail.com wrote:
  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?
 
  I'll add my two cents worth.
 
  Initially I think I was keen on the idea, but was waiting to see
  what the implementation was like.  It did worry me that we seemed
  to be getting more than one OO system being worked on at the same
  time.
 
  However, I've just wasted a whole day tracking down that I was
  passing an Evas_Object to a function that needed an Evas.  It
  compiled and worked fine under the merged efl tree, but not on EFL
  1.7.4.  Under 1.7.4 there was no complaints, just missing text.
 
 This is cleary a bug, it should have triggered a critical warning at
 run time. Care to share which function ?


edje_object_add()

The client is coming around tonight, and now I'm a day behind.  So I'm
not gonna be spending any more time beating at it to help you diagnose
things today.  The fact that it just worked perfectly with no error
messages in merged efl tree is what took all the time tracking down,
coz I was looking everywhere else to find the problem.  lol

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master Visual Studio, SharePoint, SQL, 

Re: [E-devel] eo and efl

2012-12-28 Thread David Seikel
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 + 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.

Ah, so I'd have to redo the Lua bindings to use eo soon?  That will at
least get my hands dirty with it, then I can give a proper whinge, er I
mean opinion.

Introspection is good, I love introspection.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
Master 

Re: [E-devel] eo and efl

2012-12-28 Thread David Seikel
On Sat, 29 Dec 2012 11:28:29 +0900 Carsten Haitzler (The Rasterman)
ras...@rasterman.com wrote:

 On Fri, 28 Dec 2012 20:17:14 -0200 Lucas De Marchi
 lucas.demar...@profusion.mobi said:
 
   - 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.
 
 c++ would be a sledgehammer solution and comes with lots of downsides
 of its own. other languages too. the fact is we can slide eo in
 without rewriting in another language. the only thing really missing
 is namespacing.

EFL trying to do proper OO in C rather than C++ is one of the reasons I
like working with EFL.  C++ and C# might be the flavour of the decade,
but it's too esay to write insane code in them, not to mention the other
downsides that raster also did not mention.  B-)

A lot of my planned virtual world work is ripping out insane C++ and C#
code and replacing it with sane C code.  Coz almost all of the existing
code is insane C++ and C#.  Yes, it's possible to write sane C++ and
C#, but judging by the quality of most of the code I have seen, it must
be really hard to do so, especially in very large multi programmer
projects.

It's also possible to write insane C code, it just tends to bite
you harder when you do, so you may actually notice and fix it.  :-P

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
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