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
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
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
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
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
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
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
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
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.
to post comments)