Page MenuHomePhabricator

Eo History
Updated 125 Days AgoPublic

Where did this whole Eo thing come from anyway? This all started with the intent to do 3 main things:

  1. Bring together slightly different designs and APIs throughout EFL and make them use the same common API. Instead of ecore_timer_del() for timers and ecore_animator_del() for animators and evas_object_del() for Evas objects... have a single delete e.g. eo_del(). Have all objects reference counted the same way, with the same parent/child relationship, the same way of doing events+callbacks (Ecore_Evas being different to Ecore events being different to Evas core events and Evas smart events etc. etc.
  2. Make EFL safer by having better lifetime management (reference counting above), xrefs and... EOID indirection. We no longer wanted to see crashes because someone passed a garbage pointer as an object into an EFL call somewhere.
  3. Since our API was now described cleanly, we could generate bindings to e.g. C++ to map onto the new cleaner EFL API 1:1.

The plan was to just massage EFL's API just enough to get the above stuff to work, so we'd have the same text_set() on every object that you could set a label or text content on. This is why eolian can generate legacy API's. The idea was that we'd massage it so legacy is a thin wrapper over a cleaner EO version of the API with de-duplication applied to functions/methods and then eventually can be separated out into legacy compatibility API's with a cleaner EO based EFL going forwards and with 2.0 losing the legacy API support in EFL itself by default. this logically also would lead to applications being easy to port over as a "smart sed script" (e.g. Coccinelle) could almost do it by mapping the right calls to the new EO ones.

This unfortunately didn't happen. We got feature creep. Promises were never intended to be there. We didn't intend to redesign all of EFL's API's to be so drastically different. We didn't intend to even create any new classes other than a very few necessary ones. This feature creep basically has extended the project drastically and now has it in a position where the only way is forwards through it.

Last Author
raster
Last Edited
Nov 19 2018, 10:03 AM
Projects
Subscribers
None