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

