Page MenuHomePhabricator

Google Summer of Code 2009 Project Ideas
Updated 2,189 Days AgoPublic

The Enlightenment Project is dedicated to providing advanced graphical libraries, tools, and environments. Currently, the project is made up of three different components: Enlightenment DR16, Enlightenment DR17, and the [EFL Enlightenment Foundation Libraries]. While we are best known for the Enlightenment Window Manager itself there is a long history of providing advanced libraries and tools to support the window manager and other applications, such as Imlib, Imlib2, and FNLib which extend far beyond the window manager itself in scope.

While no organizations have yet been formally accepted by Google to participate in the Summer of Code 2009, we plan on applying and are very hopeful that we will be accepted. Below are some project ideas for the Google Summer of Code 2009.

If you are interested in a project below and have questions or comments, please feel free to join us in #e on FreeNode. You can also send email to our Development mailing list:

It was our intention to provide some sample applications so that students new to the GSoC could have an idea of what a well put together application might look like. However, our friends at Wesnoth have beat us to the punch. So, with their permission, here is a link to some of the applications submitted to their project for GSoC 2008. Note that such elaborate applications are not required. But there are certainly elements to many of them that are quite beneficial. For example, a list of deliverables, a timeline, mockup images if applicable, etc. All these types of things might go into a well thought out application.

NOTE: Student applicants are not limited to the ideas on this page. If you think you have a suitable idea, by all means, please propose it.

You can consult ideas from previous years.

Enlightenment WM

  • Module: Compositing Expose (Difficult) Implement exposé effect and OpenGL compositing**

Mentor(s): Undetermined

The idea here is to implement an Expose like window switching feature. This feature request is complicated by the fact that there is no native compositing manager for Enlightenment. There have been efforts to create compositing managers (Bang, Bling) which have met with limited success. Those modules can be used as references... but the suitability of using them as a base should be determined by the student/mentor pair.

Skills Required:

  1. Strong C background.
  2. Experience with OpenGL.
  3. fundamental understanding of how a compositing engine works.
  • Application (or module): emigrate (Medium) Export and import E setting, validating on import**

Mentor(s): Undetermined

The idea here is to implement an application (or module) that allow the import/export of E settings, in order to replicate the settings from a host to another.
The export can be selective, so the user can choose which settings wants to export, and can create a .emigrate file (EET or tar.gz) that contains settings and eventually other data.
The import have to check if the settings are appliable to the host, ex: missing themes or fonts, unappliable engine, etc.
The import can be merged into the Wizard module: the module looks for a .emigrate file into the homedir, and if it is found, the user can choose between cloned and new settings.

Skills Required:

  1. Strong C background.
  2. Fundamental understanding of E internal configuration.
  • XRandR 1.3 (Medium) add support for xrandr events and provide configuration dialog**

Mentor(s): Gustavo Sverzut Barbieri, Ulisses Furquim

New version of (The X Resize, Rotate and Reflect Extension - XRandR) provides the flexibility X11 always required, making it possible to do lots of reconfigurations without restarting it or dealing with xorg.conf, however applications and window managers will have to support its new protocol, also providing a nice GUI to handle these options.

This project will require implementing the protocol bits in ecore_x and using them in E17, also providing applets (gadgets) to change settings quickly and dialogs to configure more complex setups, like multi-screen layouts.

Skills Required:

  1. Strong C background
  2. Understanding of X11 (event loop, atoms, windows)
  3. Understanding XRandR 1.3 spec.
  • Netbook UI create a netbook user interface designed for small screens**

Mentor(s): Undetermined

Nowadays the mainstream netbook manufacturers has their own UI-s built on top of mainstream desktop environments. Examples are the UIs of Acer Aspire One, Asus eeePC, or HP's MIE. E17 could be an ideal netbook WM because it's effeciency, so creating a eyecandy edje-powered netbook ui would be nice.

This idea could be implemented as an e17 module. It should do some finetuning in e17's window management, to be ideal for netbook screens (just like Illume does for handhelds).

Skills Required:

  1. Strong C background
  2. Some sense of art for the design


  • RTF document evas-based renderer library (Difficult) **

