Hi!
I present some interesting numbers regarding startup times and memory footprints. This started as a simple list but grew and expanded as raster pushed me along. I really only needed a little bit of data for my Uni assignment to put in a CSS table. It’s now a fairly comprehensive test. These results come from my system, with a slight bit of tweaking to make all the environments used to my liking, yet quite minimal. Results obviously vary from system to system and this is the raw results I found on my system. Your results may differ. (Also, shiny graphs will come later.)
Toma.
Results:
Environment
Mem base: Used Mem – Used Buffers&Cache
Mem user: Same with Chrome + Xterm loaded
Time: Time from boot to loaded environment. +/- 0.2 secs
Mem Base Comp: Total memory usage – (X11 + Xterm) memory usage
Time Base Comp: Boot time – Base Boot Time
X11 + Xterm
Mem base: 438792 – 231104 = 207.688 mb
Time: 19.8 secs
E17
Mem base: 459368 – 245360 = 214.008 mb
Mem user: 627860 – 348424 = 279.436 mb
Time: 21.4 secs
Mem Base Comp: 6.32 mb
Time Base Comp: 1.6 secs
XFCE
Mem base: 556552 – 306304 = 250.248 mb
Mem user: 746440 – 435060 = 311.380 mb
Time: 26.4 secs
Mem Base Comp: 42.56 mb
Time Base Comp: 6.6 secs
Fluxbox
Mem base: 445740 – 232680 = 213.060 mb
Mem user: 611544 – 341940 = 269.604 mb
Time: 21.8 secs
Mem Base Comp: 5.372 mb
Time Base Comp: 2.0 secs
Gnome
Mem base: 652904 – 370628 = 282.276 mb
Mem user: 809520 – 470540 = 338.980 mb
Time: 32.1 secs
Mem Base Comp: 74.588 mb
Time Base Comp: 12.3 secs
KDE Software Compilation® 4.3.2
Mem base: 1032896 – 650124 = 382.772 mb
Mem user: 1197904 – 753468 = 444.436 mb
Time: 35.9 secs
Mem Base Comp: 175.084 mb
Time Base Comp: 16.1 secs
*** Each environment was slightly tweaked to make it
more user friendly and usable. They are all very close
to being a default setup. GDM auto-login was used.
64bit Ubuntu 9.10 system with KDE,Gnome,Flux all from
the default repos.***
 Toma
by edjy at March 09, 2010 05:31 AM
Hello all,
Users of recent SVN may notice recent breakages around things that use Efreet and FreeDesktop.org (XDG) standards.
The breaks were introduced after changeset:46726 "Eet cache for efreet desktop". The commit title says it all, Sebastian is speeding up our previously quite slow and memory heavy code with Eet-powered cache to be shared amongst multiple processes.
Efreet was the slowest bit in whole E platform, a real pity. But Sebastian invested quite of time to have a third party process to parse all ".desktop" files, generating an optimized blob stored into Eet.
Eet data structures will be quite fast and strings will be only pointers to memory if using functions like eet_eina_file_data_descriptor_class_set(). This is quite good for both load time performance and runtime memory consumption, as no strings need to be allocated (so less Virtual Memory pressure), the pages are shared among different processes and can be sent back to file system, helping applications that actually need memory (less OOM cases). This is quite easy to use, and highly recommended for applications, even when you do not share with other processes.
So why do we have breakages, you might wonder? The crashes are due the way Efreet API was exposed and used. Instead of providing opaque Efreet_Destop structures with getters and setters to fields, it was exposed as direct access struct with public members, making cases such as the following common:
void name_changed(Efreet_Desktop *desk, const char *name)
{
free(desk->name);
desk->name = strdup(name);
}
This is spread all over E17, but major user is desktop file editor. Other parts may do it as well, such as changing the border or ibar/ibox icons.
These issues should be fixed soon. If you'd like to help with patches, just mail them to enlightenment-devel mail list. If you can't avoid these crashes, be sure to checkout the old Efreet meanwhile:
svn checkout -r 46726 http://svn.enlightenment.org/svn/e/trunk/efreet
Sorry about the inconvenience.
by barbieri at March 09, 2010 12:23 AM
Since a few months i'm using the urxvt terminal because of the great (ascii art) tabbing support.
As i often recompile efl sources i also often restart e17. This was no problem until now - as e17 seems to lost track of the urxvt windows after restart. The result was that the urxvt windows didn't got a border and didn't accept focus. They where simply stacked on top of all and i needed to kill them after each e17 segfault or restart.
Tonight i was talking to raster about that problem and we noticed that the tabbed urxvt windows where set to _XEMBED_INFO. This property is used by application windows which are swallowed into other windows (like gnome applets into gnome-panel). So that was the reason why e thought that these windows doesn't need a border. So how to fix?
The tabbing extension is a simple 300 lines perl code, so very easy to debug.
When trying to understand the code i first search for 'embed' - one hit. After disabling and starting urxvt i got two urxvt windows - one containing the tabbar and one a little bit smaller with a shell. So the shell window was swallowed into the tabbar window - and only the shell window got the _XEMBED_INFO on start. I simply needed to find the place where these property was set on the main window...:
--- /tmp/tabbed.old 2010-03-06 04:42:15.000000000 +0100
+++ /usr/lib/urxvt/perl/tabbed 2010-03-06 04:41:08.000000000 +0100
@@ -119,11 +119,13 @@
my $cur = delete $current->{$atom};
- # update if changed, we assume empty items and zero type and format will not happen
- $self->XChangeProperty ($self->parent, $atom, $type, $format, $items)
+ if ($atom != 447) # don't set _XEMBED_INFO on main window!
+ {
+ # update if changed, we assume empty items and zero type and format will not happen
+ $self->XChangeProperty ($self->parent, $atom, $type, $format, $items)
if $cur->[0] != $type or $cur->[1] != $format or $cur->[2] ne $items;
-
- $self->{current_properties}{$atom} = [$type, $format, $items];
+ $self->{current_properties}{$atom} = [$type, $format, $items];
+ }
}
# pass 2, delete all extraneous properties
by Brian 'morlenxus' Miculcy at March 06, 2010 03:45 AM
Hi :)
As you can see, Planet E has a new theme, fitting with current Trac and website themes. It may have a few flaws, though, so report to me if you find something :) I'll continue to improve the theme.
New Planet was tested under Firefox/Iceweasel and Chromium browsers, in both it works fine, but I didn't test for example in Opera, so it may display something incorrectly (but it shouldn't)
It uses almost the same template code as official website, also CSS is the same, but with a few modifications done for Planet.
I hope you like it :)
by quaker66 at March 05, 2010 10:30 AM
Last June, Missy and I were home visiting for our baby shower when my mom received word that she had been diagnosed with breast cancer. Luckily, they caught it early and the tumor was only about 1 cm in diameter. After her lumpectomy, she underwent chemotherapy and just recently finished her radiation treatment. She is currently cancer free, and her hair is starting to come back in. With everything my mom went through during her treatment, my sister Elena decided to participate in this year's Susan G. Komen 3-Day for the Cure walk. If you would like to sponsor her, please donate at her participant page.
by Nathan (noreply@blogger.com) at February 20, 2010 12:21 PM
Missy posted about some significant events in our family life over on our shared blog. Rather than duplicate them here, please take a look. Unfortunately, we fell off the wagon on that one too and it hasn't been updated since last May either.
by Nathan (noreply@blogger.com) at February 20, 2010 09:57 AM
Last May we launched a new service for Project Hosting on Google Code at Google I/O: hosting for the Mercurial version control system! Our Mercurial implementation is somewhat unique in that it doesn't use a traditional filesystem for storing data, it uses Bigtable instead. This allows wide horizontal scalability to host thousands of repositories, which my co-worker, Jacob Lee, explained quite well in his Google I/O talk. Since then, we've added support for server side repository cloning to allow projects and users more flexible working methods.
by Nathan (noreply@blogger.com) at February 20, 2010 09:54 AM
After almost a year w/o a single post, it's time to make an attempt at reviving this neglected space again. To kick start the process, I'll make a series of posts recapping some of the events of the last year.
by Nathan (noreply@blogger.com) at February 20, 2010 08:52 AM
The last round of news regarding Enlightenment were pretty nice, but one thing that we could see from the community feedback is that there are lots (and I do mean lots) of people out there who do not know its current state. Mostly this is caused by our serious public relations issue (lack of official news, etc.), and we’re planning on fixing this.
But right now, I just wanted to correct some of the misinformation we saw:
- Question: when will E17 be released?
- Answer: Soon. No, seriously, I really mean it. Currently work is being done on finalizing a few remaining items of our Release Plan in order to make the first stable release of the libraries, which is the main focus of work right now. After that is done, then focus will be shifted to E17. But if you really want a date, I can’t give you one. Best I can do is say: “join us and help, and then the date will come sooner
”.
- Question: does EFL support OpenGL?
- Answer: YES, it does, both OpenGL and OpenGL-ES 2.0. There is much to be said on this topic, and some posts with more info and benchmarks are coming soon, but for now just rest assured that there is support for it and it’s kicking ass.
- Question: is it being actively developed? Or is it just a bunch of people who are hacking on a project without future?
- Answer: there is a lot of development going on, and it’s most definitely not a project without future. There are many companies using EFL because the libraries are pretty good, fast and stable. And the libraries can be used for softwares that run by themselves, they definitely do not need E17 to be running. Some examples of projects using EFL are set-top boxes, airplane infotainment systems, etc.
- Question: why should I use the EFL instead of Qt or GTK+?
- Answer: the first reason would be because you prefer to use it. Seriously, give it a try. Other than that, if you’re doing a project for an embedded system, chances are the EFL might suit you better than the other two. There was heavy work on optimization done on the libraries, and they usually respond a lot better on smaller hardware than their counterparts. If you’re a designer or working closely with designers on a project, then that might also be a pretty good reason to check out Enlightenment (most specifically Edje).
- Question: how do I learn more about EFL? How can I help?
- Answer: documentation is something that we’re working on right now, and it’s one of the main areas we still need to improve a lot. A pretty good place to start is the document that my colleague Gustavo Lima wrote and which is available here. And if you decide you want to help (there are some low hanging fruit there, don’t be afraid) just join us at #edevelop on Freenode and hang there for some time, chances are you will quickly find something to do (and if you haven’t, just ask there and people will quickly find something for you).
That’s it for now. If you have any doubts, just get in touch.
by messias at February 19, 2010 01:44 AM
Hello,
I'm glad to present the first actual showcase of Eupnp: a UPnP browser. It's a simple Elementary-based application capable of browsing any UPnP-capable media servers. Here are some screenshots:
 Browsing multiple media servers
 Browsing folders and files of a MediaTomb server
