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