Development
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.
Brief items
Development quotes of the week
Collectfs: a trash collecting userspace file system for Linux
Collectfs, which is a filesystem in user space (FUSE) for Linux that seamlessly protects files from being clobbered accidentally, has been released. "It is not intended as a replacement for revision control or backups. The intention is to protect you during the between-times, when you're not covered by these other tools. [...] Any file that is overwritten by remove (unlink), move, link, symlink, or open-truncate is relocated to a trash directory (mount-point/.trash/). Removed files are date-time stamped so that edit history is maintained (a version number is appended if the same file is collected more than once in the same second)."
digiKam 2.0.0 has been released
The digiKam photo management tool has released version 2.0.0. "The road to version 2.0.0 took more than a year of heavy development. The team proudly announces the first release of the new generation of digiKam. This version features long awaited face detection and recognition, image versioning support, XMP metadata sidecar files support, big improvements in tagging and marking photos, reversed geo-tagging and many other improvements, including a total of 236 fixed bugs." LWN recently reviewed the release.
Genius 1.0.13 release
The Genius calculator application has made its "yearly tradition" release. "In any case, Genius is one of the oldest GNOME projects, it has been the original GNOME calculator before I got wild ideas about it doing absolutely everything. It is programmable, has a powerful language and handles many fun features including support for matrices, rational numbers, and nice 2D and 3D plotting."
KDE 4.7 is released
KDE 4.7 has been released with new features like improvements to Phonon, social semantic desktop components, a new integrated instant messaging application, and more. "In addition to the many new features described in the detailed release announcements, KDE contributors have closed over 12,000 bug reports since the last major releases of KDE software in January 2011. As a result, KDE software is more stable than ever before."
Google open sources LevelDB
Google has announced the release of LevelDB, "a fast persistent key-value store", under a BSD license. "
LevelDB is a C++ library that can be used in many contexts. For example, LevelDB may be used by a web browser to store a cache of recently accessed web pages, or by an operating system to store the list of installed packages and package dependencies, or by an application to store user preference settings. We designed LevelDB to also be useful as a building block for higher-level storage systems. Upcoming versions of the Chrome browser include an implementation of the IndexedDB HTML5 API that is built on top of LevelDB."
LibreOffice 3.4.2 for enterprise users
The Document Foundation (TDF) has announced the release of LibreOffice 3.4.2. This version has been declared enterprise ready, unlike previous versions that were aimed at testers and early adopters. "LibreOffice 3.4.2 fixes the majority of the most-important bugs identified by users in the previous version, and can be deployed for production needs by most enterprises."
Newsletters and articles
Development newsletters from the past week
- Caml Weekly News (August 2)
- PostgreSQL Weekly News (July 31)
- Tahoe-LAFS Weekly News (July 31)
CouchDB and SQLite creators introduce UnQL, a NoSQL query language (The H)
The H reports on the introduction of UnQL (UNstructured Query Language, pronounced "Uncle"), which is meant to be the SQL of the NoSQL movement. "CouchDB creator Damien Katz and SQLite creator Richard Hipp have been working on UnQL to create a higher level query language for NoSQL document databases. Katz says the specification 'stems from our belief that a common query language is necessary to drive NoSQL adoption in the same way SQL drove adoption in the relational database market'. Hipp notes that 'Unql builds upon our experience with SQL, supplementing that language with syntax and concepts appropriate for the unstructured, self-describing data formats of post-modern applications'."
Jokosher: A Completely Kosher Audio Multitool (LinuxInsider)
LinuxInsider reviews Jokosher, a multitrack audio editor. "Jokosher offers a solid list of features. Chief among its best assets is the interface. For example, the design has musicians in mind, so the terminology in the menus has a familiar ring. Of course, non-musicians might have to come up to speed with musicology phrases to reach a comfort zone with Jokosher."
Kde 4.7 Released And In The Wild (Linux Journal)
Michael Reed looks at KDE SC 4.7 on Linux Journal. "If you are a 4.6 user who has just upgraded, don't expect to be aware of major changes the first time you reboot. Some of the core applications have been updated, but most of the work has gone into improving the underlying frameworks. The applications themselves have been shifted to a greater reliance on Akonadi, the PIM storage framework and NEPOMUK, the semantic information database."
Page editor: Jonathan Corbet
Next page:
Announcements>>