Although it's still a first crude version, it'll follow up with some UI improvements, playing media using Emotion and possibly pictures using elm-photocam.
by André Dieb (andre.dieb@gmail.com) at February 18, 2010 09:02 AM
Canonical developer Jamie
Bennett announced in his blog post The
New UI for ARM Based Ubuntu Devices how Enlightenment Foundation
Libraries (EFL) enabled rich graphical user interfaces even on
non-3D-accelerated ARM devices.
Enlightenment Foundation Libraries were conceived and developed with
performance in mind. Started in 2000, the current incarnation was
designed based on previous experience with Imlib and Imlib2, libraries
known to be quite fast. Over the past 10 years, the API changed a lot to
be easier to use, but the performance impact of each and every change was
carefully considered and benchmarked using the Expedite tool.
The most performance-critical part of EFL is definitely Evas, the canvas
(drawing) library. Fast in both software- and hardware-accelerated environments,
it always shipped with lots of engines such as buffer, X11 (Xlib/Xcb)
and XRender, but it recently gained more interesting engines due to companies
that contributed back their work:
- 16 bit-per-pixel-optimized engine, contributed by INdT.
- SDL, contributed by Free.fr.
- DirectFB, contributed by ProFUSION.
- OpenGL-ES, contributed by Samsung.
However, Evas is not the only optimized piece of EFL. Eet, used for
binary, read-efficient configuration and resources file, boosted
Canonical's Ubuntu Netbook Remix (UNR) startup time. The initial
version using GConf was quite slow to provide information, so these
were cached with Eet for immediate access to background images,
display modes, and font configuration.
Aside from being used for configuration files, Eet is also the base of
Edje, the
theme system used by UNR, Enlightenment DR17, Elementary,
Canola2 and
others. Edje manages a state machine of Evas objects' states, described in a
JSON/C-like language, later compiled into an access- and space-efficient
binary format. Its power and flexibility continually amaze its users,
as said by Jamie in his post:
Another of the great things about this launcher, as opposed to the 3D
launcher shipped with Karmic, is that it's extremely theme-able.
Last but not least, the new kid on the block, Elementary,
boosted development time with its canned ready-to-use widgets. Like
all the previously-presented libraries, Elementary is very fast
and customizable. It is quite unnoticeable in UNR, but it is the base
of lists and some error dialogs.
The Enlightenment team is proud its products are being used more and more
on embedded systems, be they e-book readers, phones, or TV's; x86,
ARM, or MIPS; accelerated or non-accelerated hardware.
by barbieri@profusion.mobi
(Gustavo Sverzut Barbieri
) at February 17, 2010 06:30 AM
Greetings all,
Recently, theres been a bit of discussion on th B&W theme and its need to be fixed. Well, not fixed, more along the lines of a revamp for release. YES there is the faint glow of a finish line in sights! If you have the skills and knowledge, please look at:
http://trac.enlightenment.org/e/wiki/Theme_Revamp
…to see the direction us developers would like to see the theme take. Patches and changes can be sent to myself or the development mailing list. If you need assistance in any changes I will happily give anyone guidance on how to do so. I am going to be finding it VERY hard to do much of the things I love to do soon like messing around with edje and contributing to EFL due to….
Study! Yes study. Im studying to get a Bachelor of Technology in Computing Studies! This means Ill be able to do all sorts of programming and management stuff as I plan to do minor in Management. Ill be studying with Open University in Australia over a few years to get this. Since I havent had a lot of experience with many of the course elements, I suspect it will eat up a lot of my time. But, as I learn these new things I will be trying to contribute as a way of studying & practice.
That about sums it up for now. I dont start for another week or so, so Im hoping to get these theme revisions done before then.
So here I go into the wild blue yonder.
 Toma
by edjy at February 11, 2010 01:01 AM
As some people might already know, Profusion has been working on a new Edje editor, intended to replace the one there was on Enlightenment’s subversion repository. I’m now participating more actively in its development and, besides that, I did help with an early version of its user manual.
It will be fixed/revamped incrementally, so that even at development stage we can have users able to do their GUI creation jobs done with it.
Stay tuned for more news on EFL applications development infrastructure soon.
 Gustavo
by Gustavo at February 10, 2010 09:44 PM
As part of my job activities back in August 2009, I wrote an introductory document on the Enlightenment Foundation Libraries as a client request. It is now being publicly released, hosted at Enlightenment Project’s subversion repository.
You can find a rendered version here, too, but I can’t promise how often it is going to be updated. The idea is have this document accessible by Enlightenment project’s website both in PDF and HTML formats. Ideally, both forms would be updated by a cron job or something. We’ll work on that soon.
Feel free to contribute to it, if you wish (license is Creative Commons Attribution-Share Alike 3.0) and, of course, to read it. This is one more step into making the EFL more accessible and recognized worldwide by GUI application developers.
 Gustavo
by Gustavo at February 10, 2010 09:08 PM
Hi all,
Ive recently been considering updating all my themes so they cover all the most recent E updates with widgets and such. Since there are so many of my themes, Im going to take some time to do so. Now is the time to request any changes and things you dont quite like in any of my themes on Exchange!
I will also be adding a paypal button to my links on exchange. Im doing this because I put an immense amount of time and effort into making these themes and I hope the community likes my work enough to throw me some beer money. In the long run, Id love to find a job working on edje stuff and design.
But for now, Im getting back into themeing and I hope you can all appreciate it.
If you’d like to donate now, Im tomhaste at gmail dot com on Paypal
 Toma
by edjy at January 27, 2010 11:16 AM
I’m proud to present you with my last Enlightenment module: ConnMan!
For those unfamiliar with ConnMan, it is a solution to configure and manager your network connections. Unlike NetworkManager, it is very simple and fast, specially for users of it’s DBus API. It will manage everything, including DNS proxy to avoid messing with your /etc/resolv.conf. It also handles WiFi, Ethernet, WiMax, Bluetooth and even Cellular connections easily. For developers using it, it is very simple to use and you just need to use the high level “Service” interface.
In order to make it more useful, I created econnman inside e_dbus that abstracts the DBus API as a nice C interface that matches it perfectly and optimally, keeping objects in sync with server and emitting Ecore_Event whenever things change.
The module is quite simple, yet useful. As seen in the above screenshots, it will list the current status and service name (if module is bigger than 32px), when you mouse over it will show a fancy popup with more details, including error messages and IPv4 addresses. If you click it, you get a simple popup with the current connected service selected and clicking it will disconnect, while clicking a new one will connect to that one. Services requiring password will automatically ask for it, while those that failed to connect will also re-ask your password.
The module nicely exposes the offline mode feature to turn off radios. It integrates well with E17 mode: whenever you change E17 or ConnMan, they will sync with the other.
There is still work to do, mainly focus on the cellular specific needs and also create static services. And I also plan to have an application to allow managing your services, reorder them (that defines the priority) and even switch technologies that are available.

