path: root/pages/about-draft.txt
blob: 35aed4afe73e86fdcd89294be3195d16e0b75247 (plain) (tree)

~~Title: About~~


==== Much more than a Window Manager ====

Enlightenment was originally developed in the 1990s by Rasterman (Carsten Haitzler) as a simple Window Manager for
X11. Since then it's grown into the one million lines of C
code that form the EFL libraries, as well as a Window Manager and a
set of applications. There's a vibrant and active community of
developers and users who work on and use the code every day.



=== Enlightenment ===

{{:icon-enlightenment.png?nolink |Enlightenment}}
{{ :shot-enlightenment.png?nolink&320|Enlightenment Sample screenshot}}

As we've said Enlightenment was originally built as a Window Manager. Everything else snowballed from there. It's the flagship product,
closely followed by EFL itself. It's a lean, fast,
modular and very extensible window manager for X11 and Linux. 

Enlightenment is classed as a "desktop shell" in that it provides everything you need to operate your desktop (or laptop) but is not a full application suite. This covers launching applications, managing their windows and doing other
system tasks like suspending, reboots, managing files etc.

We are moving towards using Wayland as the base display system, while
Enlightenment is being developed to become a full Wayland compositor
in its own right. This of course takes time and there have been some bumps along the road. However, one day we will leave X11 behind.

Of course Enlightenment is built on top of EFL, using the libraries we
wrote for the UI as well as those for the compositor itself. This means that any improvements to EFL are included in the compositor.

Enlightenment is also the Window Manager and Compositor used by Tizen, due
in part to its efficiency and features.

See our [[about-enlightenment|About Page]] for more


=== EFL ===


Our libraries are commonly known as EFL (Enlightenment Foundation
Libraries). They can be used independently or built on top of one other to provide useful features and create powerful applications.

The core EFL libraries are much more efficient in terms of speed and size when compared to GTK+ and Qt equivalents and have a smaller memory footprint. 

=== The EFL Model ===


EFL operates on the same "main loop" concept adopted by GTK+ and many other toolkits. Once you initialize an application in enters the Ecore main loop.

The main loop continuously checks for events, handles timers, callbacks and any other services that have previously been set up until an exit request is sent. By way of an example if EFL were used to create a video game, the mainloop would check for user inputs and update the game world accordingly as you play. 

The mainloop is designed efficiently. It will remain idle, consuming virtually no CPU resources until an event occurs. Events can be based on user input such as using the mouse or time-based. Ecore will then handle the event appropriately.

Read more about the Ecore main loop [[|here.]]

For more detailed information on the EFL model including events and callbacks visit see our [[|EFL Concept Overview.]]

=== EFL Application Structure ===

{{ :efllibs.png }}

Whenever you create a basic EFL Application, it uses a basic set of libraries:

  * **Elementary** is the top-most library. It provides all the functions you need to create windows, manage layouts and add widgets. 
  * **Edje**  is the library used by Elementary to provide powerful,customisable themes. You can also use Edje to create your own objects and use them in an application. 
  * **Ecore** is the library which manages the main loop of your application, as outlined above. 
  * **Evas**  is the canvas engine, which draws content. Any graphical objects you create are Evas objects. It handles the entire state of the window by filling the canvas with objects and manipulating their states. Evas objects are created and then manipulated until they are no longer needed, at which point they are deleted. 
  * **Eina** forms the basis of all EFL libraries. It's a toolbox that implements an API for data types in an efficient way. Eina contains all the functions needed to create lists and hashes, manage shared strings, open shared libraries, and manage errors and memory pools. 

EFL naturally contains many more libraries than the basic ones outlined above. Visit our [[|Basic Application Structure]] page for more information on the core libraries. You can also learn about other libraries in our other programming guides.

=== Supported Platforms ===

{{:os-logos.png?nolink }}

We primarily work on Linux, which means that most Linux distributions
and OSs like Tizen should be well supported out of the box. There are
also efforts to work on Windows and macOS at varying stages of completion. 