Mentor(s): Vincent Torri

That library would allow to render RTF documents in an Evas object and increase the number of supported documents beside PDF, Postscript and DVI ones. The difficulty is of course the number of features to implement. General documentation and links (for specifications documents, examples and related software) can be found on Wikipedia. That library should follow as must as possible the API of the library epdf (which is also very close to edvi and eps).

Skills Required:

  1. Strong C background.
  2. Small experience with Evas.
  • Win32 port (Difficult) **

Mentor(s): Vincent Torri

The work of the student who applied for the same project last year added lots of features to the Windows XP port (Visual Stdio support for all the core EFL, Optimized Direct3D Evas engine, fullscreen, shapes for Direct3D engine and Drag'n Drop support in Ecore, etc...). Unfortunately, lots of things still must be done (beside bug fixing, of course):

  • Add a GDI Evas engine with shape and fullscreen support, merge it with the !DirectDraw engine and add support in ecore_evas
  • Use native surfaces in the !DirectDraw engine to optimize it (faster blit (done by hardware) and decreasing of CPU consumption)
  • Add shapes support for the !DirectDraw and OpenGL engines
  • Port of ecore_exe, then ecore_con and ecore_ipc (which rely on ecore_exe)
  • Implementation of notification in ecore_file
  • Implementation of selections in ecore_win32
  • Finish efreet port (icons and MIME type)

Skills Required:

  1. Strong C background.
  2. Strong experience with Windows programming.
  3. Understanding of Evas and Ecore are welcome but not necessary.
  • XCB port (Difficult) **

Mentor(s): Vincent Torri

XCB is another implementation using the C langage of the X Window protocol (Xlib being the most famous one). It has a lot of advantages compared to Xlib: lower footprint, thread safe, asynchronous. The two main advantages are a faster initialisation of clients (especally through an ssh pipe) and, for the Windows Managers, more "reactivity". Currently, Evas has already working XCB engines (though they might be improved) and Ecore has a rough XCB port.

The work will be to finish (actually improve) the current XCB port of ecore, by adding the possibility to get the replies of each X request in an ecore event. Once it is done and tested, integrate ecore_xcb in Ecore_Evas, and then, in Enlightenment 0.17 itself.

Skills Required:

  1. Strong C background.
  2. Strong experience with X Window programming.
  3. Good experience with XCB programming.
  4. Understanding of Ecore and E17 are welcome but not necessary.


  • Bidirectional Text Support **

Mentor(s): Carsten Haitzler

The idea here is to implement bidirectional text support for languages such as Arabic, Hebrew, Farsi etc. Pango or FriBiDi seem to be promising here.

Skills Required:

  1. Strong C background.
  2. Good understanding of Evas internal.
  3. Understanding of font and text layout technologies.
  4. Experience with pango ro fribidi would be a plus.
  • Evas text grid object **

    Implement a text grid object

Mentor(s): Cedric BAIL

That object is needed for a terminal application to not have the overhead of one text object per grid element of the terminal. But it can be also used for an IRC chat client, or a text editor. See some comments about that object [Evas here].

Skills Required:

  1. Strong C background.
  2. Good understanding of Evas internal.
  • Improve Evas Textblock object **

    Determine and implement object inclusion/exclusion

Mentor(s): Cedric BAIL

Currently we can't easily put image, like smiley for example, inside a stream of text in a textblock object. It is also not possible to have a textblock rendered around an image. So adding both two mecanism to the textblock object will give it all the power needed for an IM client or any big text editor.

Skills Required:

  1. Strong C background.
  2. Good understanding of Evas internal.


  • Improve Input Method support in Ecore_X Complete Input Method support for complex languages**

Mentor(s): Ivan Briano

As it stands now, Ecore_X has basic Input Method support, using the default IM server provided by X. This allows the use of keyboard layouts with dead keys support to insert composed characters for languages that use them, but it's not currently possible to use more complete systems such as, for example, SCIM.

Skills Required:

  1. Strong C background.
  2. Understanding of X11.
  3. Knowledge on multibyte encodings may help


  • Eterm **
  • Implement UTF-8 support **

Mentor(s): Michael (KainX) Jennings

Enlightenment's world renown terminal application needs YOU! Support for UTF-8 locales is one of the most-requested features for Eterm, and fellow Enlightenment developer Kim Woelders recently contributed an initial patch for this support. The student's task for this project would be to refine this patch to include error handling and make the support a compile-time option. Support for non-UTF-8 locales will also need to be implemented.

Skills Required:

  1. Strong C background
  2. Experience with multibyte character sets
  3. Understanding of X font structure and usage
  • RGBA Visual Support **

    Mentor(s): Michael (KainX) Jennings

Eterm's current support for transparency effects include only full-window compositing and traditional pseudo-transparency. Now that X supports (via extension) drawables with alpha channels, proper support for these visuals is needed in Eterm. (This would allow the terminal window to be alpha-blended to the desktop without fading the text as well.)

Skills Required:

  1. Strong C background
  2. Thorough understanding of the compositing, damage, and render extensions for X
  3. Understanding of X font structure and usage
    • Xft Font Support **

      Mentor(s): Michael (KainX) Jennings

As the traditional X font mechanisms are being replaced by Xft and scalable vector fonts, support for these needs to be added to Eterm. In this project, the student would be using the existing Eterm font abstraction layer to add support for Xft fonts in addition to the older standard. The student would also be responsible for modifying and/or enhancing the font subsystem as necessary to facilitate their work.

Skills Required:

  1. Strong C background
  2. Understanding of X font structure and usage
  3. Familiarity with Xft fonts and usage


  • Implement an optimized tree view **

    Mentor(s): Nathan (RbdPngn) Ingersoll, Peter (pfritz) Wehrfritz

The tree view in EWL is implemented using a Model View Controller (MVC) style API. This gives us a great amount of flexibility in the actual implementation of the view as it is abstracted from the data. Unfortunately, we currently only provide a very heavy view.

This task would require the implementation of a more optimized view, similar what we already started to do for the list2, which can make some assumptions about the presentation of the data. For instance, displaying fixed size rows within the tree.

The goal would be to have a complete widget (tree2), which API is similar to the API of current tree implementation. If the widget works successfully it will displace the current tree.

Skills Required:

  1. Strong C background.


Ideas Here

Imported from
1 ravenlock 2009-01-19 20:09:49
2 vtorri 2009-01-19 22:31:45
3 vtorri 2009-01-19 22:36:06
4 vtorri 2009-01-19 22:43:27
5 mcalamelli 2009-01-20 04:14:02
6 cedric 2009-01-21 01:54:33
7 mcalamelli 2009-01-22 08:04:08
8 barbieri 2009-01-25 14:54:08 add systray module
9 barbieri 2009-01-25 14:58:51 add xrandr
10 barbieri 2009-01-25 15:01:31 link to previous year page
11 ulissesf 2009-01-26 14:26:56
12 ravenlock 2009-01-28 18:59:02
13 ravenlock 2009-01-29 20:02:23
14 ravenlock 2009-01-31 06:20:29
15 ravenlock 2009-02-06 10:43:31
16 Sachiel 2009-02-11 06:13:20 Added Input Method support in Ecore_X as an idea
17 sevcsik 2009-02-11 15:42:41 added netbook ui section
18 pfritz 2009-02-20 09:08:54 add ewl idea
19 vtorri 2009-03-12 23:24:54
20 KainX 2009-03-14 15:32:39
21 barbieri 2009-03-23 08:23:26
22 vtorri 2009-03-25 05:47:55 ad myself as mentor in rtf project idea
23 vtorri 2009-03-25 06:28:03 ecore xcb project idea
24 manowarrior 2009-03-30 13:32:34
25 manowarrior 2009-03-30 13:33:37
26 manowarrior 2009-03-30 13:34:29
27 jt_a 2011-08-29 03:24:06 fixing dead links
28 jt_a 2011-08-29 03:39:05 fixing links

Last Author
Last Edited
Aug 26 2013, 3:40 PM