by Gustavo Sverzut Barbieri at January 02, 2010 11:05 PM
This new release received a lot of bugfixes for features like the osd notification.
It now builds the python bindings, which where required by the new edje editor 'editje'.
Also there where some optimizations for FreeBSD.
Thanks to Tobias Gion and Giuseppe 'ferdy' Miceli for their patches.
- new commandline argument --ldflags=<flags>
- new applications eyelight and editje added
- new libary libeweather added
- new bindings python-efl added
- new module skel added
- removed applications edje_player, edje_viewer and enna
Download as always, enjoy and report bugs!
by Brian 'morlenxus' Miculcy at January 02, 2010 10:42 PM
Eet 1.2.3 has been released with several bugfixes and improvements. It is
considered stable. It is available from
here.
Eina, Evas, Ecore, Embryo, Edje, E_Dbus, Efreet, Elementary and Enlightenment
have had a snapshot release (snapshot 063), and can be downloaded from
here. If
you are taking source from SVN, then
use SVN revision 44144.
Eet 1.2.3 was released, with the following changes:
- Deprecating eet_data_descriptor*_new
- Add eet_data_descriptor_stream_new and eet_data_descriptor_file_new
- Add eina helper
- Cleanup Eet_Data_Descriptor code
- Fix eet data encode to encode empty structs etc. so save saves something as opposed to nothing
- Fix documentation of eet_data_write() and eet_write() for return value to return # of bytes written, not 1 or 0
- Fix build with suncc (missing alloca() declaration in eet_cipher.c)
- Use new Eina_Log infrastructure to report error
- Remove apparently useless eet_freeleak_* from eet_data
- Add Fixed Point support and make it possible to switch from float and double to any fixed point variant supported by eina
- Remove useless Eina_Log macros
- Check the returned value of eet_init() in the binary
- Use binary mode of fopen() in eet_main() for Windows compatibility
- Initialize eina first in eet_init()
- Allow generation of one single file with all source code in it. See configure help to enable it (--enable-amalgamation)
- Add check on libgcrypt library in configure. Needed when GNUtls support is enabled
The snapshot release of Eina, Evas, Ecore, Embryo, Edje, E_Dbus, Efreet,
Enlightenment and Elementary includes lots of improvements and fixes. Too many
to put here, but these are not considered stable yet, and thus we don't track
changelogs. They do impose soname changes and module versioning now to make
packaging cleaner alongside SVN source installs. Please download, try and test
these.
by raster@rasterman.com
(Carsten Haitzler
) at December 03, 2009 02:30 AM
Well! Im quite happy with it. Ardy 1.0 now sends AND receives serial data from the Arduino. This means you can control Edje animations via the Arduino, and you can control the Arduino from Edje. Team this news up with Editje or the more developed Edje_Editor, and you have a powerful platform for making simple physical interfaces. Im hoping this kind of work gets used in education. I am planning on using the Arduino code simplicity to get youth into coding and the youth centre I currently work in.
STILL, Ardy is in PROTO in the E SVN.
Enough for now! Time to get cracking on an Edje robot or something… Hehehe.
 Toma
by edjy at November 27, 2009 02:49 PM
Wow! Just after my last week post about companies supporting EFL, we were pleased with two more announcements:
- Ardy, a tool that brings together EFL and Arduino using Python
- Free.fr, the second biggest ISP in France opened up the development of their Freebox HD set-top box using Enlightenment Foundation Libraries and Mozilla JavaScript library. This is pretty amazing as it’s the biggest deployment of EFL out there, an uncertain number that ranges from 2 to 3 million devices.

by Gustavo Sverzut Barbieri at November 23, 2009 12:03 PM
Since now a few days, the Enlightenment Foundation Library are running on
around 2 or 3 millions French set top box. Free.fr is openning the development
on the Freebox HD by using a combination of the EFL and Mozilla JavaScript
library. This open with a relatively old hardware some great graphical
possibility. Free.fr is planning to open some kind of store for this JavaScript
apps during the beginning of 2010.
So what does this mean for you as users and developers? It means that the EFL
are able to provide some eye candy with limited hardware and this target is
here to stay for some time. In the past, Freebox S.A.S as provided code that
improve some specific bottleneck of the EFL, and will continue in the futur.
We focus on 720p output, 1080p is also supported. Finally we are also working
on keyboard issue and some library will see improvement in a near futur, so
stay tunned on this too !
Of course, we are staying close to Enlightenment SVN and we are continuously
integrating our work in current SVN, so people can watch and help to see what
they want in it.
by cedric.bail@free.fr
(Cedric BAIL
) at November 20, 2009 03:00 AM
Introducing… Ardy!
Ardy is a small set of programs that show how to link up EFL to python then to Arduino. This is a great learning tool for Edje and python-EFL… and Arduino! With the release of Editje, Im sure making something fun out of this will be a real no brainer.
The Arduino sketch is included and the schematic for the breadboard is in the README.txt, which is in trunk/PROTO/ardy in the main Enlightenment SVN.
So anyway, heres what it does. Dazzling, isnt it?

 Toma
by edjy at November 19, 2009 03:07 AM
Hey all,
Yesterday we started to see some announcements of companies backing Enlightenment Foundation Libraries development. Of course, INdT was pioneer in that since it was decided to use it for Canola2. Later on I created my own company and we officially support EFL as GUI alternative (together with Clutter, GTK and Qt), being the first company to do that.
While there are speculations about which company is it, what I can assure you is that this company is serious and is not alone. ProFUSION itself worked on EFL on behalf of various clients and you may expect another press release about a big French internet and telecom company deploying a massive number of units with EFL pre-installed. Not accounting various community driven projects that choose it and E17 as its base platform, such as OpenMoko and OpenInkpot.
Bottom line? While EFL does not get the same amount of marketing and visibility as Qt and GTK counterparts, it is playing fine enough to be considered to ship in dozen million devices in the next year. Why don’t you consider it for your project? Be open minded and try it out

by Gustavo Sverzut Barbieri at November 18, 2009 10:48 PM
We are working with a top-5 electronics producer (one of the largest in the
world, who produces millions of mobile phones, televisions, sound systems
and more per year) to bring Enlightenment and especially it's deep technology
to their products. In fact not just working with this manufacturer, but they
are actively sponsoring development on Enlightenment and EFL to ensure it does
what is needed for their products (beyond what it already does).
What does this mean for you as users and developers? It means that you are
likely to see top-quality electronic devices running the same things you use
on your desktop. This means as a developer the same libraries and API's will
be there, ready to use, out of the box. You can even start your development
now in anticipation. Use Elementary, Evas, Edje, Ecore, Eet, Eina, and so on
and design for a small screen with a "finger" and minimal keyboard (by small
screen i mean in the range of 240x320, 320x480 and so on up to 480x800 for
portrait, and similar for landscape (320x240, 480x320, 800x480).
Do it now so you have code that already works. you can develop on the desktop
no problems and it ports with a simple "make" to the devices in question.
That's about all the information we have for now. Expect something in the
future with more details, such as what products and roughly when.
by raster@rasterman.com
(Carsten Haitzler
) at November 18, 2009 07:20 PM
Every free software project aims to bring more developers. However once we get people interested, how are they received, how to proceed and get started on E17/EFL development? This topic is becoming more and more common as E17 becomes more "ready" for it's final release and also EFL is being used in lots of devices, specially mobile devices like phones, pdas, ebook readers and so on.
E Community is trying to solve this with documentation, template generators and now screencasts!
Documentation
We now have daily updated API documentation generated from Doxygen, these are at http://www.enlightenment.org/p.php?p=docs (click "Docs" in E website). Rasterman started Elementary with great docs from start, Eina is a good example as well, with tutorials and such, ProFUSION also helped a bit with review and documentation patch requested by clients.
Template Generators
We had E-MODULES-EXTRA/skel for a long time, but that was not enough. Then elementary-generator was created with helper script and even nice GUI to create all the boring parts: makefiles, configure.ac, license file, C source file with gettext support and even Elementary's quicklaunch feature. The generator itself is easily extensible, all one need is to add files to some directories (description, screenshot and source).
Elive guys created a similar tool "emodule-creator" deb, which is handy to start writing E17 modules with minimal effort.
Screencast
As Thanatermesis put very well in his mail:
Now there's only one thing needed to motivate new ppl to make e17 modules, something "to see".
The ppl dont' read, not much ppl at least... the ppl are lazy to download something and to try it, the best is a tutorial explaining the creation of an e17 module, but finally, what's better for that than a video that shows how we can build and customize an e17 module in less than 10 minutes ? :)
and then announced his nice screencast: http://www.youtube.com/watch?v=abNsVyYTSkU
by barbieri at November 08, 2009 01:04 PM
One of the most requested feature for Evas was rotation and other transformations. These are no more, Rasterman just did generic UV Mapping support, enabling rotation, perspective, 3d-simulation and more.
As usual he wrote a fast software engine to make this available on non-3d accelerated, next should come OpenGL and OpenGL-ES as some big players in the industry are now funding his work in both software and GL-ES support, as well as ARM NEON optimizations.
As ProFUSION is also being funded to work on WebKit-EFL, I thought I could demo our work using new rotation support, and the result is quite good:
As you can see, there are still bugs… actually this video was first meant to report a bug with mapping code, but raster is already fixing it.
As soon as I have time I’ll try to update EFL for N900 and try out the new expedite tests, they include 3d cubes, coverflow and more. Hopefully by the time OpenGL-ES will be ready and then we can compare software and hardware performance on this amazing hardware.
All in all, this semester is being quite busy for EFL hackers. Fast OpenGL-ES, UV Mapping, WebKit and soon-to-be-release Edje Editor were all done, with much more to come. Stay tuned!