For windows please see our
[[|Windows]] development wiki
page, or
[[|Win-Builds]] which ships EFL for
Windows and even uses it for the package updater GUI. For information on macOS, please refer to the [[docs/distros/osx-start]] page.

=== Uses for EFL ===

Enlightenment 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 approach, as
products and designers want to offer more than the boring functional user
experience of the past. This is where EFL excels.

[[|]] has shipped millions of set top boxes in
France, powered by EFL. The
[[|Openmoko Freerunner]]
sold thousands of devices using EFL and Enlightenment.
[[|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
[[|Samsung Gear]]
watches, is behind the
[[|Samsung Z1 Phone]]
and the
[[|Samsung SUHD Smart TVs]]
that run Tizen. Cameras also use Enlightenment and EFL such as the
[[|Samsung NX1]]
and the
[[|Samsung NX300M]] smart
Camera. Also GPS units such as models from
[[|Coyote]] Run EFL on a lean and mean RTOS.
Also Web conference cameras such as
[[|Biscotti]] use EFL to do their work.

EFL covers a wide range of domains from IPC to Graphics through to
Audio and even location services. Some areas covered include:

  * Generic Widgets and UI controls
  * Core mainloop and event processing
  * Rendering via scene graph
  * Thumbnailing
  * Video and audio media playback
  * Physics
  * IPC locally and across the internet
  * D-Bus
  * Data structures for C (Lists, Hashes, Trees etc.)
  * Data serialization and de-serialization
  * Image encoding/decoding
  * Data archive handling
  * standard support
  * C Object model
  * Compression and encryption
  * VM bytecode engine and compiler
  * UI data file theme and layout abstraction
  * Device access and tracking
  * Async I/O
  * Input method handling
  * Easy file handling utilities
  * Audio playback and recording
  * Avahi handling
  * Framebuffer, [[about-wayland |Wayland]], X11, Windows, OSX Cocoa, SDL, PS3, Linux DRM handling

See our [[about-efl|page about EFL]] for more details.


=== Applications ===

We also write applications that use EFL. Aside from being very useful programs in their own right, these are great examples of what EFL can do for you. 

{{:icon-terminology.png?nolink |}}

== Terminology ==

The first application every hacker really needs is a terminal emulator. Terminology is not just a simple stripped-down terminal to get the job barely done. It's bristling with advanced features: Tabs, splits, 256 color support, Wallpapers (even animated ones), Inline display of media (click on a file path to a video and watch it play inline), link detection, compressed scrollback in RAM, translucency and a gorgeous look and feel that reminds you of old CRT monitors.

See [[about-terminology|the Terminology page]] for more details.

{{:icon-rage.png?nolink |}}

== Rage ==

Need a clean and simple video player much like MPlayer? Then look no
further. Not only does it focus on video by not filling your window
with controls and menu bars, which can be displayed with a simple mouse over but it also displays thumbnails of a video's timeline. 

Rage also has a live playlist which will show all currently playing videos. It has full keyboard and mouse controls as well as supporting Drag and Drop to add more files to your playlist. Use the audio-only mode to grab album cover
images and cache them.

See [[about-rage|the Rage page]] for more details.

{{:ephoto.png?&nolink&128 |}}

== Ephoto ==

Ephoto is an image viewer and editor written using EFL. It focuses on simplicity and ease of use, while taking advantage of EFL's speed any tiny footprint.  Browse your images via thumbnail, single view with editing features, or display a moving slideshow.  There are many neat filters for you to stry, from Gaussian blurs to intricate sketches.  This application is extremely versatile in that it can act as both a simple viewer and an advanced image editor.

See [[about-ephoto|the Ephoto page]] for more details.

{{:edi-logo.png?&128&nolink |}}

== EDI (The Enlightenment IDE) ==

EDI is a development environment designed for and built using EFL. Our aim is to create a new, native development environment for Linux that makes getting up and running easier than ever before. With so much happening on Linux both on the desktop and on mobile we want to help more developers get involved in the exciting future of open source development.

See [[about-edi|the EDI page]] for more details.


=== Media ===

If you want media like official logos, screenshots etc. please see
[[media|our media page]] for details.