The road to Enlightenment

Benefits for LWN subscribers The primary benefit from subscribing to LWN is helping to keep us publishing, but, beyond that, subscribers get immediate access to all site content and access to a number of extra site features. Please sign up today!

The Enlightenment window manager, first released in 1997, is finally reaching its long-awaited 0.17 release. Work on this release began almost ten years ago, and involved a huge rewrite (or three) of the window manager, plus the creation of several libraries, the core of which are called Enlightenment Foundation Libraries, or EFL.

Enlightenment is well-known in the Linux community mainly for being extremely lightweight and for displaying impressive graphical effects even in its earlier incarnations from more than a decade ago. It originally started as an attempt to provide a more graphically stimulating environment for Unix systems and was even used as the window manager for GNOME before Metacity. Enlightenment 0.16 was released in 2000 and is still actively maintained, but the majority of the developer community switched focus to the new version and the development of the EFL. Due to the attention to performance by the community, led by Carsten Haitzler, the EFL have found a niche in embedded systems.

Enlightenment 0.17, or E17, has been stable for quite some time and is used by many, but since it was never released officially, support for it on distributions is quite limited so far. The Enlightenment community has lately been engaged in releasing version 1.0 of the EFL, which happened in January. Currently, work is ongoing on two fronts:

Readying E17 for a release, which involves closing a few remaining issues

Preparing EFL 1.1, which will fix several bugs and have much improved documentation.

What are the foundation libraries?

During the course of creating E17, a bunch of libraries were devised (and quite a few were later deprecated) to ease the development of the new window manager. Given the attention to performance during the development of the libraries, they have now become a major alternative for use in programming embedded systems.

The first library is Eina, which is a library used by most of the others that implements basic types, provides memory pools for allocation with several different policies, and provides other common services. It has optimizations such as "stringshares" which allocate memory only once for each string, thus avoiding increased memory usage due to string duplication in the various layers of the program.

Eet is a very simple library for data serialization, encoding, and access. It's used as a really fast database in several applications. Ecore, as it name implies, provides the main infrastructure for applications such as the main loop, allowing EFL programs to deal with both user and system generated events. It also offers other low-level services, such as threads and network connections.

Evas, a stateful canvas for drawing is one of the primary reasons why the EFL are so fast, by employing optimizations first introduced in its predecessors (imlib1 and imlib2). In addition, Evas has faster rescaled JPEG loading by using image compression techniques such as macroblocks and all the SSE and NEON multimedia extension optimizations you could ask for.

And finally Edje, a powerful theming library that allows for rich graphical UIs, which was one of the inspirations for Qt's QML (itself based on the previous QEdje). It provides a secure and sandboxed UI, and also has support for scripting in Embryo (based on the language PAWN) and Lua.

There are quite a few more libraries available on the Enlightenment SVN, but the ones above are the most important. There is also work being done on a new widget toolkit called Elementary, which uses all the other libraries as its base and will be the basis of future work after the release of E17. Elementary is already quite mature and should see its own 1.0 release soon.

The libraries in question are heavily optimized, and provide support for several different architectures and graphical backends such as X11, OpenGL, SDL, DirectFB, and Windows XP and CE, among others.

Where the EFL are being used

Currently there are various and diverse projects using the EFL as base. From the recently announced Ordissimo, which is a Linux distribution targeting the elderly population, to home automation systems like the one created by Calaos and featured in a video. Millions of set top boxes were deployed by Free.fr using EFL, and recently a big player in the appliances industry has started selling a refrigerator with a touchscreen interface developed using the new Elementary toolkit.

Canonical sponsored an EFL version of its netbook-launcher targeting ARM devices that have no 3D acceleration (the official version being based on Clutter and depending on OpenGL). It had as many graphical effects, if not more, than did its counterpart and also showcased how powerful Edje is by allowing completely different UIs to be displayed by only changing the theme. The most recent big player to start supporting the EFL is Samsung, which is not only providing patches to the libraries and creating new widgets, but has also engaged with ProFUSION in improving the documentation available for programmers and in developing a new WebKit port to the Enlightenment libraries. Those interested in learning more about this new port should check out the information available on the official wiki. The LiMo foundation, an industry consortium dedicated to creating a Linux-based operating system for mobile devices, has also announced that the EFL will be an integral component of the LiMo 4 platform.

Status of E17 and helping out

E17 is currently quite stable, and a few distributions are already shipping packages, albeit not always as up-to-date as one could hope. This is one of the things that is planned for the impending release: having better engagement with distributions so that E17 becomes available to a much larger audience.

There are several different modules and plugins available, including support for making it a tiling window manager and also for compositing (both in software and OpenGL). Due to the focus on optimizations mentioned before, one can pretty much bet that E17 will work really well even on older hardware (or newer hardware with CPU limitations). Moreover there is also support to spread rendering to multiple cores, so that applications written using the EFL (E17 included) can scale easily from running on a 200Mhz MIPS to an eight-core Xeon running at 2.3Ghz per core.

Regarding applications, work has begun on a few basic applications: Eve (a web browser based on WebKit-EFL), Enjoy (a music player), Envision (document reader), and EPhoto (photo manager). They are at differing levels of completion, but right now they are mostly being developed as showcases of how powerful the EFL are. Each application will have UIs targeting different devices (such as netbooks, desktops, tablets, and TVs) that completely change how the user interacts with them, but without changing the underlying code. Code for all of these applications is also on the SVN repository, but please be aware that they are mostly still fairly basic (and need more contributors).

Those who wish to test it can find instructions here, alongside information for specific distributions.

There are plenty of things to do for those interested in joining the Enlightenment community, but one of the things needed the most right now is for people to write documentation and to do testing and bug reporting. There is lots of low-hanging fruit available, so those interested in getting started should join the IRC channels #e (for users) or #edevelop (for developers) on Freenode and ask for more information. People who can help contributing with packaging for any distribution are also very welcome. There are also a couple of mailing lists used for discussion and there is more information on the official site.

Overall, Enlightenment has come a long way in recent years to become a stable and viable alternative to the more well-known libraries such as Qt and GTK+, especially for the embedded space. Documentation, which was severely lacking before, is being improved and should now be enough for newcomers to get going. With the release of EFL 1.0, one can only hope that 2011 might still see an E17 release being announced.

