SoC2006

Şuraya atla: kullan, ara

openSUSE participates in Google's Summer of Code. This gives students the chance to work on an open source project in the summer and get paid for this by Google. More details can be found in the Student FAQ.

There are several areas in openSUSE which offer the opportunity to do a Summer of Code project. Read on for the details. The list is not exhaustive. If you have other great ideas, please feel free to propose them. Please also notice this thread on the openSUSE mailing list, it has some nice proposals & discussion.

The proposal submission deadline is past; the granted projects can be found at Google's SoC page.

openSUSE Build Service

The Build Service provides servers, infrastructure and interfaces to allow developers and packagers to build packages of their software for SUSE and other distributions. It's currently in a preview phase with limited access to selected users. It will be opened to the public later this year. The build service runs at build.opensuse.org. The source code and other project related information can be found at Novell Forge.

There are lots of possible projects around the Build Service. Below you find a list of ideas. If you have questions or comments please post them to the Build Service mailing list.

General Projects

Functional testing of REST based models

Add support for REST backends to the Ruby on Rails test suite. This should be similar to the existing support for database backends. We need this for proper testing of the Build Service web client and the frontend, but it would also be a feature useful outside of the build service as there are lots of other REST based web services out there.

Required Knowledge: Ruby, Rails, XML, HTTP

REST test suite

Improve the REST test suite. Possible areas for improvement are test coverage analysis, complete support for all HTTP methods, helper functions for simplifying the test suite code, more automatic creation of test cases, etc. This is a generic tool which is useful to document and test all kinds of web services which are based on plain HTTP by using the REST model.

Required Knowledge: Ruby, XML, HTTP

REST API documentation generation

Improve generation of the API documentation of the REST based web service the build service frontend provides. This should be done in a generic way which can also be used to create the API documentation of other web services.

Required Knowledge: HTTP, XML Schema, HTML, Ruby

Build Service Features

Direct source code import

Support for directly checking out source code from version control systems like CVS or SVN into the build service. Building packages would then only be a matter of providing links to the source code repository and some version information. This could be used to build development snapshots or to automatically make released software available as packages for all kinds of distributions built by the build service.

Required Knowledge: Ruby, XML, SVN, CVS

Software index site integration

Add support for scanning of software index sites to import source code announced there into the build service. Most software is announced on sites like Sourceforge, Freshmeat, or KDE-Apps. The information which is published there could be used to build packages of the corresponding software with the Build Service in a semi-automated way. This potentially could completely release the burden of creating packages from the software authors.

Required Knowledge: XML

Translation Service

Create a translation system for translating texts used in packages. This first should cover the meta information provided by the packager, but could also be extended to optionally cover texts in the sources. This would need interfacing with upstream translation infrastructure.

Required Knowledge: Ruby, Rails, i18n

Abstract package build description

Create a tool to generate required control files to build RPMs for various distributions and Debian packages from a common description. A good start would be to do this for relatively simple and standardized packages like KDE application, Perl modules, etc. and then expand this to more generic use.

Required Knowledge: Package Building, RPM, Debian Packages, XML

Build Service News Feeds

Implement news feed generation providing information about packages and their status.

Required Knowledge: RSS, Atom, Ruby

Building distributions

Add support for building distributions from the project information. This could be done in the form of ISOs for installation, as live system, as XEN image, etc. This could also split up in separate projects.

Required Knowledge: Live CDs, XEN, XML

Klik packages

Implement support for generating klik packages.

Required Knowledge: Klik

Building Windows packages

Support for building Windows packages of cross-platform projects.

Required Knowledge: Cross-platform development, Windows

Test backend

Improve test backend to be useful for testing the complete functionality of the frontends.

Required Knowledge: Ruby, Rails

Online help system for web client

Create an online help system for the build service web client.

Required Knowledge: Ruby, Rails, HTML

Build Service Clients

Rich GUI client for build service

Develop a native rich GUI client for the build service. This could be done as a KDE application which talks to the build service API. It should provide functionality to conveniently manage projects and packages, control the build process and show build results, status and logs.

Required Knowledge: C++, Qt, KDE, XML, HTTP

Perl command line client for build service

Improve the Perl command line client. This includes developing a generic Perl library to access the build service.

Required Knowledge: Perl, XML, HTTP

Python command line client for build service

Improve the Python command line client. This includes developing a generic Python library to access the build service.

Required Knowledge: Python, XML, HTTP

IDE Integration

IDE integration. Write plugins for Eclipse or KDevelop to directly build packages from the IDE via the build service.

Required Knowledge: Eclipse, Java or KDevelop, C++

YaST

YaST (Yet another Setup Tool) is the most powerful installation and system management tool in the Linux environment, developed by SUSE as open source project and a crucial part of the SUSE Linux distribution.

YaST GTK+ frontend

Create a GTK+ frontend for YaST and its modules. (YaST already features a QT and ncurses frontend, which are available from reference.) There is also seed code for this project here that gets much of the bootstrapping & base structure / autoconf lifting out of the way. We already support some of the simple test widgets. See [1] for documentation regarding YaST.

Reference: [2]

YaST2-GTK Wiki notes

Required Knowledge: GTK+, C, C++

New YaST modules

Create a new YaST module to perform a certain task, like setting up SUSE Linux as a Terminal Server (a la LTSP), configuring the SUSE Firewall or managing software installation with the SMART package manager.

References: [3], [4], [5]

Required Knowledge: C++, YCP

deltarpm

The deltarpm package contains tools to create and apply deltarpms. A deltarpm contains the difference between an old and a new version of an RPM, which makes it possible to recreate the new RPM from the deltarpm and the old one. You do not need to have a copy of the old RPM, because deltarpms can also work with installed RPMs.

performance optimization

deltarpm was developed without respect for CPU utilization and memory consumption. The goal is to optimize deltarpm generation, application and the overall memory & CPU utilization.

Required Knowledge: C

SWAMP

SWAMP is a server-based workflow management tool used and developed by SUSE as open source project.

GUI workflow editor

Create a GUI editor for XML workflow definitions.

Required Knowledge: C++. Qt, KDE, XML

GUI Client

Create a GUI client that communicates with the server by its SOAP interface.

Required Knowledge: C++, Qt, KDE, SOAP