GSoC 2010/Project ideas

Maemo provides a framework for developing applications for mobile devices, as well as porting existing applications in the Linux world. Look at the projects available at garage.maemo.org to get an idea of what already exists, in order to come up with your brand new ideas. They can be new functionality added to a consolidated application, a first prototype for promising new applications exploring new functionality, or a small but killer application bringing the unexpected. We recommend you to propose small challenges that can be completed successfully instead of big plans impossible to conclude in 3 months. It's useful to develop a cool new module to be used by other applications or setting a first stone in a project to attract new attention.

Following the merger of Moblin and Maemo, this page will also hold ideas for the new MeeGo project, for GSoC 2010.

Add your project ideas to the table below.

If you are an accepted mentor and want to mentor one of the possible projects, add your name to the table with your maemo.org nickname (eg. Valério Valério (vdvsx)).

Note: Everybody can add ideas to the list, there's no need to be a mentor or a student. Don't try to guess if your idea will be implemented in MeeGo or not, just add it to the list. Maemo SW will help in order to avoid duplicated work.

Contents

[edit] Ideas List

Note: This list isn't exclusive, if you are a student and have an idea that isn't listed here, don't hesitate to apply with your own idea, but it's probably a good idea to ask in the Maemo community opinions about your idea.

Other possible projects/ideas can be grabbed from the Maemo community wish-list, ports wish-list and you can also take a look at the Maemo documentation in order to have some ideas.

All the ideas below are possible GSoC projects, some of them need more investigation work than others that are already in a final stages, but all of them start at the same level for us. The students must do some investigation before proposing a project; we are here to help, but it isn't acceptable to just copy and paste the descriptions below to the student's applications.


Final proposal Study of alternatives needed Draft proposal

[edit] Easy

Title Abstract/Description Skills Reporter Possible Mentor(s) Comments                              
Dooble Web Browser Porting http://dooble.sf.net webkit browser to maemo platform maemo SDK, packaging an installer http://dooble.sf.net http://dooble.sf.net If someone is interested in a webbrowser on maemo, we would mentor it
Facebook Events Sync Creating an application/daemon to synchronise facebook events to the calendar maemo SDK, packaging an installer cocayden Frederico Schardong (frede)
Ad-hoc Telephony Using techniques like Bluetooth or Wifi for direct voice-connection between phones which are in range. Put this in a nice and easy GUI. Gui, VoIP, wifi, bluetooth Frederico Schardong (frede), epage Why not just implement calls in telepathy-salut (the link local connection manager)
Oscilloscope Port xoscope to maemo5, using the microphone port as an input, possible carrying on the work of pinnchus GTK/X11 speculatrix
Chirematic View the world around you as if color blind or various other vision impairments Maemo SDK, packaging, GStreamer epage epage Possibly beneficial to desktop Linux as well
Google Reader Offline Creating an application synchronize with Google Reader to enable offline-reading of Google Reader's contents. maemo SDK, packaging an installer bob Frederico Schardong (frede)
Advanced To-do list Creating an advanced To-do list, with the ability to attach files, including audio recording, messages, emails, etc., linking multiple tasks and updating the priority of a task based on the time left maemo SDK, Qt The current To-do lists in most Nokia mobiles are disappointing. These added functionalities could make one's phone their own 24 hr assistant
Selected frame video reversing developing a mobile application which reverse a selected video file. we could also provide editing options like providing an audio channel for special effects. a complex version is, we should be able to select a frame in video and reverse it so that rest of frame plays forward simultaneously maemo sdk ,gstreamer It would be a new form entertaining application. video reversing softwares are present but we cuold implement them first time in mobiles
MyWallet a personalized secure application that will keep track of user's accounts, expenses, savings, etc; set alarms for payment deadlines and schedule upcoming stuffs like insurance plan and loan payments.;can function as a database for for storing and organizing sensitive informations like credit card details, passwords, etc; maemo SDK, Qt This would be an improvement upon the existing applications which provide similar services with great prospect for improvements and addition of features. Also versions with varied functionalities can help in reaching out to a larger pool of users.
FreOffice - Online doc viewer Adding online document(Slide share / Zoho...) viewing support for FreOffice maemo SDK, Qt mani

