summaryrefslogtreecommitdiff
path: root/pages/about-efl.txt
blob: d54cdfe20f30fa7778ffbe5525f9a25d8220d0ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
~~Title: About EFL~~
==== EFL ====

[[download|Download EFL Here]]

Code quality - [[https://scan.coverity.com/projects/552|EFL Coverity scan status]]

{{:efl-core.png?nolink |}}

EFL is made up of quite a few libraries that build on top of each other
in layers, steadily becoming higher-level, yet allowing access to
each level as they go. The higher up you go, the less you have to do
yourself. Elementary is about as high up as you get, while you still
access layers below it for day to day things as there is no need for
it to wrap things that work perfectly well as-is.

All of EFL exposes its APIs by default in C, with several bindings
available. We are now also working on supporting bindings for various
language as first-class-citizens in EFL by auto-generating the
bindings directly from our new object orientation infrastructure for
C. We stick to C mostly because the libraries have been around for a
long time, were originally written in C and the developers who write
the libraries prefer C. We add OO features in C with tools and
infrastructure where needed. Also moving from C would limit the
audience. C programmers won't be able to access a %%C++%% API (whereas a
%%C++%% programmer can access both C and %%C++%%). That is partly why we aim
to auto-generate bindings so programmers of various languages can get
native-like APIs for their chose language from the same core EFL API
set.

Our components are divided into named libraries or projects. Core EFL
components are:

^Component               ^ Description                                ^
|Evas                    |Core scene graph and rendering              |
|Eina                    |Data structures and low level helpers       |
|Edje                    |UI layout & animation data files for themes |
|Eet                     |Data (de)serialization and storage          |
|Ecore                   |Core loop and system abstractions like X11  |
|Efreet                  |Freedesktop.org standards handling          |
|Eldbus                  |D-Bus glue and handling                     |
|Embryo                  |Tiny VM and compiler based on Pawn          |
|Eeze                    |Device enumeration and access library         |
|Emotion                 |Video decode wrapping, glue and abstraction |
|Ethumb                  |Thumbnailing handler                       |
|Ephysics                |Physics (bullet) wrapper and Evas glue      |
|EIO                     |Asynchronous I/O handling                   |
|Evas Generic Loaders    |Extra image loaders for complex image types |
|Emotion Generic Players |Extra video decoders (for VLC)              |
|Elementary              |Widgets and high level abstractions         |

Binding support exists for several languages such as:

  * Python
  * Javascript
  * %%C++%%
  * Ruby
  * Lua

EFL was originally intended to provide the core for Enlightenment, but
has grown to do much more. In trying to keep EFL lean, it has found a
use for embedded devices all the way up to powerful desktop behemoths.

These libraries already power millions of systems, from mobile
phones to set top boxes, desktops, laptops, game systems and more. It
is only now being recognized for its forward-thinking approaches, as
products and designers want to do more than the boring functional user
experiences of the past. This is where EFL excels.

[[http://www.free.fr|Free.fr]] has shipped millions of set top boxes in
France, powered by EFL. The
[[http://wiki.openmoko.org/wiki/Neo_FreeRunner|Openmoko Freerunner]]
sold thousands of devices with EFL and Enlightenment on them.
[[http://www.yellowdoglinux.com/|Yellow Dog Linux]] for the Sony PS3
ships with Enlightenment as the default. EFL has been used on printers,
netbooks and more. It powers the
[[http://www.samsung.com/us/mobile/wearable-tech|Samsung Galaxy Gear]]
watches, is behind the
[[http://www.samsung.com/in/consumer/mobile-phone/mobile-phone/dual-sim-phone/SM-Z130HZKDINS|Samsung Z1 Phone]]
and the
[[http://www.samsung.com/us/video/4k-suhd-tv|Samsung SUHD Smart TVs]]
that run Tizen. Cameras also use Enlightenment and EFL such as the
[[http://www.samsung.com/uk/discover/camera/find-your-signature-with-samsung-nx1/|Samsung NX1]]
and the
[[http://www.samsung.com/global/nx/nx300m/|Samsung NX300M]] smart
Camera. Also GPS units such as models from
[[https://www.moncoyote.com/|Coyote]] Run EFL on a lean and mean RTOS.
Also Web conference cameras such as
[[https://www.biscotti.com/|Biscotti]] use EFL to do their work.