Summer of Code 2009
From openSUSE
(Back to the main Summer of Code page)
This is our page of ideas for the Google Summer of Code 2009. If you are a student, you can participate by developing one of the projects we describe here (or propose an idea of your own!), and get paid through a stipend by Google. You will be mentored by an experienced member of the openSUSE community. Read the Google Summer of Code 2009 FAQ for more details about the program.
IRC Channel #opensuse-soc on irc.freenode.net
Are you a student? See information for students below.
Do you want to mentor a student? Start by reading the Summer of Code Mentoring HOWTO. Then add your ideas and your name to the ideas list.
Organization
The openSUSE projects needs a small team of people organizing the Google Summer of Code event. If you like to help with the organization, please add your name:
Organizing includes:
- fill the application form for the project. It's not really a long task, but well, it has to be done :-)
- find potential mentors and have them all register on the GSoC website
- push the community to propose project ideas, and triage them for the potential GSoC participants
- review GSoC applications and help create consensus on which students get selected
- during GSoC, be available to help mentors and/or students; make sure there's good communication going on, and also try to push the students to advertize their work.
- make sure all mentors fill the review forms.
- monitor the GSoC mailing list to generally do the right thing :-)
Important dates
- March 9 to March 13 - Mentor organization application period
- March 18 - Announcement of accepted mentor organizations.
- March 23 to April 3 - Student application period
- April 20 - Announcement of accepted students
- May 23 to August 17 - Coding period
See the authorative timeline for more details.
Information for students
The Google Summer of Code is a program for students in most countries. You will participate by writing code for a free software project. Students who finish their work satisfactorily will get a stipend of 4500 US Dollars.
Do this if you want to participate:
- Start by reading the Google Summer of Code FAQ
- See which of the Ideas below you find interesting or come up with your own idea.
- Get in contact with the community
- Submit your proposal on the Google Summer of Code website
Your proposal should include this information:
- Give a detailed idea of what you want to accomplish in your project. Don't just quote what the project's abstract says! Think of how you will actually implement it, and describe that.
- Give a general idea of your skills. If you have participated in a free software project before, say so and if possible point to your contributions.
- Give a rough timeline for your work, with milestones. For example: "week 1, get the code to build and start familiarizing myself with it. Week 2, implement the first refactoring patch. Week 3, try such and such thing."
Basically, let us know why you are the perfect person to implement the project you picked :)
Ideas
This is a list of ideas for projects which could be done for openSUSE as part of the Google Summer of Code program. If you have an idea and want to mentor it, please add it it to the list.
If you are a student and want to work on an idea, submit a proposal. You are not limited to the ideas listed here. If you have an own idea or want to approach an idea in a completely different way, feel free to submit this as proposal as well. Sometimes these are the best projects. Creativity and initiative are highly appreciated.
Two other great sources for openSUSE related ideas are openFATE and idea.opensuse.org.
openSUSE Build Service
OpenID support for the Build Service
OpenID is an open distributed authentication system, which allows users to use one account to login to many web sites, while giving them full control of how account data is used. If the openSUSE Build Service would allow OpenID logins, users wouldn't have to create extra accounts to be able to use the Build Service.
The task of this project is to add OpenID support to the Build Service, so that it's able to act as OpenID consumer, allowing users to login with their existing OpenID account. This involves refactoring the login infrastructure in the build service frontend, adding OpenID support to it, and implement an UI for logging in via OpenID and managing the user's OpenIDs.
Some more info can be found at the Build Service OpenID Wiki page.
Required knowledge: Ruby and Ruby on Rails would be an advantage, as the Build Service frontend and web interface are written in Rails. OpenID experience would be a plus as well. Both can be learned while going, though.
Skill level: medium
Mentor: Cornelius Schumacher
Student: Udit Sajjanhar
Windows packages support in Build Service
The task of this project is to enable openSUSE Build Service to produce Windows packages.
Ludwig Nussel has already some packages built for Windows in his home:lnussel:win32 project (as RPMs however, not EXEs)
Required knowledge: Python, since it is the plug-in and extension language of choice.
Skill level: medium
Mentor: Fridrich Strba
Automatic package approval and management system for a rolling release
The goal is to improve usage of new applications in openSUSE between the major distro releases. This will help the next complete openSUSE distro and also the open source community at large as not all testing and integration has to be done in one big project. To achive this a new openSUSE repository, RollingRelease is suggested.
The project has multiple sides.
First to add a voting system to the packages in the OBS service. The votes shall then be used to decide which packages can be added to the RollingRelease repository.
Secondly the system must make a check on the dependencies of the packages and see that it matches the dependencies in the RollingRelease repository and also match the dependencies from the base packages from the latest release openSUSE distro.
If the voted packages then match the selected criteria, then the package is copied in to the RollingRelease repository and should be available as an update to the users subscribing to the repository.
Required knowledge: Ruby and Ruby on Rails would be an advantage, as the Build Service frontend and web interface are written in Rails.
Idea: Birger Kollstrand , Idea discussed on the openSUSE Project mailing list
Skill level: medium ?
Mentor: [mailto:]
Multi-Package Submit Request
Modern version control systems use changesets. A changeset consist of different single changes that only make sense if they are applied together. A similar scenario exists when submitting packages: some changes depend on other changes in different packages. Therefore the Build Service should be able to handle such submission as one.
Required knowledge: Ruby and Ruby on Rails would be an advantage, as the Build Service frontend and web interface are written in Rails.
Skill level: n.n.
Mentor: n.n.
New version of package is released advertising
When package maintainer is maintaining a lot of packages it is hard to keep packages up-to-date because he first have to notice that new version of program has been released. So I think it would be really, really cool to have a plug-in based architecture in Build Service to advertise every new release of package for maintainers, how it should work? Simply...
Some kind of daemon should be running on some build service server (like we have a dispatcher daemon, publisher daemon, schedulers,..) and it should be able to send an e-mail to a package maintainers if new version of such a package was released. But problem is, there are a lot of sites where new software versions is being announced and not every program is being announced at one place. So plug-in based architecture is probably needed...
When implementing this feature student should implement daemon itself, integrate it into OBS frontend/backend, osc client (osc adv[ertisement] on [project] [package-name] and create at least plug-in for programs that are being announced via Freahmeat and own RSS feed.
Required knowledge: Ruby, Ruby on Rails, Python (at least a little for that osc integration, it is really easy to do that), Perl/whatever you like for daemon
Skill level: medium
Mentor: Marek Stopka
git bisect on the build service
The initial scope of this project will be hunting down Kernel regressions to ensure a working prototype gets running quickly. For people testing Kernel of the Day Kernels it would be great if they could bisect a bug they encounter quickly on their own without needing a build environment or experience with git.
I have posted some initial thoughts on this idea on the opensuse-build mailing list.
Future work could include building interfaces for bisecting other projects besides the Kernel and providing Red Hat RPMs and Debian packages. It would make a great incentive for developers to use the build service for upstream testing.
Required knowledge: Git, Ruby, Ruby on Rails, Python
Skill level: medium
Mentor: Brandon Philips
prototype git backend for OBS
Currently OBS uses a custom MD5 based relational database called BSDB for storing project revisions. It works well for OBS but using a git backend could add additional flexibility to OBS:
- Reduce backend strain on OBS since diff/log/etc become offline operations - Easy export/import of projects from other OBS instances - Make OBS commits offline while on the plane/horse/train and push when you get net access - Track work happening in other OBS branches without a full tree checkout of each branch
This project would build a prototype that would replace the usage of BSDB with git on the backend of OBS. This prototype could then be used to see what else could be done with a git based OBS and an evaluation could be made from there.
Required knowledge: Git, Perl, Ruby, Ruby on Rails, Python
Skill level: medium
Mentors: Brandon Philips, Pavol Rusnak, Andreas Gruenbacher
Education Project Ideas
openSIS-MySQL
openSIS-MySQL is a project started to move this very important education administration software to MySqL. With the completion of this project the software would be ready for integration with Moodle, international education database standards and languages.
Required Knowledge: PHP, Ajax, ADOdb, MySQL, PostgreSQL
Skill level: medium-high
Mentor: os4ed team
Contact: SLEducator@opensuse.org
CRAN packages in Education project
CRAN is something like CPAN, but not for perl, but for R-project, it is a website where almost all R-project packages are being collected and I think it would be really nice to have most of those packages integrated in Education project, because R is being utilized in education and research as a statistical tool and even more...
A lot of work around R-project has been done in my project home:m4r3k:R-project in OBS, but since I am "happily employed" I don't have so much time to work on that anymore.
Student should implement set of scripts which can help maintaining CRAN modules (cran2spec would be cool) probably in python/perl, whatever he likes and what is standard part of openSUSE and other distributions. After that he should update outdated packages in my repository, fix broken packages and probably get some help with testing (I can help with such a testing, but because there are over thousand of modules wider tester community is still needed) and push those tested packages into Education and/or Contrib repository.
Also it would be cool to have some kind of module, that can advertise maintainer when new version of module is released. See openSUSE Build Service projects if you're interested only in this part.
With some set of scripts it should not be hard to maintain a lot of CRAN packages, because build process is almost same for every single one. So after completion of first task work can be done really quickly.
Required Knowledge: RPM packaging, (python/perl/ruby), C, C++, Fortran
Please be aware of that, those C, C++, Fortran,... is because packages sometimes need patch to build properly, and in general not a lot of patching skills is needed and with those whose requires it I can surely help...
Skill level: medium (?)
Mentor: Marek Stopka
Generic Education YaST Module
The generic education YaST module is used to create users and groups that are assigned to Kiosk and Sabayon templates. The goal is to give parents/teachers an easy way to create users that only have a subset of rights. For example having three predefined templates for ages of < 7, 7 - 14 and > 14. A first impression of how the module could look like and a more indepth description can be found here.
Required Knowledge: YCP
Skill level: medium - high
Mentor:
Integrating HPC in KIWI-LTSP
Information about setting up High Performance Cluster on Linux is quite sparse or difficult to implement for most academics. With KIWI-LTSP we have a way of creating a cluster of computers via diskless network booting clients. We already support things like distributed builds via Icecream, we would like to get easy to implement HPC for heavy number crunching using ordinary PCs as nodes.
Required Knowledge: Kusu/OCS, Symphony/SOAM, LSF, EGO, openSSI, MPI, mosix etc.
Skill level: medium
Mentor: CyberOrg
Cross-Platform Interop
Make Microsoft Windows Roaming Profiles more usable on GNU/Linux Desktops
Software like Samba and Csync make it possible to use Roaming Profiles on a Linux desktop. Unfortunately, the locations used to store data for cross-platform apps varies. For example, on openSUSE, a user's firefox profile lives in ~/.mozilla/firefox/ , but on Windows XP it lives in C:\Documents and Settings\<username>\Application Data\Mozilla\Firefox\Profiles\ .This effects a variety of popular cross-platform apps, including Mozilla Firefox, Mozilla Thunderbird, Evolution, Gimp, Inkscape, OpenOffice.org, to name a few.
Extend an existing solution (like Csync) to recognize specific groups of application data, and map the data to operate consistently across platforms. I.E. - Firefox bookmarks are present and consistent on both Linux & Windows desktops. In order to make things as flexible and extensible as possible, some sort of plugin architecture be required.
Required Knowledge: C. Familiarity with userspace data storage by popular cross-platform apps, Linux and Windows desktops.
Skill level: medium-high (?)
Mentor: ?
Software Portal
openSUSE Software portal offers to search for packages for several distributions (e.g., openSUSE, Fedora, Ubuntu, ...) and openSUSE Build Service offers to build packages for these distributions. However we would like to extend the package search with some in/out functionality.
- Packages popularity (statistics based on search results, one click install functionality, etc.)
- Category-based search (to identify preferred choice, stable/experimental, etc.)
Required Knowledge:
Skill level:
Mentor:
Upstream Bugzilla Enhancements
Upstream Bugzilla is an application widely used by several open source project, e.g., by Mozilla, RedHat, GNOME, KDE. It would be nice to have unified usability extensions for reporting bugs. We'd like to make bug reporting and searching easier and/or (partly) automated.
- Fedora Crash Catcher - an automatic bug-reporting tool
- Ubuntu Apport / openSUSE Apport - an automatic bug-reporting tool
- Off-line reports
Required Knowledge:
Skill level:
Mentor:
Codecs and Drivers Installation
Not only desktop-based systems could profit from an integrated solution for identifying needed codecs and drivers, downloading and installing them (for instance based on PackageKit). This might be connected with the Software Portal.
The student should propose and develop a solution to help the user with installation of needed restricted software. It might have the form of post installation wizard, YaST module, combination of both,... The solution has to be 'maintainable' (as the available codecs and drivers change in time). Cooperation with other distributions would be great, so integrating/porting of existing projects ([1], [2]) might be the best idea.
Note that the most tricky part of this project is probably not coding itself, but thinking it up well.
See Multimedia support is lacking for more details (rather ideas).
Examples of usage:
- Firefox plug-ins
- MPlayer and Kaffeine audio and video codecs
- WiFi and video cards drivers
- firmware
- ...
Required Knowledge: basic orientation in Linux multimedia, RPM; the rest depends much on the proposed solution
Skill level: medium
AdminKit
AdminKit is a distribution-independent PolicyKit-based framework for allowing user applications to run administration tasks. We'd like to extend and implement this idea and integrate it into applications and windowmanagers.
See also Rodrigo Moya's blog
Required Knowledge:
Skill level:
Mentor:
Porting openSUSE to MIPS platform
MIPS processors are used in netbook solutions more and more, e.g. YeeLoong or Gdium with loognson processors (mips64). Most of MIPS netbook users use Debian and a few of them use Mandriva (CMIIW). This project will develop a USB bootable openSUSE distribution (prototype) running on MIPS netbook (here it is loongson processor). As a result, openSUSE is promoted to a new platform, and MIPS users have a more option for the excited experience of free software.
Detailed information will come soon.
Required Knowledge: Cross compiling, Linux from scratch on MIPS, openSUSE system management and configuration, wide programming skill to resolve porting problems
Skill level: high
Mentor: Coly Li
Porting openSUSE to ARM platform
ARM processors are planed to be used in netbooks very widely and both Ubuntu and Xandros announced they are going to work on ARM port of distributions and I think openSUSE should not miss that opportunity.
Required Knowledge: Cross compiling, Linux from scratch on ARM, openSUSE system management and configuration, wide programming skill to resolve porting problems
Skill level: high
Mentor: Marek Stopka
Student: Jan-Simon Möller
Integration of class based build system (e. g. BitBake) with openSUSE
Update: This project seems to be obsolete. Developers of Poky Linux already did the most complicated part and implemented RPM BitBake class to OpenEmbedded
Using recipes and classes of a class based build systems make packaging work much easier than static build dexcriptions. Developers just have to create a simple recipe: include correct class and define its properties and exceptions. Changes to build of similar packages (e. g. GNOME packages, perl packages, python packages) or changes of generic rules could mean just one class change instead of changing of many packages at once.
To perform such integration, student should implement these steps:
- research on available class based systems that support binary packages: BitBake, PiSi, Conary
- implement advanced support for rpm output (dependencies, scripts, tags)
- communicate with the tool upstream
- provide initial set of classes and recipes for packages conforming to packaging conventions
- prepare the tool for integration with openSUSE Build Service
Required Knowledge: General knowledge of packaging, language of class based system (most probably Python), knowledge of class based build systems is welcome
Skill level: packaging: medium, programming: medium
Mentor: Stanislav Brabec
Sync with Mobile Devices
The worldwide market is currently filled up with several smart phones. Almost all mobile devices contain some kind of organizer, camera, audio recorder, etc. Users would like to synchronize their mobile devices with applications but they often fail.
Google-related examples of usage:
- Picasa Web Albums
- Google Calendar
There are already lot of partial solutions to the problem and the task is to fix and integrate them, to have one working and easy to setup solution, which will work for majority of existing mobile devices.
There is Gnome Conduit, which aims to be generic synchronization framework. There are tons of libraries which allow you to access data in mobile devices (let's mention at least Gammu, libsyncml, OpenObex and OpenSync). I do not insist on any of mentioned solutions, but I think they are good starting point.
Required Knowledge: Basic orientation in used technologies (SyncML, OBEX, ...) is probably needed.
Skill level: medium-high
Mentor: Michal Čihař
Configuration and Package Management Rollback
This is one of the most wanted features by broad group of users.
The solution doesn't have to be distribution-specific if we stick to using generic open-source tools. One idea is to use LVM snapshots for system partitions. Reverting to a snapshot would solve both, configuration and package management rollback.
Required Knowledge:
Skill level:
Student: Sargurunathan M.
Mentor: Stefan Schubert
Key Management for Software Management Stack
As Internet is wider and wider every day, importance of security still raises. All software that users download from Internet, all repositories should be signed. It also means that users should be able to check these signatures easily.
For instance, we could use the same easy to use method as, e.g., Mozilla Thunderbird: public GPG key servers (downloading unknown keys, validation, reporting issues).
Required Knowledge:
Skill level:
Mentor:
Upstream version tracker as web service
We currently have no automatic way to make sure we have the latest versions of a package. Debian implemented an external health status website to help them know how they're doing. The openSUSE GNOME team implemented something similar to this as part of the infrastructure for the osc gnome plugin, but it has some limitations.
This tracker would be able to track the latest upstream version for all modules, but also to track the latest upstream version on a given branch. It should contain not just the version, but also an URL to the tarball and also possibly the md5sum/sha1sum and other useful metadata. This service could be made available in a distribution-agnostic way.
Required knowledge: good knowledge of some programming language can help. There's some preliminary code in python that could be reused.
Skill level: medium
Mentor: Vincent Untz
YaST ideas
See YaST Research Page.
Integrate a download manager applet into software.opensuse.org
openSUSE.org is offering reliable downloads through MirrorBrain, which is especially relevant for large files such as DVDs and CDs. We can guarantee a hassle-free download of these large files by providing Metalinks and segmental hashes. (See Best Way to Download openSUSE). However, to make full use of this, a metalink client is needed, which is something that most people don't know and don't have installed. Now, instead of trying to document how to get it and how to use it, we could offer a browser plugin which achieves the same. Akamai offers something interesting: a download manager which is implemented as Java applet, so it can run in browsers (see about and details). In this spirit, we could come up with a download applet, which peruses Metalinks and Torrents and still doesn't need the user to install anything.
There is a Metalink client called Retriever Download Manager, which
- has all required features: HTTP/FTP/BitTorrent, piecewise verification of hashes
- is implemented in Java
The goal would be to
- make Retriever run as an applet in the browser and
- integrate the applet into the http://software.opensuse.org download page so that it automatically launches for the image that the user wants to download,
- it asks the users where to save the image and starts downloading.
- Also, it could offer additional conveniency, like asking for a country, to override the deteced country (to influence mirror selection).
This would result into a platform-independant and user-friendly way for a reliable and fast download of openSUSE images.
In addition, following this model the solution should be generic in a way so it can be reused by all other content providers who offer large files for download.
Disclaimer: I (Peter) am not 100% sure whether the applet idea is possible to implement with a Java application, and which changes might be required to the application. Maybe the idea is stupid and can't work.
A very similar idea is listed here: http://groups.google.com/group/metalink-discussion/web/gsoc-ideas (scroll down to "Browser Based Metalink Download Client"
Required knowledge: Java and web technologies; knowledge about web browser plugin technologies would help.
Skill level: medium?
Mentor: Peter Poeml
Performance improvements
Boot time optimisation
Some great work has been done to improve boot time for OpenSUSE 11.2, but much more is possible. The task here is to package the latest boot time profiling work, build a good reference system to test with, and tackle SUSE-specific (and more generic) boot performance related problems.
This should be a diverse and interesting task from I/O to CPU, and the kernel through X to user-space. Be prepared to learn a lot and test a lot of crazy ideas, only some of which work.
Also see previous efforts.
Required Knowledge: good C reading skills, bash, a little python; and the more Linux experience the better.
Skill level: medium
Mentors: Michael Meeks, Hans Petter Jansson
Tux-In-Cache
Tux-In-Cache is an intelligent application for GNU/Linux platform that will enable swift launching of applications by pre-caching user's favorite applications(determined by monitoring the application usage habits of user) in a RAM based swap device during system boot and then manages the cache intelligently during system uptime to meet user needs.
Mentors: Marek Stopka
Student: Mohit Soni
Distributed package and updates distribution System
This proposal looks for an alternative approach to regular package distribution through a system modeled after peer to peer networks.
Although the mirror's system helps to palliate current issues, does little to provide more bandwidth and resilience against central nodes breakdown. A distributed approach would solve this problems and help share the network workload among users.
More info: [3]
Required Knowledge:
Skill level:
Mentor:

