Chapter 1. Introduction

Table of Contents

A little History
Related documentation
Obtaining the EFL libraries

In any field, one of the primary reasons why good ideas may not catch up is inertia. People are happy with what they have. They have spent time and gained expertise so that they can fit available tools to their needs, or even create workarounds when faced with different problems. When new tools become available people are reluctant to use them. In the case when the new tools are introducing new concepts and ideas, their adoption is even slower. People need some time to discover the new abilities before actually using them.

Any UNIX programmer who goes beyond the command line interface soon discovers that he/she needs separate graphic libraries called toolkits. These toolkits can make the X Window System look and act in different ways. Since X does not favor any particular toolkit, several solutions exist today. Of course some toolkits are more mature than others. Some are commercial and some free. Some are for C and others for C++. You can find many resources across the Internet which compare X11 toolkits. Most toolkits share however one common factor. They are all affected by industry concepts (rapid prototyping). They are built so that programmers can quickly build a (mostly) useful but not always pretty application. Animations are non-existent. Themes are an afterthought (sometimes even a hack). Performance tuning comes second to feature abundance. Each toolkit advertises several widgets which apply to specific cases but are useless to others.

A handful of graphics toolkits are extremely popular. They are mature, well developed, and well documented. Some even enjoy the backing of major companies. Two of them are actually the foundation for modern UNIX desktop environments. Using these toolkits is straightforward. The resulting applications look and function in a way familiar to the majority of computer users. But what if you want something more? What if you want animations, transparent components, and themeable applications? Your options are fairly limited. Rather than using OpenGL for pure 2D or even resorting to low level Xlib functions, jump right into EFL and discover what you can do with this set of powerful libraries.

We believe that EFL is not just another toolkit. You can use EFL as a toolkit (the EWL/ETK libraries), but you will probably miss all the fun. EFL has some new concepts, which if applied correctly will make your applications do things you could only imagine so far.

A little History

Back in 1999, the Enlightenment window manager (version 16 then) was offering people with eye-candy much ahead of its time while still retaining usability. Several graphical effects (windows sliding in, shading animation, the ripples and waves) were quite revolutionary for a window manager. Theme support was extensive. While most applications supporting themes actually mean the colours and skins of the interface, the Enlightenment interface could be almost everything. Themes could be completely different considering most aspects. Several themes were so complex that would eventually make Enlightenment resemble different systems (Mac OS Aqua, BeOS).

Enlightenment was also at some point integrated with Gnome. While Gnome has progressed since then and now comes with its own window manager (Metacity or the older Sawfish), the fact is that Enlightenment was installed on many desktops at the time. Version 16 is still the latest stable version of Enlightenment. It is updated even today with patches. This means that today Enlightenment v16 is a very stable window manager. Since its resource requirements are roughly the same, what used to seem a heavyweight window manager is very light indeed with modern personal computers.

So why don't we have a new version of Enlightenment today? And why has the development version (v17) not yet been released after so many years? The fact is that the Enlightenment developers, having gathered experience from v16, do not want v17 to be a simple window manager. Instead version 17 of Enlightenment is a "desktop shell". The infrastructure of this desktop shell comes in the form of separate graphic libraries called the Enlightenment Foundation Libraries (EFL for short). Enlightenment is now based on the EFL libraries, which can also be used for normal applications apart from the window manager.

While this concept is fairly interesting, successful marketing of it is harder. Most people who visit the Enlightenment pages think that this is the start of a new desktop environment (like KDE and GNOME) and that EFL is simply another X11 toolkit (like QT and GTK+). This document will try to address these common misconceptions and attempt to give you a glimpse of what EFL is capable of.