To focus on very specific items that you mentioned:

I did some exploration into using eo/lian in enlightenment a few years ago
and instability immediately proved that this was a waste of time. I have no
interest in revisiting or considering anything related to
eo/eolian/bindings/interfaces/etc until stable releases have shipped with
compatibility guarantees.

Your premise that enlightenment does not use elementary is false, and it
has been for a few years. The legacy e_widget apis remain, but widgets uses
elementary internally where possible. This was done to avoid having to
rewrite the entire gui at the same time as doing the widget conversion--a
separate and much larger task which is still pending. There are exceptions
to this, namely ilist (which would have required significant and invasive
rewrites to convert to genlist) and e_icon (which, at the time, provided
features which were not present in any single elm widget). All new code
added since then, e.g., gadgets, does not use e_widget apis.

I agree that binding support is useful, and I plan to provide support for
other languages in modules (again, I have no interest at all in discussing
or considering technical details of this until stable releases of related
apis are shipping). I do not, however, plan to rewrite any part of the core
using a language other than C.

On Sun, Apr 9, 2017 at 11:10 AM Gustavo Sverzut Barbieri <barbi...@gmail.com>
wrote:

> Hi all,
>
> Nowadays with a newborn daughter I have more time to think than to
> code (likely to remain like that for few more weeks), so I did think a
> bit more of our development process in the light of "how to make it
> faster, more reliable and easier to use".
>
> As most of you that join IRC at the same time as I do know, my idea is
> to use more of our high level features, including our high level
> languages. To elaborate:
>
> # Background
>
> Historically in E/EFL new features are developed based on needs, like
> Evas was created to address Enlightenments fancy graphics and
> particularly EFM... this also resulted in need for theme engine which
> resulted in EDB, EET, Edje... The main loop abstraction resulted in
> Ecore, the widgets need resulted in Elementary.
>
> However, also historically although the features are developed to
> address some needs they are not used up to their potential. For
> example, if you know Edje's potential you'd be amazed how much of that
> potential is wasted in E, with many layouts and design being done
> manually... Another clear example is Elementary vast widget library
> and Enlightenment itself not using it. Yet another that is currently
> being addressed is Evas x Ecore, although Ecore existence would
> simplify Evas immensely, we carried on without such strict dependency
> for more than a decade, which not only made Evas more complex, it also
> resulted in yet-another-library (ecore_evas) and many other spawns
> (ecore_input, ecore_evas_input...)
>
> Historically we have few apps other than our window manager, which as
> said above uses lots of low level APIs, and the few apps we have also
> use some sort of low level features, such as Terminology, Rage and
> even Ephoto. For instance, while we're creating Eo "MVC", no app is
> using that.. replicating stuff like file system walk/scan for files,
> then presenting them in list/grid views.
>
> In the last 10 years companies started to look more into EFL due its
> technical aspects, being used in Tizen/Samsung, Electrolux Fridge,
> Zodiac Aerospace infotainment, Calaos Home automation and so on. A
> common request is to improve its usability, which resulted in Eo and
> many bindings, from manual Python to JS/elev8 to now automatically
> generated Lua/JS/C++. However, none of them is used for real.
>
> Since most EFL developers came from previous GUI toolkit experience,
> we try to replicate what existed in here... this resulted in
> Elementary being an extremely huge set of widgets trying to do many
> features at once and that resulted in a hard to use, hard to customize
> experience. While in GTK/Qt (not QML!) you need to create a series of
> boxes/containers and then a button to have a button or icon on your
> screen, otherwise the positioning wouldn't be flexible/scalable... in
> EFL we do have Edje (also exposed via elm_layout) which allows you to
> do that in no-time... with the looks you want, matching what all these
> companies want (if you look at iOS/Android, most apps have their
> custom looks, rather than a "desktop look", which happened to
> influence most of desktop applications on Windows10 and MacOSX...).
> But we're trying to match the old GTK/Qt, with pre-canned solutions of
> all possible combinations and the result is that to theme a simple
> button you need to deal with multiple EDC Groups, Parts and Signals
> (icon, text, icon + text...). Net result is our code is much more
> complex than needed because we try to address an old need and this
> inhibits our potential usage of the new needs.
>
> [Personal experience here: from 2007 (pre-elementary) to 2014 I worked
> creating EFL-based products, all of them were "new UI" post-iPhone was
> released and Edje excelled to allow developers  to implement the
> fanciest designs in short time with excellent performance. From
> 2008-2014 we always evaluate Elementary, often we mix that with our
> Edje-based views, but what happens to be worth is mostly
> Genlist/Gengrid for large volume of information and Entry to handle
> text input. Buttons, Box, Table are very rarely useful when you need a
> fancy UI]
>
> What was done is unchangeable, no explanations on "why", no excuses
> are needed. But I'd like to change that to a brighter future.
>
>
> # Proposal
>
> With Eo becoming more mature and the new APIs getting out of beta, I'd
> like to take the opportunity to convert our usages to the highest
> possible language AND technology while porting.
>
> While most API was ported to Eo in a "simplistic" way, basically
> rewrapping the same code in Eo with different namespace, like using
> "efl_" and providing a different "legacy: xxx" prefix, some changed
> for real like my "efl_net" and "efl_io" classes to replace old
> ecore_con. Evas and Elementary also have some bigger changes, thus
> automatic or naïve ports are not recommended.
>
> During UI port, take the time to convert from manual traditional UI
> packing (create box, pack inside another box, with another box...
> setting alignments) to and Edje layout. You can use things such as
> EXTERNAL parts to automatically instantiate the widget for you, then
> you simply access them. Custom widgets can be exported by your app,
> then Edje just uses that, or you can use a SWALLOW and manually put it
> there. You can use tools such as eflete to visually do it... see your
> code be reduced by great margin, just care about feeding data and
> events to the proper parts!
>
> Eo also gives us automatic binding generation, then try to define your
> own classes for your code, this would get you some high level language
> to deal with in the rest of your code. For instance, when we think
> about Enlightenment, there are all the widgets that could be converted
> to use new Eo, but most of the dialogs and configurations have ZERO
> need to be written in C... however you can't access E_Zone, E_Config
> and the likes in Lua. If during that process we create Eo wrappers for
> those, we'd get the EOID pointer safety AND bindings, which would
> allow most settings and shelf/bryce gadgets to be written in high
> level languages, which are safer, faster and requires less code (to
> write and to maintain).
>
> Which brings me to my last point: we should adopt and use for REAL a
> binding. You all know my personal preference is Python, but in 11
> years I couldn't convince people to like it... so whatever people
> like, let's pick one language and use it as much as possible where
> appropriate (you're not rewriting the core of Evas in it...). It seems
> Lua is strong contender, and is very efficient, small and already a
> hard dependency... our docs are being generated by a lua script,
> etc...
>
> Last but not least, Edje is super nice for UI design, we have tools to
> edit it.
>
> # Commitments
>
> To address that I'd call the following commitments from the community,
> we can create a poll on phab to track popularity. My items are:
>
>  - Could we have a rule to favor "Elm_Layout" rather than Box/Table
> and old manual patterns, if possible having common layouts in
> Elementary itself, like "toolbar + content" or "toolbar + panel +
> content" kinds...
>
>  - Could we commit to create app internals in Eo? At least the core
> functionality that could allow high level languages in your app.
>
>  - Could we call "Lua is the official EFL binding and
> E/Terminology/Rage/Ephoto... uses it"?
>
>  - Could  we eliminate all custom FS -> List/View code paths and use
> the MVC that gives you that?
>
> From IRC talks it's clear that our technology is not there yet, of
> course Eo needs to be declared stable, eolian_lua needs some work and
> MVC is still immature... but my bet is that unless we commit to the
> above these will never happen, all that we get is more of the same,
> investing effort in multiple sites that do not benefit the rest of the
> platform (ie: FS->List/View in E, Ephoto, Rage... all with its perks),
> Lua bindings never getting "reliable" since there are no users, there
> are no users because it's not reliable...
>
> --
> Gustavo Sverzut Barbieri
> --------------------------------------
> Mobile: +55 (16) 99354-9890 <+55%2016%2099354-9890>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to