[edit] Medium

Title Abstract/Description Skills Reporter Possible Mentor(s) Comments                              
Quran player for maemo Creating a complete Quran application based on Qt maemo SDK, Qt karatchov Please see this thread for more informations
RetroShare Messenger Porting RetroShare Messenger maemo SDK, packaging an installer http://retroshare.sf.net - http://retromessenger.sf.net There has been talk about it on the [telepathy mailing list].
Remmina remote desktop Porting Remmina (http://remmina.sf.net), a multi-protocol GTK+ remote desktop client that supports NX, to Maemo maemo SDK, packaging an installer, familiarity with NX nadavwr thp Remmina supports VNC and RDP, and more importantly trunk has functional NX support. It has zooming and panning features, making it appealing for low resolution displays. The main motivation is having usable NX remoting on the N900, which would be game changing (for those who need it, anyway...)
Google apps Implement small applications and corresponding reusable libraries (Qt C++) for integrating with Google services like Mail (quick read/search without going through IMAP), Todo:s, Buzz, import opml from Google Reader Qt, api design vivainio 08:13, 23 February 2010 (UTC) VDVsx
Global Search application Global search application similar to Spotlight or Google desktop search Maemo, Qt, Tracker Sp1ke
OTR Support for Telepathy Integrate libotr support in the existing protocol stack maemo SDK, packaging, telepathy, some crypto This will require supporting it in Telepathy, the spec is being worked on. (but its doable)
Answering Machine/Call Rejector Answering machine and call rejector based on black lists and white lists. Brainstorm entry, Brainstorm entry Maemo, Qt, GStreamer Brainstorm entry, Brainstorm entry zaheerm An answering machine (with sound and possibly video) is a mildly complex gstreamer application
sharing-service-telepathy Integrate IM file transfer support with Maemo through the Sharing plugin system Maemo SDK, packaging, Telepathy, Maemo Sharing Plugin system epage epage I think this is feasible but the fact it hasn't been done yet makes me a bit hesitant. Jonny Lamb (who did the file transfer UI) already tried it.
Gtk+ input context for Harmattan Harmattan Text Input Method Framework can only accept text input from Qt based applications, this task is to enable text input of Gtk+ applications in Harmattan dbus, gtk input context Mohammad Anwari Mohammad Anwari (mdamt) Harmattan Text Input Method Framework
Canola UPNP plugin Creating a plugin for Canola to deal with UPNP, possibly using the eupnp library python, upnp lfelipe lfelipe
Porting Canola to Maemo5 and beyond This task involves making sure that Canola works on Maemo5 and also making changes to integrate it better, possibly switching from LMS to Tracker, etc. Taking Meego under consideration is a big plus. python, C lfelipe lfelipe
aGLESory Adapt or implement a flexible OpenGL wrapper for Maemo. OpenGL, libraries and gcc, packaging, documentation, maemo SDK Flandry thp This really needs no introduction...we all know how huge it would be to have a painless wrapper for at least basic OpenGL functionality. This project would be about getting someone to blaze the path and mark it clearly.
Desktop Couch Port Desktop Couch to the maemo platform and integrate it with various applications (contacts, calender, etc) Desktop Couch, python packaging, documentation, maemo SDK
Locality An Android Locale clone to automate various aspects of the OS and life Maemo SDK, packaging, UI, possibly DBus epage epage, thp Beneficial to desktop Linux as well. Shepherd sounds like it might fill a similar role and is currently in development.
Ebook reader Implement a good, touch-optimized ebook reader with Qt (+ Maemo5 extensions) Qt vivainio 08:15, 16 March 2010 (UTC) VDVsx This should become a bigger community project, but we need a good, working starting point. Perhaps base on Okular?
MeeGo: cloud storage support Bring cloud storage support to MeeGo. We are considering dropbox and Ubuntu One, and open to others. GNOME, Python, packaging Yan Li (yanli) Yan Li (yanli) Ubuntu One is interesting. Most of its code are free so we should be able to bring it to MeeGo. Same applies to dropbox.
MeeGo: power usage tuning Linux is far from being power-optimal, not to say the complex and bulky desktop components. There are so many things can be done in this area for the vast collection of free software running on MeeGo that I don't know which is most important yet. Do you know it? OS, profiler Yan Li (yanli) Yan Li (yanli) PowerTOP is a good start. The hard part in this idea is the participant has to have a power meter to measure the real-time power usage, or you have no way to know your progress. Some computer science or EE labs in universities have that meter. But there are still tasks can be done even without a power meter, like running major software parts within a profiler to identify and optimize hot spots.
MaeAgent How frustrating it is to have your mobile phone stolen! And how happy would you become if you got it back! The aim is to implement different methods to silently communicate with a stolen phone in order to retrieve it. Learning from other code, Maemo DBUS APIs, and preferably C Tarek Galal (tgalal) There are some discussions and collection of ideas here here
The Tablet of Adventure a tool for generating and sharing location-based adventures with Maemo devices. The adventures may be manually created or follow the Geohashing "automatic adventure generator" concept as popularised by the xkcd comic. Python, libchamplain, Midgard Susanna Huhtanen (ihmis-suski) bergie Proposal on TMO
Social location services aggregator An applicattion that will integrate location services like Google Latitude, Fire eagle, Foursquare and Gowalla. Should show friends from all supported services on the same map. Chosing a venue should update location for all services. Python, Geoclue, Qt Andrei Mirestean (andrei1089) thp, bergie
tracker full-text extractor tracker extractor support full-text index of text,sms,email,and so on maemo,tracker,c++,gtk sunyi0225 (sunyi0225),wangguan
FreOffice - EBook support Adding DjVu/epub/PS/PDF support to FreOffice maemo SDK, Qt mani
FaceBrick for maemo Working on features and improvements for Maemo's Facebook client maemo SDK, Qt, libqfacebook w00t w00t Main thread: http://talk.maemo.org/showthread.php?t=49216

[edit] Hard

Title Abstract/Description Skills Reporter Possible Mentor(s) Comments                              
Pocket Jeeves Creating a framework, API and UI to provide context-based voice interaction with Maemo. Brainstorm entry packaging, dbus, basic discrete math (language modeling), gstreamer, maemo SDK Flandry (Cosponsored by Sphinx.) DHD Think handsfree mode, but for your entire mobile computer. Click the button on your headset and your Maemo butler asks "What can i do for you?" The accuracy and speed of the speech recognition can be immensely helped by making context-based grammars. E.g. if media player is operational, "next", "skip" and "softer" would all be understood. This lends itself well to sub-projects for multiple people to work on. This is entirely feasible, but will take a significant amount of work to tie together everything. I have built Pocket Sphinx on Fremantle and it works as-is. Flite is already in the repos. The pieces are all there...
telepathy-bluewire A bluetooth Connection Manager for plugging into Conversations and providing Tubes for peer-to-peer applications Maemo SDK, packaging, Telepathy, Bluetooth epage epage The main aim would be a prototype to determine feasibility of the idea. Beneficial to desktop Linux as well
Qt perl bindings Bring the Qt perl bindings to MeeGo so developers can take advantage of perl code in MeeGo MeeGo build tool chain, perl, Qt, packaging jeremiah jeremiah This would build upon a SoC project from last year.
MeeGo: boot time optimization MeeGo is booting fast. But no one would blame it for being even more faster, do they? OS, Linux kernel, C Yan Li (yanli) Yan Li (yanli) Basic understanding of the current skills used in Linux fast boot is needed, as well as having a good picture of read-ahead. Of course, creative thinking is the most important.
MeeGo: GUI for fsck MeeGo lacks a beautiful GUI for fsck. When fsck is running, there should be a GUI to show the progress and when it's done, another dialog to show the result and ask for actions to take. OS, C Yan Li (yanli) Yan Li (yanli) The hard part here is that when fsck is supposed to be running, we have no X, so the GUI has to be running with framebuffer.
MeeGo: Better handling of X failures X should be running well and unknown to end user for most time, but it does fail, sometimes. When it fails, MeeGo should handle it gracefully. Currently MeeGo's uxlauncher just keeps fingers crossed and restarts X, but sometimes things go really wrong and X can't start at all, and the users are faced a dead-loop with screen flickrs every 10 seconds. We may need a safe-mode, or learn from Ubuntu's BulletProofX MeeGo uxlaunch, C, X Yan Li (yanli) Yan Li (yanli) We should start simple with a graphical notification, stating X can't start, when detected X has 2 failures in a row. Then add a safe mode, in which users can configure X accordingly
MeeGo: online music services support It's convenient and fun to have direct access to online music services from the media player, as you can see in Amarok and GNOME Rhythmbox. But MeeGo Media Player lacks this support for now and we should address it. C, Clutter Yan Li (yanli) Yan Li (yanli), thp You have to read through MeeGo Media Player's code and write patches to add this new function.
UPnP Remote Access UPnP was originally designed for (private) home networks but recently UPnP forum came-up with a specification to bridge home networks securely across the globe. Since Maemo has a nice UPnP frameworks on it, implementing a service that implements this spec in question will be a very exciting and enjoyable project. C or Vala Zeeshan Ali (zeenix) Zeeshan Ali (zeenix) This is very similar to Mirabeau project but the difference is that this project will not be specific to XMPP and will use existing frameworks/libs on Maemo.
mAuth (pronounced moth) The N900 is a very powerful device, however we can't shake away the fact that many of us still use desktops on a daily basis. Using username/password authentication is highly insecure, because it forces the repeated typing of the same credentials in the same room, roughly at the same time every day. One option for this are smart cards. However they are expensive and the concepts behind them are extremely complicated for anyone who doesn't work in the industry, and as such implementing them at home would be a nightmare. One solution around this would be to have the N900 (or any other NIT for that matter) emulate being a smart card, and use bluetooth to connect to the computer. The authentication and encryption certificates are stored on the N900 and provided to the computer when in bluetooth range, however as soon as the N900 is taken away, the session is locked as the computer believes the "smart card" has been removed. - Maemo SDK to create the smart card emulator daemon - Bluetooth networking or bluetooth bi-directional communication - PC/SC driver for Windows - Excellent documentation - great packaging crashanddie 07:46, 20 February 2010 (UTC)
Robotics Simulator Bring a full-blown robotics simulator to Maemo/MeeGo. For the start, the 2.5D simulator Player/Stage (http://playerstage.sf.net) would be ported and a simple GUI be written. Later integration with Fawkes (http://www.fawkesrobotics.org) can provide some nice demos and scripting environment to start into robotics. If there is interest in this project some studies are needed to check whether the device is generally computationally powerful enough for simple scenarios. Although not a classic Maemo application, this can be seen as an educational effort to get students interested and start playing with (virtual) robots. Maemo SDK, packaging, Player/Stage, Fawkes, background in robotics software strongly recommended timn Given a mentor I would like to pursue this project over the summer. It can be an eye catcher for the N900, if you can have a simulated robot on the device and instruct it to accomplish tasks.
Radiator: Podcasting + conferencing + TwitterThe premise here is an audio conferencing app that supports 2 or more co-hosts collaborating in the same session. Audio can be saved for podcasts. For live events, audiences could "call" in or comment via twitter. QT is the preferred development platform, with hope for a mobile client. More info plus discussion: Blog articleQt, audio, networking, APIsRandall Arnold (texrat)Randall Arnold, thp Expectation is that live and saved sessions would both be possible. There has been concern that audio quality from a multi-sourced event would be poor, but I challenge developers to test that. Otherwise a live option is not practical