by Gustavo Sverzut Barbieri at November 04, 2009 12:12 PM
EPhoto Manager is my latest application. This is photo manager written in C and based on the libraries of the Enlightenment project. The aim of the project is to create an application which allows to easily manage a huge photos library included big photo (20 000 x 20 000 for example). In the way to reach this goal EPhoto Manager use technologies like EET to manage the database or the Elementary object Photocam to display big JPEG files.
At the end EPhoto Manager will have a way to synchronize the local library with a distant server to share the photos on the Internet or to save a copy of the database on a server.

currently the features of EPhoto Manager are :
- Manage a list of albums with photos. More information below.
- Manage a list of collections. A collection is a set of albums. For example If you travel in Europa, you can create an album per country/city and a collection "Europa tour 2009", then you put the albums in the collection.
- Tags can be associated to photos, consequently you can group different photos with a common label. For example you can group the photos with your dog under the tag "Lassy".
- Photos can be import from the file system.
- Photos can be transform : rotate, flip, grayscale ...
- A slideshow in fullscreen is present with a set of animation. In the slideshow photos can be browsed.
- Only JPEG file are fully supported right now.
Two videos are available here : Video 1 Video 2
More information are available on the wiki page.
by Watchwolf at November 01, 2009 06:30 PM
Hello, I've been quite busy the last couple months with the university and I'll probably still be until December. Too many exams, course-projects and etc. Until then, I'll be focusing on: - eupnp: end-user applications, documentation, tutorial, libeupnp-av. Any help would be really good!
- (university) annoy-clock: project for the digital systems archicteture course
- (university) voice-scrambler or de-esser: project for the communication systems course
by André Dieb (andre.dieb@gmail.com) at October 19, 2009 09:32 PM
This release features a direct source download for the packages, which should help keeping the disk and bandwidth usage for non-developers smaller (more infos in the preview release message).
Changelog:
- removed libs etk and epsilon
- as etk was moved to OLD, following applications are dead and removed now: edje_editor, extrackt and exhibit
- onscreen notification support (notify module must be loaded in e17)
- new commandline argument --srcmode=<packages/full>
Download, enjoy and drop me a note if you find something uncommon.
by Brian 'morlenxus' Miculcy at October 18, 2009 11:59 PM
Ephoto has gotten many updates in the last few weeks! - The thumbnails browser has gotten resize and paging fixes and now works very well.
- A flow browser has been added to browse through pictures one at a time at a large scale.
- A slideshow has been added with a nice fade transition for pictures.
- The user may go fullscreen at any time now.
- Ephoto now takes command line options, namely those to set with engine to use.
There are still many things to do, but ephoto is now quite stable and useable. If anyone who is good with graphics is interested in helping make the edje prettier, please let me know! 
Thanks, Stephen "okra" Houston UnixTitan@gmail.com
by UnixTitan@gmail.com (Administrator) at October 14, 2009 11:05 PM
This is a preview of the upcoming version 1.3 of easy_e17.sh . It introduced a new feature: The script searches in the svn tree for the destination of the packages and only downloads these source dirs. This should save a hugh amount of bandwidth and disk space usage. You can force the old behavour with the commandline argument --srcmode=full. Notice: If you already have a full source checkout, you need to delete the old dir (probably ~/e17_src) to use this new feature. There are also other new features like onscreen notification using ` e-notify-send`. Please download, test and comment!
by Brian 'morlenxus' Miculcy at October 08, 2009 02:57 PM
It’s done: http://trac.enlightenment.org/e/changeset/42825
This was a often requested feature by friends, ProFUSION clients and people that want to use the large amount of GLib-based libraries with EFL applications.
To avoid impacting each other, the suggested way is to have each main loop in its own thread, communicating these using pipes. This is used by Emotion’s GStreamer plugin, lots of projects inside ProFUSION or for our clients. But sometimes this is not easy to do (Adobe Flash plugin for WebKit-EFL) or maybe we just want to do an experiment until native efl version is available (for example, EUPnP is still in early stages, while GUPnP is rock solid).
This enables (or makes it easier) using nice projects from EFL applications, to name a couple of personal interest:
- Rygel: Rygel is a collection of DLNA (UPnP AV) services (devices in UPnP speak).
- GUPnP: object-oriented (GObject) open source framework for creating UPnP devices and control points.
- PulseAudio: sound server. Although it is possible to write your own main loop support for pulse, it’s much easier to use glib’s until someone writes ecore_pulseaudio.
- Moblin Mojito: ocial data server which will fetch data from the “social web”, such as your friend’s blog posts and photos, upcoming events, recently played tracks, and pending eBay auctions. It also provides a service to update your status on web services which support it, such as MySpace and Twitter.
- Google Gadgets: similar to E17 gadman, provides sandboxed widgets. It allows storing basic data and network I/O, so there are forecasts, stock options and rss feeds. It would be nice to have a native port (we’re working on it), but meanwhile using GTK’s infrastructure would help.

