All if it looks very interesting to me. I would be great to have a 3rd desktop alternative. Gnome and KDE are nice, but there is always something that could be nicer!!
Maybe it will provide a means to get away from programming GUI applications in straight C... All the libraries they are providing seem to have a high degree of abstraction.
From their website
(snippets only, go to the page to see the entire description I don't realy understand all of it anyways, but it looks cool)
Various libraries form the core of the "EFL", which I suppose in Windows terms is a API. There is also a couple peices of code snippets. For instance with using the Emotion library they made a DVD player with 56 lines of C code.
Evas:
Evas is a display canvas. This is different to the usual "immediate mode" display system that most programmers are used to and exists at the Xlib, GDI and even OpenGL levels when doing graphics programming. The difference is that the programmer has to call routines to DRAW the screen or updated display by drawing one operation at a time, such as draw line, paste image, draw box, paste text. When the screen needs an update these operations are done again by the code, normally from the bottom-most element in the draw to the top (painters algorithm). This is "immediate mode" drawing. Evas is different. It is structural by nature, so instead of drawing, you describe the canvas contents (or scene) in terms of primitives (images, lines, boxes, polygons, text strings etc.) and properties (color, stacking, size, etc.). The drawing itself is handled by the canvas, which acts as a state machine, not actually doing any "hard work" until the canvas's render call is executed, at which time it evaluates the previous and the current state and appropriately updates the screen without the programmer having to know how this is done.
Encore:
Ecore is a modular group of very closely linked libraries that provide core event loop functionality and related tasks. As the core event loop it provides conversion of system signals into events, to avoid having to have re-entrant code, handle basic file descriptor watching and passing off control to appropriate callback routines where needed, handling timers, idle calls, and other general program infrastructure and loop code.
Edje:
Edje is one of the more unique parts of EFL, combining many things that Shockwave / FLASH can do with some things it can't, but instead of being designed as a player, it is designed as a slave library to be used by an application to enhance the applications content and display via external compressed data files. It is being expanded continuously, and thanks to its clean design is easy to improve. This is the theme engine behind Enlightenment 0.17 and beyond and at last formalizes Enlightenment themes in a simple and consistent manner.
Embryo:
Embryo is a virtual machine and compiler based on the Small programming language. It has had many bugs fixed and a lot of portability work done to the engine and the compiler. It has been made smaller and simpler making it ideal for inclusion into any program wanting to use small pieces of "script logic" within a more complex system, but don't want to bring in the massive resources required by other languages such as Perl, Python, Java, Ruby, etc.
Eet:
Eet is a small and very useful library that does 2 things. It acts as a miniature "ZIP FILE" library. It doesn't handle ZIP format files as the ZIP format is more complex than is needed, but it does a similar thing where it can store multiple "files" within 1 compressed archive file AND randomly access every "file" within the archive very quickly, and decompress for you. This library can create such files and access them very efficiently. It can ALSO encode data within such files. It can save image pixel data in various formats as well as encode and decode C structs in memory so it is easy to store data and retrieve it as all that is needed is to feed in the pointer to a C struct in memory to save, and the reverse to load. It makes storage and retrieval of data structures in memory an easy process for anyone. It can also simply serialize this data for transmission across a network too. This means that linked lists, pointers to other data structures, strings etc. all get turned into a portable package of data that can be decoded into the same heirachy on the other end by Eet, giving the destination the same logical in-memory representation as the source. Eet is a big time-saver and is the workhorse underneath Edje for doing the data storage it needs.
(Now I don't understand the purpose behind that Eet thing so much....)
Emotion:
Emotion is the one of the newest libraries, but it shows the strength of what it is built on by its rapid development. Emotion is a video & media object library designed to interface with Evas and Ecore to provide autonomous "video" and "audio" objects that can be moved, resized and positioned like any normal object, but instead they can play video and audio and can be controlled from a high-level control API allowing the programmer to quickly piece together a multi-media system with minimal work. Emotion provides a modular decoder layer system where a decoder module can be plugged in separately to provide decoding resources for Emotion. Emotion currently has 1 decoder module that uses XINE as the decoder, allowing it to play DVD's, MPEG's, AVI's, MOV's, WMV's and much more. Its test program is already a useful DVD player (without a lot of the fancy control interface) and can play multiple video streams with semi-translucency and more.
edit:
Another summary from here
Maybe it will provide a means to get away from programming GUI applications in straight C... All the libraries they are providing seem to have a high degree of abstraction.
From their website
(snippets only, go to the page to see the entire description I don't realy understand all of it anyways, but it looks cool)
Various libraries form the core of the "EFL", which I suppose in Windows terms is a API. There is also a couple peices of code snippets. For instance with using the Emotion library they made a DVD player with 56 lines of C code.
Evas:
Evas is a display canvas. This is different to the usual "immediate mode" display system that most programmers are used to and exists at the Xlib, GDI and even OpenGL levels when doing graphics programming. The difference is that the programmer has to call routines to DRAW the screen or updated display by drawing one operation at a time, such as draw line, paste image, draw box, paste text. When the screen needs an update these operations are done again by the code, normally from the bottom-most element in the draw to the top (painters algorithm). This is "immediate mode" drawing. Evas is different. It is structural by nature, so instead of drawing, you describe the canvas contents (or scene) in terms of primitives (images, lines, boxes, polygons, text strings etc.) and properties (color, stacking, size, etc.). The drawing itself is handled by the canvas, which acts as a state machine, not actually doing any "hard work" until the canvas's render call is executed, at which time it evaluates the previous and the current state and appropriately updates the screen without the programmer having to know how this is done.
Encore:
Ecore is a modular group of very closely linked libraries that provide core event loop functionality and related tasks. As the core event loop it provides conversion of system signals into events, to avoid having to have re-entrant code, handle basic file descriptor watching and passing off control to appropriate callback routines where needed, handling timers, idle calls, and other general program infrastructure and loop code.
Edje:
Edje is one of the more unique parts of EFL, combining many things that Shockwave / FLASH can do with some things it can't, but instead of being designed as a player, it is designed as a slave library to be used by an application to enhance the applications content and display via external compressed data files. It is being expanded continuously, and thanks to its clean design is easy to improve. This is the theme engine behind Enlightenment 0.17 and beyond and at last formalizes Enlightenment themes in a simple and consistent manner.
Embryo:
Embryo is a virtual machine and compiler based on the Small programming language. It has had many bugs fixed and a lot of portability work done to the engine and the compiler. It has been made smaller and simpler making it ideal for inclusion into any program wanting to use small pieces of "script logic" within a more complex system, but don't want to bring in the massive resources required by other languages such as Perl, Python, Java, Ruby, etc.
Eet:
Eet is a small and very useful library that does 2 things. It acts as a miniature "ZIP FILE" library. It doesn't handle ZIP format files as the ZIP format is more complex than is needed, but it does a similar thing where it can store multiple "files" within 1 compressed archive file AND randomly access every "file" within the archive very quickly, and decompress for you. This library can create such files and access them very efficiently. It can ALSO encode data within such files. It can save image pixel data in various formats as well as encode and decode C structs in memory so it is easy to store data and retrieve it as all that is needed is to feed in the pointer to a C struct in memory to save, and the reverse to load. It makes storage and retrieval of data structures in memory an easy process for anyone. It can also simply serialize this data for transmission across a network too. This means that linked lists, pointers to other data structures, strings etc. all get turned into a portable package of data that can be decoded into the same heirachy on the other end by Eet, giving the destination the same logical in-memory representation as the source. Eet is a big time-saver and is the workhorse underneath Edje for doing the data storage it needs.
(Now I don't understand the purpose behind that Eet thing so much....)
Emotion:
Emotion is the one of the newest libraries, but it shows the strength of what it is built on by its rapid development. Emotion is a video & media object library designed to interface with Evas and Ecore to provide autonomous "video" and "audio" objects that can be moved, resized and positioned like any normal object, but instead they can play video and audio and can be controlled from a high-level control API allowing the programmer to quickly piece together a multi-media system with minimal work. Emotion provides a modular decoder layer system where a decoder module can be plugged in separately to provide decoding resources for Emotion. Emotion currently has 1 decoder module that uses XINE as the decoder, allowing it to play DVD's, MPEG's, AVI's, MOV's, WMV's and much more. Its test program is already a useful DVD player (without a lot of the fancy control interface) and can play multiple video streams with semi-translucency and more.
edit:
Another summary from here
A quick breakdown:
Library Description
Imlib2 Image Rendering and Manipulation Library
EDB DB Wrapper
EET Distribution Container Lib and Tools
Evas Canvas Library
Ecore Event Abstraction and Modular Convience Library
Epeg JPEG Thumbnailing Library
Epsilon Freedesktop.org Thumbnailing Library
Etox Text Layout and Manipulation Lib
Edje Interface Abstraction Library and Toolset
Embryo Embedable Scripting Language
EWL Enlightenment Widget Libary
Emotion Video Smart-Object Library for Evas