The road to Enlightenment
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 logo]](https://static.lwn.net/images/2011/enlightenment-logo.png)
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
![[Ordissimo]](https://static.lwn.net/images/2011/enlightenment-ordissimo-sm.jpg)
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.
Index entries for this article | |
---|---|
GuestArticles | Moraes, Luis Felipe Strano |
Posted Aug 5, 2011 12:54 UTC (Fri)
by lfelipe (guest, #50478)
[Link]
Posted Aug 8, 2011 11:43 UTC (Mon)
by nye (subscriber, #51576)
[Link]
Interesting article; I had no idea EFL was being used so widely.
>With the release of EFL 1.0, one can only hope that 2011 might still see an E17 release being announced.
I remember Slashdot had an April fool in 2002 IIRC, claiming that E17 had been released. At the time it was considered so far behind schedule that it looked like it might not ever actually happen.
It looks like the old joke that it E17 would be released shortly after Duke Nukem Forever turned out to be *true* :).
Posted Aug 11, 2011 12:11 UTC (Thu)
by runciter (guest, #75370)
[Link] (4 responses)
Posted Aug 11, 2011 12:31 UTC (Thu)
by nye (subscriber, #51576)
[Link] (3 responses)
Yes, Enlightenment was used before that but wasn't a ubiquitous choice because it was considered absurdly big and bloated when all you wanted was a window manager (how things change).
IIRC Sawfish was an attempt at getting a standard WM that did enough to be useful for nearly everyone but without all the bells, whistles, and gongs which made Enlightenment so heavyweight.
Posted Aug 11, 2011 14:28 UTC (Thu)
by nix (subscriber, #2304)
[Link] (2 responses)
Posted Aug 11, 2011 18:56 UTC (Thu)
by dgm (subscriber, #49227)
[Link] (1 responses)
<flame>
----8<------
Still an early mock-up, but nearly complete feature-wise!
Posted Aug 13, 2011 2:34 UTC (Sat)
by elanthis (guest, #6227)
[Link]
Posted Aug 11, 2011 22:56 UTC (Thu)
by discomfitor (guest, #78114)
[Link]
The road to Enlightenment
http://labs.hardinfo.org/mindcrisis/2011/08/04/state-of-w...
The road to Enlightenment
Window manager
Window manager
Window manager
Window manager
Let me introduce the first mock up of the coming GNOME 5:
gboolean gnome (void)
{
return FALSE;
}
----8<-------
</flame>
Window manager
Time for some shameless plugs!The road to Enlightenment
Eeze is a device abstraction layer for the EFL which interfaces with udev to provide methods for managing and manipulating devices.
Azy is an HTTP connection management library which specializes in both XML and JSON RPC and can create both servers and clients.
Esskyuehl is an SQL client library which allows asynchronous connection and querying for MySQL, PostgreSQL, and Drizzle using the same api.