Summer of Code 2007

From openSUSE

(Back to the main Summer of Code page)

There are several areas in and around 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.

Contents

openSUSE Build Service

The Build Service provides servers, infrastructure and interfaces to allow developers and packagers to build packages of their software for openSUSE and other distributions. 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

Contact: Cornelius Schumacher

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

Contact: Cornelius Schumacher

openSUSE API

WebDAV interface for Build Service

The Build Service has a REST-style API to access the data and control the Build Service (See also the API Documentation). This is utilized by the web client and all the other clients.

A useful addition would be to expose the data in the Build Service via WebDAV. This would make it possible to transparently work on the data like in a file system e.g. by using the WebDAV kioslave in Konqueror. Most of the internal functionality is already there in the Build Service frontend which provides the API. The task of the project would be to put a WebDAV interface in front of this functionality.

Required Knowledge: WebDAV, HTTP, XML, Ruby, Rails

Contact: Cornelius Schumacher

Build Service Features

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

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

Clients

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++

SWAMP

Workflow Editor

Workflows in SWAMP are specified by an XML description which lays out which are the different steps of the workflow and how they are connected. Directly editing the XML description to create or modify a workflow is possible but is not appropriate for non-experts.

To make the creation and editing of workflows more easy and accessible to a wider range of users we need a graphical editor for SWAMP worklows. The task of this project would be to write a GUI application which can read and write SWAMP XML workflow definitions and provides an intuitive user interface to edit, arrange and connect the workflow elements.

The preferred way to implement the workflow editor would be to use Qt4 as toolkit. With QGraphicsView it provides a powerful and efficient framework to create graphical modeling applications.

Required Knowledge: C++. Qt, XML

Contact: Thomas Schmidt

GUI Client

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

Ideas are:

- popup notification when a new task for the user gets activated

- display list of assigned tasks with link to webSWAMP

- directly act your tasks with the gui client


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

Contact: Thomas Schmidt

Fate

Fate is the feature and requirements tracking tool used for creating the SUSE Linux products. It's based on a client server architecture and available as free software. See the Fate project page at developer.novell.com for more details and source code.

XML database server implemented as Apache plugin

The core of the Fate system is an XML database which is accessed through HTTP via a REST-style API. The HTTP access is implemented as a thin layer of Java code running on Tomcat. The resulting server is called Keeper. For more details about the Keeper see the Fate project page.

While this approach works well, it still might be more efficient to interface to XML databases providing native C++ APIs through a non-Java implementation. Apache modules offer a nice way to provide the HTTP API through a C/C++ implementation.

The task of this project is to provide an alternative implementation of the Keeper as Apache module. The module has to implement the basic API of the Keeper to read, write and query XML data through HTTP. It would be great, if it also would implement the extended API to provide history diffs and administration functionality.

Required Knowledge: C/C++, Apache, HTTP, XML

Contact: Cornelius Schumacher

YaST2

Create modules for:

  • FTP-server setup
  • Desktop effects setup
  • To import data and settings from MS Windows that could be used during installation and afterwards, on the installed system

Modules are written in YCP, the YaST language.

Core changes:

  • Create a web frontend for YaST2, by using the Wt toolkit. As the UI in YaST2 is properly abstracted, it should be fairly straightforward to create a frontend that is based on the Wt library. Required Knowledge: C++

Contact: Yast mailing list

Homepage: YaST homepage

Note: Implementing a YaST2 web frontend has also been suggested as an idea for the Novell Hack Week.

Other Ideas

  • LTSP 5 integration
  • GNOME based zypper online updater applet. UI Idea