The State of the GUI
Jacob Shtokolov
jacob.100205 at gmail.com
Sat Oct 27 11:18:42 UTC 2018
On Wednesday, 24 October 2018 at 06:20:05 UTC, Adam Wilson wrote:
> I was reading the hijacked JAXLondon thread about GUI's and
> started replying but decided against hijacking the already
> hijacked thread again.
Sorry, I didn't read the entire thread (it's kinda big), but I
would agree that HTML (and its derivatives) is the most flexible
and most popular UI layout concept nowadays. Even GTK (and so
GNOME) is going this way using CSS and JavaScript.
If you guys are really discussing the possible future GUI
toolkit, I have some ideas in regards to this topic.
I see a lot of discussions there about OpenGL support, etc. There
is a really good project that is possible to use as a basis: EFL
toolkit.
Currently it is sponsored by Samsung, but it has the MIT license
(the core parts: Evas, Ecore, etc.) and is written in the bare C.
It's possible to take Evas as a basic stateful canvas to build
something HTML-like (or web-like). It supports different
rendering backends such as OpenGL, SDL, software rendering (CPU)
and is memory and CPU efficient.
So there is no need to build it from scratch.
Another thing is that web is moving towards component-oriented
concepts. The known examples are React.js, Vue.js, Google
Flutter, etc.
Imagine the UI framework that combines EFL's Edje functionality
with component-based concepts from Vue.js (for example). For
instance, take a look at this page:
https://vuejs.org/v2/guide/single-file-components.html and
imagine Dlang instead of JavaScript there (one-file components
are not so cool though, but it's possible to separate them into
*.html, *.css and *.js).
Component-based architecture automatically means that if you
don't use the Audio or Video elements (components), they will not
be compiled into your application, unlike CEF and other
Chromium-based frameworks where the things are already there no
matter if you use them.
This combination of libraries and concepts will give an advantage
to compile and run this code on all popular platforms (of course
if LDC project will finally add a stable iOS support).
Just a proposal.
More information about the Digitalmars-d
mailing list