Students: Please read the notes on the SummerOfCode2011 page to learn how to apply. |
Attention: This list is not exclusive. This means you're free to propose any project you think is worthy. |
Contents
1. General Info
It's important to note that this list is not exclusive: if you are a student and have an idea that is not listed in our pool of project ideas, don't hesitate to apply for your project. It's probably a good idea to ask people in the GNOME community if they think your idea is good, though. Also, if the development team is already working on something similar to your idea, they may be less likely to accept your proposal, so ask on the project's mailing list or IRC channel (lots of people lurk on IRC; don't be surprised if it takes an hour for your question to be answered, and don't just leave if nobody answers within five minutes!).
The ideas do not have to be only about modules that are in a GNOME suite. If it's a project on GNOME-related software that can benefit the GNOME community, it's also good to list it here.
When adding a project idea, please try to follow those guidelines:
- if you're interested in mentoring it, put your name. If not, then just leave it blank.
- do not list multiple idea with only one item. Use multiple items instead.
- briefly explain why this would be great for GNOME.
- do not write lots of text to explain your idea. If this is going to be long, maybe it's worth creating a page for it?
- make sure students who do not know much about all GNOME modules can understand the proposed idea.
please use this format, as it will be easier to get some information about tasks:
. '''task title''' (mentor: mentorname) * ''Benefits'': describe the benefits of your task * ''Requirements'': what should the student know already? * Note: one or multiple notes, links, whatever further information ----
Ideas that GNOME mentors are especially excited about are marked with a |
2. Desktop
Please do not add your idea here directly; it will be triaged by administrators.
- Shotwell (#shotwell): possible summer projects include
- slideshow improvements
- fully automatic red eye reduction
- autoenhance improvements
- printing improvements
- adding support for new publishing destinations (using libsocialweb and adding new providers to libsocialweb)
- playing videos directly inside Shotwell
For a more complete list with more details, see http://trac.yorba.org/wiki/SummerCodeIdeas .
- Since some of these ideas are too small for a summer of code, you should get in touch with the Shotwell developers to group a few ideas together and devise a realistic schedule.
- Music score display application (Bastien Nocera/hadess)
Download PDF music scores from projects such as IMSLP
- Offer portait and landscape orientations
- Adding notes, metronom
- Application could be viewed as a special version of Evince, as most scores are PDF based
See also forScore
Bonus points for integration with gnome-bluetooth for AirTurn compatibility
TheBoardProject: possible summer projects include
- Write a Tracker storage backend
3. Media
Please do not add your idea here directly; it will be triaged by administrators.
- clutter-based media centre (with "desktop" and "touch screen" navigation support) (this project requires a working DVB tuner, and access to physical DVDs)
- Based on Clutter and GStreamer
- Use totem-pl-parser and gvfs for optical disc/ISO type discovery, add DVD menu support for Clutter's video sink (mouse and keyboard events)
- gnome-dvb-daemon for digital TV integration (initial setup, recordings, scheduling)
- This idea is not recommended if you don't already have a proven GNOME track record.
Make Rhythmbox' database and front-end data agnostic
- Goal: the ability to use Rhythmbox as a video management or personal book library management application (pick one)
- Categorise plugins based on media handled
- Add a plugin for another type of media (IMDB or "The movie database" based cover art for video, Amazon cover search for books, for example)
- new RBShellPlayer object (video playback, or
- Extensible metadata (based on media type)
- Separate settings for each front-end/backend combinations
- Ability to support non-file-backed media (physical DVDs, etc.)
- Separate metadata discovery backends
- Rhythmbox music stores
- Integrate with one of Spotify (requires account), Amazon Music Store or eMusic
- Would include work on making creating new sources easier
- Integrate downloads as a separate source, shareable with existing stores such as Magnatune and Jamendo
Pitivi has various project ideas for this year's SoC: http://wiki.pitivi.org/wiki/Google_Summer_of_Code ; among other things:
- Transitions
- Complex layers
- Titling / text
- Rendering profiles
- Clip properties and effects keyframe animation
- Motion ramping / time stretching
- A library to interface with Blender
- Proxy editing
- Since some of these ideas are too small for a summer of code, you should get in touch with the Pitivi developers to group a few ideas together and devise a realistic schedule.
- Mono binding for libdmapsharing
- Python binding for libdmapsharing (gobject-introspection support)
Add DPAP (iPhoto sharing protocol) support to gThumb (see Bug 566851)
- Add DPAP support to Shotwell
Add DACP (Apple Remote) support to Banshee (see Bug 562291)
Migrate F-Spot DPAP support to libdmapsharing (see Bug 338186)
- GNOME-based DACP remote control application (remote control of iTunes from GNOME)
4. Sharing & Collaboration
Please do not add your idea here directly; it will be triaged by administrators.
5. Web
Please do not add your idea here directly; it will be triaged by administrators.
Integrated web applications support for Epiphany
Create a new .desktop file, using the highest quality icons available for each page (for example, using the equivalent iOS icons, or the "fluid-icon" favicon, better than a 32x32 ico)
- Would launch a separate "epiphany" instance (with private data not shared with main program)
- Would identify as a separate application, so as to integrate as a native application would in the shell
- Hide unnecessary chrome from the user
This is bug #644002
See also Chromium Mac app mode integration,
- Telepathy/Empathy/Folks projects
- OTR support
- if you are planning to work on this idea, it's highly recommended that you get in touch with Danielle Madeley or Christophe Fergeau
- OTR support
Evolution server-side filters (Sieve) editing
6. Misc applications
Please do not add your idea here directly; it will be triaged by administrators.
GCompris is an educational software for children 2 to 10. It maintains its own list of ideas but other ideas will be evaluated as well. As the main developper of GCompris, I am willing to be a mentor for this year SOC.
- Since some of these ideas are too small for a summer of code, you should get in touch with the GCompris developers to group a few ideas together and devise a realistic schedule.
- Baobab (small project)
Enhance Baobab's results view, based on cairo (as shown in DaisyDisk)
- This is a task which is too small by itself for a summer of code. Students applying for this idea will have to suggest additional gnome-utils enhancements as part of their application.
- Getting things GNOME! (GTG)
- Write additional backends for storing/importing tasks (e.g. backend for trac, Basecamp, Google Tasks/Calendar)
- (Stabilize liblarch-gtk -- it would make GTG faster and allow features like multi-parent tasks)
- Add the ability to search for tasks. Search must be smart, maybe with the possibility to save search terms as a smart tag.
7. Developer
Please do not add your idea here directly; it will be triaged by administrators.
- Anjuta Projects
- Version Control/Diff:
- Add an UI to easily show the differences between files
- Annotate files in the editor depending on the diff between file and repository
- Tool to resolve merge conflicts (ok, that one is really difficult...)
- Version Control/Diff:
- GTK+: Adding support for spellcheckers into the GTK+/Glib stack
- Spell-checking to the entire GNOME stack for free
Take a look to this bug and this thread on desktop-devel-list.
Prior art: Barisione's gspell project and Mathias Hasselmann's projects.
- GTK+: Add baseline alignment to GTK+/Pango
Currently, a GtkWidget just has a width and a hight for its dimensions. To ensure that texts lines up properly across widget boundaries, it is necessary to consider the baseline and make baselines in adjacent widgets optionally line up. This task involves with coming up with a suitable API for retrieving and storing baseline informatin, and with suitable modifications to GTK+'s size allocation algorithm to take baseline information into account when positioning widgets.
Nemiver Debugger - DodjiSeketeli
- Allow multiple layouts for the debugging perspective
- The current layout would be one of the supported layouts
- Other layouts that uses more vertical screen estate would be supported
a GDL based layout would be supported as well.
- Support GDB multi-inferiors debugging (A.K.A parallel debugging)
- Support asynchronous notifications
- Support attaching to (and controlling) multiple inferiors
- Allow multiple layouts for the debugging perspective
- GObject/GTK+ (Platform): Improve integration with online services. (Two sub-projects)
- GDom: There's need for a XML/DOM API for GObject, libxml2 is quite old and inconvenient. A wrapper around libxml2 could be a good start to focus on API design.
- GHttp: Even though libsoup provides a powerful HTTP library, it's designed for complicated use cases like a browser (Epiphany). A simpler and higher level API more friendly to application developers would enable them for more integration with online services.
GVariant/GDBus performance - RyanLortie
- profile common usage patterns of GDBus and GVariant, looking for bottlenecks
- propose solutions while keeping API compatibility
- investigate alternate efficient encoding for dictionaries while maintaining backwards compatibility in the serialisation format
students should include their own specific proposals for performance improvements in the application
- students will need to be really specific about the code they'll have to write
8. Other Ideas
(These ideas are for GNOME-related projects. They have not been evaluated by the GNOME SoC Admins because they were added after the evaluation happened.)
Integrate Zeitgeist into gnome-shell (FedericoMenaQuintero). This involves getting the Journal display to a usable state, on par with the standalone gnome-activity-journal; also, making sure that the Search and Jumplists functions work well.
Gtk History Manager for Zeitgeist
Background: By default Zeitgeist logs all the events like file opening, closing, editing etc. There are external dataproviders which help in adding more fine-grained events.
Problems faced: There are situations where someone doesn't want something to be logged. This something can be a particular website or all the files under a certain folder or blocking logging of all events involving word documents.
Description: Help design and implement a central UI to manage Zeitgeist logging and History Management.
Requirments: Python and Gtk
- Improve libburn backend and make it default. Use others as fallback mode.
- Make brasero use the latest features.
- If needed improve libburn
Plugin store interface for libpeas (SteveFrécinaux. The idea would be to provide a shared "app store" for plugins-enabled applications in Gnome, such as totem, gedit, eog, nautilus-sendto and vinagre. To perform better accross distributions, this should probably be limited to "soft" languages (Python, Javascript) and/or be integrated with PackageKit.
- Improve the libpeas plugin manager UI to add support for web feeds
- Have a web interface (ala addons.mozilla.org) to maintain a gnome-approved list of plugins (plugins.gnome.org)
Zeitgeist-Gtk Widgets
Description: Design and implement as set of Gtk Widgets that make use of Zeitgeist (Dashboard, Mini-Journal, Open File Dialog, Jumplist Menus) and allow integrating them in GNOME applications. Also finish at least one integration with a GNOME application.
Requirments: C and Gtk knowledge
Integrate Telepathy into Evince JoseAliste
Description: In the short term, Make possible to share a Document directly from Evince to a subset of your contacts. In the medium term, develop a widget for selecting contacts that could be reused by other apps. Bonus: Implement remote control of Evince Windows using telepathy tubes.
Add Telepathy collaboration support FelixKaser
Description: It would be nice to collaborate on something else then only text files. collaborating on text files is already done in gedit-collaboration, but the telepathy part would need some more love. In general it would be nice to have other plugins for infinote to collaborate on something else then text (spreadsheets? graphs?, ...). Related to integrating it in a application of choice (e.g. gnumeric) some work on infinote itself is needed.
Requirements: C knowledge
Integrate Xzibit to the Shell GuillaumeDesmottes
Description: Xzibit is a tool to share an appplication window to IMcontacts. It would be awesome to integrate it properly to the Shell to bring this killer feature to GNOME users
Requirements: C knowledge and possible JavaScript as well
OCRFeeder (these are some quick ideas; more suggestions are welcome)
- Support for undo/redo
- Support for a defined language for a document that also configures the used OCR engine
- Implement reading order support
- Improve the generation of ODT files (currently the text is put as text boxes in the generated docs, maybe an option to set it as actual paragraphs would be better)
- Create a plugins system to process the results
- Improve the contents detection algorithm
- Create an assistant-like user mode (like 3 steps to scan and generate a document)
8.1. For GNOME-related projects
Unless otherwise noted, you may make proposals related to these projects with GNOME as your mentor organization. GNOME will seriously consider applications to work on projects that are relevant to GNOME since this will help improve the user experience.