EFL

Enlightenment Foundation Libraries, or EFL, are the set of libraries used to create the Enlightenment Window Manager DR17 (E17). This set of libraries is not restricted to X11 as Enlightenment WM itself.


 * http://www.enlightenment.org/
 * http://wiki.enlightenment.org/
 * http://trac.enlightenment.org/e



Libraries
Most used libraries follows, you can see them all at SVN:
 * Evas object-oriented and stateful 2D canvas, uses retained render mode and is very optimized, both with hardware acceleration with OpenGL and XRender and software. Ships with 32bpp and 16bpp native engines, but can downscale from 32bpp down to 1bpp with dithering on render time.
 * Ecore set of libraries that covers main loop with events, including UNIX signals, timers, file descriptors, animators, pollers (shared timers). It also contains integration code with X11, DirectFB, Win32/DirectDraw, MacOS/Quartz. Extra functionality are simple IPC and HTTP communication.
 * Edje is a super-theme engine, it builds on top of Evas, Ecore, Embryo, EET and others to provide powerful themes. With it your application themes are not restricted to just replace some images or changing some colors, you can radically change the look and feel. It can be thought as a mix of HTML, CSS and JavaScript. It's based on object states and transition between theirs states, so animations can be easily specified. State descriptions can use relative and absolute positioning, so your interfaces can be scalable yet pixel perfect.
 * Emotion is a media playback system integrated with Ecore and Evas. It ships with Xine, GStreamer and VLC engines.
 * Epsilon is an image and video thumbnailer, builds on top of Evas, Ecore and Emotion.
 * Eina basic data types, very optimized. Includes stringshare, lists, hashes and red-black trees.
 * EET data storage library and command line tool, provides ar/zip-similar storage and is optimized for reading. It can handle entry compression, signing and crypto. It bundles an easy to use C-struct serialization, so one can loads complex data from files directly to dynamically allocated C structs or persist them into files. Ideal to save user preferences in an optimized way, but still editable with regular tools/editors if you use  and  . It's used Edje to store theme resources, as fonts, images, descriptions and even embryo scripts.
 * Embryo is a tiny, simple and fast virtual machine that runs a C subset, derived from PAWN/SMALL.

Old Style Toolkits
Some more traditional toolkits were build on top of EFL but don't expose underneath technologies like Evas or Edje. They're targeted at form-like applications, just like GTK and Qt.
 * ETK, similar to GTK in API. not being actively developed anymore
 * EWL, more Model-View-Controller approach.

New Style Toolkits
Some new toolkits were born recently and makes more use of EFL concepts, not just exposing components like Evas and Edje, but truly mixing with them. So far we have two alternatives, but they will merge soon. See Rich GUI without pain ELC-E 2008 talk.
 * Elementary, targeted at phones, pdas and other touch screen devices. It was originally born as a port of E17 widgets.
 * Guarana, targeted at digital tv, media centers and other set-top boxes. Guarana is more than just widgets, it also covers module loader, MVC framework and more.

Demos and Videos

 * E17/Illume running on Palm Treo 650
 * E17/Illume running on Freescale iMX31
 * Guarana demo: Enjoy Media Player
 * Video of Gustavo Barbieri talk on EFL at Embedded Linux Conference Europe 2008. Slides are also available.