by Gustavo Sverzut Barbieri at October 01, 2009 04:57 AM
I have built new Windows installers (with or without debug symbols). It installs everything which is needed for Elementary and Ewl, and Expedite. It is built with source code of September the 27th 2009, with some local modifications that will be committed upstream later.
The link is in the binary packages page (at the bottom).
Please test and report problems
by vtorri at September 28, 2009 06:52 AM
While Sqlite is a database manager, Eet can only serialize a structure and save it into a file. Both are completely different but I have tried them in my application.
pm_sqlite.zip
pm_eet.zip
The application
The application is a photos manager. From a root folder the application create a database of albums and photos. The folders in the root folders are the albums and the images in the albums are the photos. The application use 2 main operations :
- load : load the list of albums / photos from the database.
- synchronize : synchronize the hard drive and the database (detect new photos; deleted albums).
The first operation made by the application is to load the database into the memory, then the database is no more used by the main thread. The synchronizer, which is running in a thread, works with the database and notify the application when a change is detected.
Sqlite
The advantages of sqlite is the query language, eet can only load a complete data from a key while Sqlite can do a query. This can be useful to create filters ( date, tags ...).
The Sqlite version store the data in 1 database/file. The schema is :
TABLE root( "
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"path VARCHAR( 2048 ), "
"UNIQUE(path))
TABLE 'albums'( "
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"id_root INTEGER, "
"path VARCHAR( 2048 ),"
"file_name VARCHAR( 255 ) , "
"name VARCHAR( 255 ) NOT NULL, "
"time INTEGER NOT NULL, "
"description VARCHAR( 2048 ) NULL, "
"UNIQUE(path, file_name))
photos( "
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"path VARCHAR( 2048 ),"
"file_name VARCHAR( 255 ), "
"name VARCHAR( 255 ) NOT NULL, "
"time INTEGER NOT NULL, "
"description VARCHAR( 2048 ) NULL,"
"thumb_fdo_large VARCHAR( 2048 ) NULL,"
"thumb_fdo_normal VARCHAR( 2048 ) NULL, "
"UNIQUE(path, file_name))
TABLE album_photos( "
"id_album INTEGER, "
"id_photo INTEGER,"
"PRIMARY KEY(id_photo, id_album))
PRAGMA synchronous = 0;
Maybe the database can be improve but I do not know how. I already use some primary keys, index, pragma synchronous = 0 and all my application works in the same transaction (begin/end).
datadigger and Habbie gave me some idea on #sqlite :
PRAGMA page_size=16384
PRAGMA cache_size=100000
These new options change nothing.
Eet
The Eet version use 1 file in the root folder, this file contains the list of albums :
- 1 Eina_List of char* (the folder name) of each album. This list can be reorder by the user.
- 1 album structure by album identified by the album folder name.
Then We have 1 Eet File by album using the same layout than the main Eet file :
- 1 list of photo file name.
- 1 key by photo.
The advantages of this version are :
- The database is split into many files, we can find what we search fast.
- The transformations of a query result into our structure is not necessary.
Disadvantages :
- no query language.
- only available for the C language. (but a binding can be write for others languages)
Benchmark
The sample is a list of 1231 albums and 27657 photos. The first operation is the creation of the database, the second is the loading and the third is a new synchronization HD<-> DB but no changes are detected this time.
Sqlite :
- synchronizations : 13.549337 sec
- loading : 7.568932 sec
- re-synchronizations : 10.670898 sec
Eet :
- synchronizations : 3.375625
- loading : 0.912872 sec
- re-synchronizations : 2.530690
I think the result speak for himself. I will keep the Eet version and use some hash-table/binary tree to construct my filters.
by Watchwolf at September 27, 2009 08:51 AM
WOW, that was awesome!
Jumping from a plane, 4000m (13123.36 ft) above earth, falling for 50 seconds with an average of 200km/h (124.27mp/h). Unbelivable, you should try that!
There is a video record of my jump at the media section. Enjoy! :)
Btw. if you know the name of the rockin' track played during my free fall - please give me a hint.
by Brian 'morlenxus' Miculcy at September 27, 2009 02:31 AM
Ephoto 5.15 is now in Enlightenment SVN!
After months of hard work to convert ephoto from using a toolkit to using evas and edje, I have finally reached a point where I felt comfortable putting it into SVN. It is possibly buggy, and I'm not sure how it performs yet(works fine for me, however it can be slow and needs some tuning for efficiency), but it still needs some work and features, and I am going to continue to improve it. Those using it will get those changes frequently now that it is in the svn repository. Currently ephoto's only feature is to run it in a directory in which there are images and browse through them using arrows. There are guaranteed to be many more features to come! Stephen "okra" Houston UnixTitan@gmail.com
by UnixTitan@gmail.com (Administrator) at September 26, 2009 06:17 PM
Hi all, developers and users, this topic should be of interest of you: logging.
Update: I did a replica of this page in wiki as EinaLog, please add improvements and suggestions there so we use it as documentation.
Users
For users, this will help you to figure out source of problems. Developers may ask you the output and give you the exact command line to run, but one example is:
EINA_LOG_LEVEL=4 expedite -e xlib
This will run expedite benchmark tool with all logging domains at level 4 (debug, the greater the number, the more verbose it will be). It should show lots of output lines like:
DBG:eina_module eina_amalgamation.c:8811 eina_module_list_load() array 0x65ca10, count 0
The line is easily grep-able, the first 3 letters are the log level name or number if it's less than zero or greater than 4. Then follows the domain name (eina_module in the example) followed by the source file (eina_amalgamation.c), line (8811), function name (eina_module_list_load) and then the message.
It should be colored as well, making it easier to spot different levels and domains.
To disable colors, use the environment variable EINA_LOG_COLOR_DISABLE=1
If one dislikes having both file/line and function (often they are redundant), then disable one of them with EINA_LOG_FILE_DISABLE=1 or EINA_LOG_FUNCTION_DISABLE=1. Do not use both, in that case just function will be disabled as file/line is more specific (and thus useful).
If program is multi-threaded and thread-safe logging is initialized (eina_log_threads_enable()), then logging from other threads (any other thread than the one that called eina_init()) you'll see another component: [T:XXXX] where XXXX is the thread number. This is to make sure the code is running in the proper place.
What is interesting about eina log is domain support. This enables us to see debug log for one module while seeing information for another and just warnings for the rest. Let's say we want to see debug for eina_module, info for eina_stringshare but just warning for everything else, we'd use the following command:
EINA_LOG_LEVEL=2 EINA_LOG_LEVELS=eina_module:4,eina_stringshare:3 expedite -e xlib
The first variable sets the generic log, as explained above. The new variable EINA_LOG_LEVELS specifies a comma separated list of domain:level. Domain names are specified in source code and is not dependent on file name, so developers should document available domains.
Developers
For developers it's easy: either use the global domain EINA_LOG_DOMAIN_GLOBAL or register your own domain.
Using the global domain can be handy to quick debug, but it's not recommended for the long run. To use it, one can use pre-defined macros: EINA_LOG_CRIT(), EINA_LOG_ERR(), EINA_LOG_WARN(), EINA_LOG_INFO() and EINA_LOG_DBG(). These macros are like printf() and should be easy to convert an application using printf() or fprintf() to it.
To register your own domain it's as simple as calling the function eina_log_domain_register(), it returns the log domain identifier that should be used with macros like EINA_LOG(), EINA_LOG_DOM_CRIT(), EINA_LOG_DOM_ERR() and so on. To make life easier, it's advised that applications declare their own macros. Example:
Using in a single C file
#include <Eina.h>
static int _log_dom = -1
#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
Eina_Bool my_code_init(void) {
if (!eina_init()) {
return EINA_FALSE;
}
if (_log_dom < 0) {
_log_dom = eina_log_domain_register("my_code", NULL);
if (_log_dom < 0) {
EINA_LOG_CRIT("could not register log domain 'my_code'");
eina_shutdown();
return EINA_FALSE;
}
}
DBG("initialized!");
return EINA_TRUE;
}
void my_code_shutdown(void) {
if (_log_dom >= 0) {
DBG("shutdown!");
eina_log_domain_unregister(_log_dom);
_log_dom = -1;
eina_shutdown();
}
}
void my_code_func(int val) {
DBG("val=%d", val);
if (val < 1) ERR("val less than 1, val=%d", val);
}Using from multiple C files
Your private (my_code_private.h) header should contain:
#include <Eina.h>
extern int _my_code_log_dom = -1
#define ERR(...) EINA_LOG_DOM_ERR(_my_code_log_dom, __VA_ARGS__)
#define DBG(...) EINA_LOG_DOM_DBG(_my_code_log_dom, __VA_ARGS__)
Your main source file:
#include "my_code_private.h"
Eina_Bool my_code_init(void) {
if (!eina_init()) {
return EINA_FALSE;
}
if (_log_dom < 0) {
_my_code_log_dom = eina_log_domain_register("my_code", NULL);
if (_my_code_log_dom < 0) {
EINA_LOG_CRIT("could not register log domain 'my_code'");
eina_shutdown();
return EINA_FALSE;
}
}
DBG("initialized!");
return EINA_TRUE;
}
void my_code_shutdown(void) {
if (_my_code_log_dom >= 0) {
DBG("shutdown!");
eina_log_domain_unregister(_log_dom);
_my_code_log_dom = -1;
eina_shutdown();
}
}
Your secondary files:
#include "my_code_private.h"
void my_code_func(int val) {
DBG("val=%d", val);
if (val < 1) ERR("val less than 1, val=%d", val);
}
One can define EINA_LOG_ABORT=1 to make eina abort on levels less or equal to critical. This level is used by safety checks and other paths and can make debug easier, just run it from inside gdb and it will stop on failure.
by barbieri at September 17, 2009 03:58 AM
It has some time since my last post. During this months I've been fixing, adding features and fixing (yes, again) several libraries on the stack I've been developing. Lots of stuff have changed, Enesim's API is getting more stable, Eon and Ekeko have hit E's subversion, etc.
Loading xml files for different scenes is great, but not too great if you want to test the usability of the system, so I've started an Eon builder. A way to create objects, define and assign paint objects, animate them, etc, etc. Here's a simple demo of what's going on there
As you see, it is on a very basic stage, you can move objects, resize them, etc. There's no toolkit used (yet?) mainly because I haven't decided yet what's the best approach, something similar to edje? an external xml + put-your-preferred-scripting-language? something similar to CSS but more powerful? Need to solve this before starting with the toolkit ...
by turran (noreply@blogger.com) at September 10, 2009 10:53 PM
This is going to be a long post, I’m going to go over a bunch of stuff, so feel free to go and fetch some coffee before reading it
We’ll be talking about Google Summer of Code, Project Memphis, a kick-ass community project using Canola and also the pending release.
As part of the Maemo project umbrella, Canola got 5 slots for this year’s GSoC. The 5 approved projects were for new plugins for Canola, and now that GSoC has finished I believe it’s time to write a post showing some of the work that was done. Hopefully the students will keep doing new stuff not only on their plugins, but on Canola itself. The entire GSoC experience was quite interesting, and we’ve learned a lot during it and will try to make it even better next year. You can find more info about each plugin here, but let me show off a few screenshots.
Lauri Võsandi worked on a bittorrent plugin for Canola. It has support for fetching RSS feeds, searching within a few sites and also managing running instances of Transmission both on the tablet or somewhere else (though it does not depend on transmission to work stand-alone). This is a personal interest of mine, hopefully it will be coming to the maemo-extras repository soon so that others can try it out and if you have any suggestions for improvements here (and for the other plugins as well) send an email to the canola-devel mailing list.
 Canola Bittorrent plugin
Thiago “bolaum” Borges Abdnur worked on a instant messaging client, which promises to bring quite some cool features to Canola. Some parts of his implementation used the awesome Elementary project from the Enlightenment Foundation Libraries (on which Canola is based). The plugin uses telepathy and therefore has support for all the major IM networks. Something to watch out for is integration between UPnP plugins and the awesome Bonjour network (which this plugin already supports), so Canola users could share media with no extra configuration of any kind, just search for your friend on the network and select what you want to send him.
 Canola instant messaging plugin
Andrei Mirestean worked on a Picasa plugin, one of the most requested plugins for Canola. It already supports most of the features that Picasa users need, and last I heard Andrei was implementing support for geolocation on it (a first for Canola).
 Canola Picasa plugin
Andrey Popelo worked on a Remember the Milk plugin with support for not only seeing tasks but also creating new ones and synching them. I still need to test this one better, been quite busy lately and haven’t had the time yet, but it promises to be quite an interesting showcase of Canola being not only a media player but a kick-ass platform for developing all kinds of different applications. One thing I’d really like to see done on this plugin for the future is geolocation, so I could easily have TODO lists that were related to what I was doing at the time (work, shopping, etc.).
 Canola Remember the Milk Plugin
And Kasun Herath worked on a Twitter plugin, which is already working for regular tweets and should have support soon for tweetpics (pardon me if the terminology is wrong, but I’m most definitely not a Twitter user).
 Canola Twitter Plugin
Well, that’s it for the Summer of Code projects. If you’re interested in testing any of them, just go to their page on the Maemo wiki (linked above) and there should be up to date .debs there for you to try out.
Some of the guys at ProFUSION have worked lately on an in-car entertainment center called Project Memphis (video here). It’s a really sleek demonstration and we should be hearing more about it soon (I promise another blog post about it on a not too distant future).
Regarding the next release (the first as a Free Software project), it should happen quite soon, Eduardo “Etrunko” Lima is hard at work on it and it should be coming out any time now. I also heard he is working on a book, someone sent me a supposed cover for it but I’m not sure if it’s the real thing or not:
 Maemo Packaging for dummies
Also, sometime ago Morgan Tørvolt sent me info about a car-pc project he was doing using Canola. His email was quite detailed, so I’m just going to paste it here (it has links to screenshots as well):
Hi luis,
As promised, I am sending you an e-mail with some pictures and text
related to my car-pc project.
Pictures: http://picasaweb.google.com/Morgan.Torvolt/20090601BilderAvBilPCen?authkey=Gv1sRgCNqFpeaJ65m9vgE&feat=directlink
Text:
After years of wishful thinking, and looking at different hardware and
setups, I managed to order parts for my Car PC about a year ago. The
build did take some time due to me always being busy. After that, I
have been trying to run KDE, Gnome, Linux ICE and others, hoping that
I woudl manage to set up a computer that works well as a media player
and GPS in my car.
When I came across Canola a while back (trough the Mer project), I was
instantly sure that this was what I needed. Finally a touchscreen
friendly media application for media playback.
I installed canola from svn, with good help from the guys at the
#canola IRC channel and some guides. After some initial startup
problems, I had my PC mounted in my car in about a day. I have been
using it there for a few weeks now, and it works very well.
I have been tweaking things back and forth for a while, running Canola
under KDE. This was not a very good solution, as the boot-up time is
very long, and I don’t need all the window manager stuff. I have now
managed to set the computer up so that boots right into an X session
that runs only Canola. No window manager or anything else. Boot time
is still a bit on the slow side, but after POST, it takes somewhere
around 15 seconds.
The system consists of:
CPU: Core Duo 1.83GHz
Motherboard: https://store.mp3car.com/ProductDetails.asp?ProductCode=MTB-016
Monitor: https://store.mp3car.com/ProductDetails.asp?ProductCode=MON-001
PSU: https://store.mp3car.com/ProductDetails.asp?ProductCode=PWR-015
Double DIN frame:
https://store.mp3car.com/ProductDetails.asp?ProductCode=DSH-012
GPS: i.Trek M7 USB
Wlan: Unknown USB dongle
I-bus: http://www.canusb.com/
The double din frame fits straight into my dashboard. The entire thing
takes up no more space than my old original stereo. I am very happy
with how that turned out. Fitting the screen was easy, as the case is
built to fit the screen. Fitting both PSU, motherboard, Harddrive and
all the other stuff was not so easy. Especially the long original
cabling that came with the screen was an issue. I had to make a custom
VGA plug, and connect the USB interface for the touch screen directly
to the motherboard and not to the rear USB connector. In fact, I
cannot use any of the rear connectors as there is not enough depth in
the dashboard for that. As you can see from the pictures, I have used
an angled connector for audio, and made a custom VGA connector.
I use a USB 2.0 hub that I will put in the glove compartment. I
connect the CANUSB, GPS, Wlan and potentially an external drive, mouse
or keyboard to that. I provide 5V power to the hub directly from the
PSU. I also drive the Lilliput screen from the PSU, but this is from
the 12V rail. This way everything is turned off properly when I stop
the car.
Future plans:
- First get the CANUSB device to grab data from the databus in my car,
so that I can grab the bottonpresses from the steering wheel buttons.
Secondly, I need to somehow get Canola to accept these presses,
probably trough a python daemon I will make. Next, previous, volume
+/- should be made to work. A way to use the buttons to move about in
the menusystem would also be nice. There has been some work done for
this communication on the I-bus. Volkswagen has to my knowledge added
networking componet that works similar to IP traffic to the latest
linux kernel. Maybe use this?
- To make this complete, I need to run a GPS application. The plan is
to use one of the steering-wheel buttons (the “next” button I guess)
to switch between Canola and Navit. Even better would be to embed
Navit in Canola somehow. The last option is probably the better one as
I am not running a windowmanager.
- My Saab 9-5 even has a built in amplifier. Unfortunately they have
chosen the professional version of audio signals, namely balanced
audio. This did not work well with a standard line out level, so now I
am using a ground loop isolator unit to be able to connect to the amp.
I am thinking of making a line level to balanced converter in order to
get higher volume and more bass than I get now.
- My Saab also has a built in microphone for handsfree. I wish to
connect this to the line in, and get a bluetooth device to connect to
my phone so that I get handsfree.
- Radio and TV support would be cool. Maybe Canola will support tuners
in the future?
- I wish to have something like Carman (
http://openbossa.indt.org/carman/ ) to be able to show stuff like
actual speed, rews, gas usage, gas milage and other interesting stuff
that I can grab off the databus of the car. There is quite a lot of
data available there (
http://pikkupossu.1g.fi/tomi/projects/i-bus/i-bus.html ).
- Add a rear facing camera that is activated when in reverse gear (
get this data from the car databus )
- Add a forward facing camera that detects street signs and speed
limit signs and informs the driver, much like what has been made
publicly available by Mercedes, and also Opel/Vauxhall lately.
I am very aware that I will not be able to do much of this in the near
future of course, but maybe I will get there someday? Probably I have
a car with all of this built-in by then…
Morgan Tørvolt
Awesome project Morgan, and thanks alot for the detailed information.
Well folks, that’s it.
by messias at August 24, 2009 04:21 AM
e17 News
- Gustavo added an Aspell plug-in to the Everything module. This means it can now tell you how to write words correctly (in multiple languages).
 changeset:41536
- Raster worked around the 100% CPU batget issue. It now gets battery changes not as soon they happen, but only in a certain interval. A proper fix for very recent kernel versions is still wanted.
changeset:41836
- He also is working on a successor of the illume module for small touchscreen devices, called illume2.
changeset:41883
EFL News
- Enhance, the Glade/XML based Etk-GUI-Builder is unmaintained and has been moved to "OLD/". So has Extrackt which is based on Enhance.
- Raster did a big release of various EFL: Eet is now at 1.2.2 (new stable release, no API change but lots of improvements).
Various other EFL have been release as snapshot 062, while Elementary is now at 0.5.1.0. See the announcement at http://enlightenment.org/p.php?p=news/show&l=en&news_id=17
- Turran added two new EFL research projects to SVN: Ekeko, a object/property system and Eon, a canvas/toolkit system.
changeset:41542
- Although raster didn't believe in it, Gustavo is still planning to merge Guarana and Elementary. There are still quite some hurdles to take and it will require time and a lot of help from other people, but it looks like it's going to happen. The first step will be a change in the Evas_Smart_Class system which is currently up to discussion on the mailinglist.
- Cedric added the ecore_thread_run function to spawn threads that are well integrated with the EFL. This also features automatic detection for CPUs with multithreading functionality (also multicores and so on).
changeset:41555
- Last but not least, Quaker added horizontal and vertical separator widgets.
changeset:41911
- Brought to you by Hanspeter Portner, Edje finally received Lua support. This means you can now use Embryo and Lua embedded in your Edje files to do awesome stuff. In the long term only Lua will stay, so you better start using it. :)
changeset:41802
- According to Vincent, ecore_config is going to be removed soon. Don't forget to change your applications.
Application News
- Raster committed his Elementary-based presentation tool (you can find it in trunk/TMP/st/).
changeset:41729
- Watchwolf is currently writing Elementary front-ends for Eyelight. Initial support for the editor is in svn.
changeset:41819
i18n News
- According to Gustavo there are some problems for Arabic EFL users with Fribidi, so Arabic letters won't show correctly. This is caused by a too old Fribidi version, 0.19 is known to work.
Developer Requests
- Cedric added caching support for the _edje_part_recalc_single function in Edje. This is still not much tested and might cause graphic problems in applications using Edje. If you experience any problems, feel free to report them on the list.
changeset:41663
- This year's GSoC is nearing its end with the evaluation deadline on August 24th and the announcement of the results one day later.
- The people of ProFUSION announced their newest project, an EFL powered car entertainment software solution called Memphis. It is based on their earlier multimedia project Canola2 and available completely under a free license with optional commercial support. Let's hope to see this deployed in a production car soon! In the mean time, check out the demo media on their site: Memphis by ProFUSION
- Following some other projects in this direction, the developers of the Pandora handheld gaming console (which is actually rather a quite powerful linux based tiny notebook) are evaluating e17 as their main desktop for the device.
by thomasg at August 23, 2009 05:45 PM
I have looked a bit at the OpenSolaris port. Though its compiler is a lot more strict than gcc, Eina, Eet, Evas and Expedite can be compiled. Expedite seems to run too.
The instructions on how to compile the code on that platform can be found here.
I still have problems with the compilation of Ecore and Embryo, but I'm investigating that. Any help is welcome, of course.
by vtorri at August 20, 2009 11:18 AM
We've just passed the firm pencil's down date. Here's a final report for Eupnp GSoC project: - Discovery, Description, Control features completed (which provide a basic control point functionality set)
- Multi-toolkit: one can easily integrate Eupnp with Qt, Glib, Ecore or any other toolkit/framework that provides the basic functionality required. We already have integration with Ecore (EFL)
- Event Notification incomplete (we're able to subscribe for events but for now you're only able to receive raw messages)
- Internet Gateway Device configuration tool incomplete (able to list IGD devices)
Even though the program ended, I'll obviously keep working on Eupnp. Here's an updated TODO list: - Finish implementing Event Notification
- Finish IGD configuration tool
- Finish API documentation, write a tutorial
- libeupnp-av (UPnP Audio/Video specification) extension library
Ideas/future features: - Universal control point
- Python bindings
- Maemo porting
- Canola plugin
- Device building ability (UPnP server)
PS: Big thanks to Gustavo Barbieri (my mentor) who helped me throughout problems and taught me lots of programming techniques. Also thanks to EFL guys (raster, Sachiel, vtorri, cedric, etc) who had the patience to read my patches and answer my stupid questions on IRC :-P.
by André Dieb (andre.dieb@gmail.com) at August 19, 2009 07:01 PM
Exalt has reach an important step this week.
- We can create our own wireless network
- remove some segfaults in the module
- seems working fine
Now I need a maximum of feedbacks, especially about the wireless interfaces. If you are interesting you can join me on #edevelop, #e.fr, the devel ML or jonathanDOTDOTattonATATgmail.com.
To install exalt you have to compile PROTO/exalt, then run the daemon as root "exalt-daemon --nodaemon", finally compile the module E-MODULES-EXTRA/exalt-client and add it in a shelf. Now I'm taking a break from exalt and work on eyelight.
What about eyelight ?
First, now eyelight has a smart object (see PROTO/eyelight/src/lib/Eyelight_Smart.h). Consequently we can easily add eyelight in an application. The smart object can manage the events by himself (right, left ...) but by default this is not activated because generally an application will use his own events (click on a buttons ...). Oh I forgot, as eyelight is a smart object, I have added the possibility to add a presentation in a presentation. This sound a bit crazy but this is an example to show how we can easily add a smart object in eyelight, consequently we can add a lot of support (elementary widgets ? ). See the video: Eyelight a presentation in a presentation
I have began an eyelight editor writing with elementary. The editor will works like edje_editor and will be simple because I don't like using a complex application as ooimpress and I don't plan to work on it all my life :). Currently we can edit nothing but only display a presentation. See the video: eyelight editor

by Watchwolf at August 16, 2009 01:45 PM
Hello, I've just finished implementing the last requirement (embedded devices parsing) for our IGD client. Concerning the project as a whole, we have the following features and TODO's: Features: - Discovery: SSDP client
- Description: fast and light SAX parsers for devices and services description files
- Control: SOAP support implemented
- Integration interface for external toolkits/libraries (ecore, glib, qt)
- eupnp-ecore: integration library with ecore library
- Command line control point application example
- IGD GUI application listing devices
Missing/TODO (by order of priority): - IGD GUI controlling IGD devices
- Event Notification: subscribing for variables updates
- Docs, tutorial
- UPnP Audio/Video extension library (libeupnp-av)*
Also, it's good to remind that today is the suggested GSoC pencil's down date. To quote the timeline: August 10: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc. Concerning their sugestion and the timeline, we are almost on schedule (on the original plan we had item #2 on the first release and item #4 on the second release*). Items #1 and #3 will certainly get done on time (before August 16). I also wish to deliver item #2 on time, which is an optional UPnP feature but is very important and widely used. * libeupnp-av has been postponed in favour of the IGD GUI as the A/V specification is extremely extensive and the IGD GUI is a simpler showcase for the project - at least for now. Enough with the talk, pants on and code!
by André Dieb (andre.dieb@gmail.com) at August 10, 2009 04:18 AM
I’ve already written an article about the new state system of ewl for
programmers. This article will concentrate on the stuff that is interesting for
the themers. In fact the new event system gives the themers more possibilities
to design their theme. This was one of the motivations to do this changes.
To keep this article simple and general I will not comment the actual changes,
but I’ll talk about how the event system works now.
Some words about the lifetime of an edje object
Unlike to other widgets lib based on edje, ewl has not a permanent edje object
per widget. If a widget gets off-screen or is hidden it will not have an edje
object. This state is called obscured in ewl. This means that any change to a
obscured widget cannot be repeated to the edje object, because there is no
edje object. So we will differ in ewl and in this article two different types
of state changes. The first type is an active change, i.e. there already exists
a edje object and a state changes. The second type is for a widget that is
revealed (= the widget is not longer obscured), it already has some states set,
maybe long before.
A little example
This all may sound complicated for you. Let’s take a look on a real-life
example to illustrate the difference. We have a list of check buttons in a
scroll pane. Now we click on an un-checked and visible check box. The check box
will toggle to the checked state. As a themer you maybe want to have an
animation here, like the check is bouncing or fades-in. Now we scroll this
check button off-screen, hence it is no longer visible. Ewl will now destroy the
edje object, in fact it will not destroy it but reuse it for other widgets. The
important point is that the widget doesn’t have this theme object any longer
associated to itself and thus we lost all state informations for the theme
object. If we now move the check button back to the screen, ewl will create a
new theme object for it, so we need to inform it that the widget is already
checked, but this time we do not want the animation, because the state of the
widget has not been changed. It is only the state of the edje object that
changes. So we need another signal name for it.
And here comes the new state system, formerly it was not possible in ewl
to distinguish between such different edje theme state changes. Now it is!
The new signal names
Puh, that was much text, sorry I’m bad in summarizing stuff. Besides that we
differ between getting a state and having a state. We uniformed the signal
names. Here is a table of them:
adding state removing state has state
"mouse,in" "mouse,out" "hovered"
"mouse,down" "mouse,up" "pressed"
"focus,in" "focus,out" "focused"
"disable" "enable" "disabled"
"highlight,on" "highlight,off" "highlighted"
"selection,on" "selection,off" "selected"
"state,on" "state,off" "on"
"odd,on" "odd,off" "odd"
"dnd,in" "dnd,out" "dnd"
One special case is “mouse,down” and “mouse,up” you also get a “mouse,down,x”
and “mouse,up,x” where x is the button number pressed. But this states are
custom states and aren’t inherit to the internal child widgets. You’ll learn
more about internal child widgets in the next section.
Even more things are now possible
Many ewl widgets are a composition of different widgets, for instance let’s
talk about a button. A button is a container that holds a label and maybe
an icon, if present. This label is an internal widget, because it is not added
by the app writer, but an inherent part of the widget. Those internal widgets
now inherit the states of the parent widget. To differentiate between state
changes of the parent and of the widget itself the source is a different.
It used to be “EWL”, now it is “ewl/this” if the change is done to the widget
itself, if the state of the parent is changed the source is “ewl/parent”. There
is even a third source I’ll explain later.
Let’s go back to our button example, if the mouse enters the button you maybe
want to change the background (the outer shape) of the button, that isn’t nor
was it a problem. But what happen if you turn the light background into a dark
one? Now the font of the label is most probably not visible. In contrast it
needs to be changed from dark to light.
Now the label theme object will also receive a signal if the background state
changes, so that you can adjust the font color. Very often you don’t care if the
state changes happens to the widget or it close parent. It should always behave
the same. Therefor there is a third source “ewl/both”, it is send if one of the
widgets (the actual widget for theme and the (maybe indirect) parent) is getting
the state, or if none of them is having it no longer.
Custom states
Because the list of states given above is not always sufficient for every
widget, there are also custom states. Custom states are more like pure edje
signals, they are not repeated to the child widgets of a container, and they
do not necessarily differ between getting and having a state. But the usage of
custom states in ewl is rare. Custom states will always have “ewl/this” as
source.
I hoped this explained the new features of the new state system. If you still
have questions about it, do not hesitate to ask them.
 pfritz
by pfritz at August 09, 2009 08:47 PM
 Nothing fancy for now, but we're on our way to end user tools :). This little application already lists and searches for Internet Gateway Devices using Eupnp and Elementary. Next step will be about adding a dialog for controlling these devices (easy to do) but I need to strike-through one last TODO item before adding it (embedded devices parsing).
by André Dieb (andre.dieb@gmail.com) at August 07, 2009 09:52 PM
This is a followup of my previous post, but now running on Nokia Internet Tablet N810 with Maemo. We interleaved it with parts of screen casts so you can note it’s very close to the desktop edition, even animated video thumbnails works fine:
We even managed to convince Mariana to do the initial talk!

by Gustavo Sverzut Barbieri at August 07, 2009 01:50 AM
Most apps and libs in the e-land are migrating or are already migrated to eina.
And you probably know that Nathan and me are not big fans of eina. Here a
some points we dislike:
- the API
- the licence (unlike almost all efl libs it is not BSD-like)
- the scope (eina handles many things that do not belong into a data type lib)
I’m not going to go into details here. The decisions are already done. We
will not use eina for EWL. As you see it’s not only one point, but a bunch of
several issues that we dislike. At the moment EWL is using the ecore data types,
but I guess they will be removed from ecore soon. So we have basically two
choices:
- We can revive EWD, i.e. make a stand-alone lib out of the ecore data types
- We can switch to another data type library
Since there are some problems with the ecore data types, in particular the
missing iterator implementations and we also missed some other sugar, we took
the second way. After checking several adt libs, we chose to write our own one, because none has all the feature we want.
For sure this step was not ill-considered, we already discussed years ago about
the future about the ecore data types, but now we are taking the chance to
switch to a similar but not API compatible design. The lib is called
cmaid.
Cmaid
The basic design ideas of cmaid is a mixture of ecore, libast and some new bits.
From libast it has the interface design. I.e. you program against an interface
and only on creation of the data type, you choose what implementation you
actually take. This makes it easy to switch from one implementation to another.
It also brings an inheritance stair, so ecore_hash_count() and
ecore_list_count() becomes cmaid_container_count().
From ecore it has the API and also the hash implementation, most of the
function names are very similar to the one of ecore, except those for
iterating. Not directly from ecore but from an idea of Nathan for improving
ecore_hash is Cmaid_Value. It’s describing the data to be stored in the
container. This can reduce the allocation time because it can in-line the data
into the data node, of course, only if you desire it.
Really new is the iterator concept. Unlike to many other adt libs there is
no rule like: Do not touch the container while you are iterating. If you
remove some item the container will correct your (other) iterators to point to
the right and valid position. This works because the container has a list of
all attached iterators. It might sound heavy, but those few checks that are
done, are not a really slow down, compared to the luxury they bring. Of course
if you artificially add thousands of iterators it becomes heavy, but that’s not
the life as it is.
If you are now curious about cmaid you can find it
here and
here the documentation. BTW cmaid is still
not finished, and the port of ewl to it will take some time.
 pfritz
by pfritz at August 05, 2009 07:31 PM
I finally managed to get XML fetching (devices and services) done. I lost a lot of time going against libcurl directly, so the solution my mentor proposed just fit: export a core download function that is provided by the integration toolkit (e.g. ecore_con_url from ecore toolkit).
I'll try to make up for the time lost and move on now for controlling!
Cheers
by André Dieb (andre.dieb@gmail.com) at August 03, 2009 10:07 PM
I just finished implementing the SCPD (service XML descriptor) parser, which leads me to the next phase: Control.
I'll be implementing Control in the next two weeks, which will be about using libcurl to perform HTTP POST calls with some attributes wrapped in a SOAP XML. The biggest problem about this is making libcurl work properly (I have just had two days debugging a stack corruption which lead nowhere, result is feature suspended).
Finished this task, I'll implement a simple application using elementary for listing local devices and information about them (i.e. universal control point). This is good to demonstrate functionality.
This will be followed by the control point A/V spec, task which hopefully I'll finish before GSoC pencil's down date (16 August).
by André Dieb (andre.dieb@gmail.com) at July 31, 2009 10:27 PM
Over the last months ProFUSION worked hard on building Memphis, an in car entertainment system. Now we can finally publish the first preview of it, it is real and runs on couple of hardware we will demo later, including Nokia N810 (OMAP 2420) and Freescale iMX27, iMX31 and iMX35 with displays ranging from 4 to 7 inches, from 640×480 to 800×480.
The product is based on free software Canola2 platform, which we support as well. While some parts of it were made available over these months, including our optimized thumbnailer “Ethumb”, some parts will be available later, under the same license. It’s not an issue as you’re unlikely to get it from Volkswagen and running it BMW, what matter for clients is the product as a whole, not just software interface.
Work done so far is not just a face lift of Canola, it goes deeply in optimizations, platform roots and changes plugins as well. The roadmap includes fast UPnP server and control point, as well as GPS/maps and other car useful services.
Theme is just a demo, we call it “ProFUSION theme” as we use our own colors and font. Clients will get an unique look and feel as well as custom changes, such as integrating with real panel keys, text to speech and voice recognition systems.
Read more at http://profusion.mobi/node/17.

by Gustavo Sverzut Barbieri at July 31, 2009 12:06 AM
Eet 1.2.2 has been released with several bugfixes and improvements. It is
considered stable. It is available from
here.
Eina, Evas, Ecore, Embryo, Edje, E_Dbus, Efreet and Enlightenment have had a
snapshot release (snapshot 062), Elementary 0.5.1.0, and can be downloaded from
here. If
you are taking source from SVN, then
use SVN revision 41533.
Eet 1.2.2 was released, with the following changes:
- Reorder gcry init to be used during gnutls init
- Improve docs/examples in Eet.h
- Fix init on system without SECMEM
The snapshot release of Eina, Evas, Ecore, Embryo, Edje, E_Dbus, Efreet,
Enlightenment and Elementary includes lots of improvements and fixes. Too many
to put here, but these are not considered stable yet, and thus we don't track
changelogs. They do impose soname changes and module versioning now to make
packaging cleaner alongside SVN source installs. Please download, try and test
these.
by raster@rasterman.com
(Carsten Haitzler
) at July 30, 2009 01:20 AM
|
|