Home Wiki > Difference between revisions of "openSUSE:GSOC ideas"
Sign up | Login

Difference between revisions of "openSUSE:GSOC ideas"

tagline: From openSUSE

(Redesign fdisk to be more extensible and implement GPT support)
(Redesign fdisk to be more extensible and implement GPT support)
Line 308: Line 308:
'''Student:''' STUDENT NEEDED.
'''Student:''' STUDENT NEEDED.
'''Links: '''
[[Category:Google Summer of Code]]
[[Category:Google Summer of Code]]

Revision as of 17:44, 6 March 2012

GSOC 2012 Idea list

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. You might also find inspiration on the GSoC 2011 Ideas page. The openSUSE GSOC 2012 page is here

If you are a student and want to work on an idea, please 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.

A great source for openSUSE related ideas is openFATE.

There have been a couple of ideas about more openSUSE derivates but it was decided that they are not good GSOC ideas as the coding part is not primal.

General ideas

  • Limited GUI support in text mode for multimedia & browsers.
  • develop a way for GTK apps to use a KDE file dialog in a Plasma Desktop
  • develop a way for KDE apps to use a GTK filedialog in a GTK desktop (GNOME, XFCE, LXDE)
  • Zypper to be able to talk to the 'osc' world so we can do zypper se on osc packages and trivially add repos, and install packages.
  • LTSP-GSOC Ideas
  • GRUB2 yast module
  • Remastersys or mylivecd for openSUSE
  • WebPin
  • owncloud
* Integration in GNOME Online Acconts with automatic configuration of Evolution and Nautilus to use ownCloud
* Integration in Dolphin to access sharing and version of files from within the context menu.
* Integration of ownCloud Gallery with Digikam
* Integration of ownCloud Apps into GNOME as GNOME Web Apps
  • Integrate Ksplice for reboot less kernel upgrades
  • FATE: Work on the KDE 4 client

FATE is the feature tracking framework of Novell/openSUSE. The user visible part of this is openFATE, the place where different projects of openSUSE track their feature requests. There also exists a KDE3 client, which should get ported to QT4.

Ideas coming from openFATE

Overview: Features on openFATE tagged with 'gsoc_2011'

openSUSE Connect

openSUSE Karma plugin for openSUSE Connect

Implement Karma concept in openSUSE Connect that will collect points from wiki edits, bugzilla entries, planet.opensuse.org posts, distribution changelogs and possibly other sources and store them in the Connect. Also implement some UI to make it possible to send points. Create per group badget that will grow according of the number of skilled members automatically. Karma points should have some categorie - developer karma/marketing karma/... And it it would be also great to make it accessible though connect API (to trustworthy external applications (log transactions so in case of security breach it can be reverted)).

Required knowledge: PHP basics

Skill level: Basic

Mentor: Michal Hrušecký

Student: 2 candidates available

Blog post about karma idea

GSoC blog post about karma idea

Ambassador/Event plugin for openSUSE Connect

openSUSE Connect is the social network of the project. It is based on Elgg, a social networking platform based on php/sql. Elgg has an event calender plugin that is used by various groups to organize meetings. The ambassadors use this too, but for their planing of events they attend they have to use the wiki which is too much for many of them. In this project you either adapt the event plugin of Elgg or create a new one that allows planing of events in connect.

Required knowledge: PHP, HTML, CSS

Skill level: Medium

Mentor: Henne Vogelsang


Related Features in openFATE

Make openSUSE Connect more engaging

openSUSE Connect is the social network of the project. It is based on Elgg, a social networking platform based on php/sql. There are various features people miss about the network to have it more engaging. In this project you will work on connect to implement these missing features.

Required knowledge: PHP, HTML, CSS

Skill level: Medium

Mentor: Henne Vogelsang


openSUSE Build Service

Support for Bitbake in OBS

Bitbake is class based build system. It uses .bb recipes and it is able to create rpm, deb and other formats. All from one recipe. openSUSE Build Service supports building packages on variety of distributions. Support for Bitbake would make it easier to package software and hopefully later to make it possible to build it for all distributions from one recipe. Among other tasks student would need to add support for .bb in obs, get list of dependencies from Bitbake to provide it to Build Service and create staging tree using binary packages provided by obs.

Required knowledge:

  • Python (Bitbake is written in it)
  • Shell, Perl (obs use these)
  • Basic packaging knowledge
  • Good orientation in ugly code
  • Ability to create creative hacks

Skill level: Advanced

Mentor: Michal Hrušecký (feel free to replace me)

Student: 2 candidates available

Blog post about this idea

End user oriented obs web interface

The web interface of the Build Service is currently focused on developers. End users could benefit from exposing the work of individuals more. Displaying recent changes, a global history, activity and rating overview. Also a new user home page (similar to what Facebook or GitHub has) are ideas worth thinking about. Currently the ability to visually inspect the work of others is limited (mostly) to user's membership in projects/groups, their recent requests and what info they provide about themselves. The user's home page could be expanded by interests, external URL links (to an ohloh.net profile or blog).

  • Required skills: Ruby and Ruby on Rails, to integrate the new features into the web user interface
  • Student: one candidate available

Appliances/SUSE Studio

Suse Studio Command Line Client (ssc)

With SUSE Studio users can easily create openSUSE based systems in their web browser. But when running such a system, there is still missing a convenient way how to feed back changes in the system to Studio, so that with the next build on the Studio web site these changes are incorporated.

The idea of this project is to extend the Studio command line client ssc by this functionality. This could be modeled similar to how the openSUSE Build Service command line client osc works, with commands to list packages, and overlay files, to show diffs, and to commit changes back to Studio. Think git for SUSE Studio. You checkout an appliance, make some changes for it (locally) and once you are happy with the appliance you commit the changes to SUSE Studio.

Example use case

$ ssc appliance create web_server --source-id=SOURCE_APPLIANCE_ID --username=USERNAME --password=PASSWORD
$ cd web_server
$ ssc package list
$ ssc package add apache
$ ssc file add /etc/apache2/apache2.conf
$ ssc commit

Goal: get some workflow going, which can be used to track changes within an appliance and selectively apply them back to Studio.

Essential: Community involvement, introduce yourself on the opensuse-project mailing list. (this probably applies to all other projects as well)

Find more details on the SUSE Studio command line client page.

Required knowledge: Ruby

Skill level: intermediate

Mentor: Cristian Mircea Messel


Cross-distribution topics

The openSUSE project is proudly pushing cross-distribution collaboration.

AppStream: Reviews in software center

AppStream aims to solve the topic of how to deal with installing applications in a cross-distribution way.

A core part of the Software Center story we want to build in AppStream is the social features: ratings, comments, etc. Ubuntu is using the https://reviews.ubuntu.com/reviews/ server (investigation needed: is the code for this free? If yes, this project is already fixed). We need a similar server that each distribution can install and, if possible, that could talk to other instances to use the data from other distributions.

Required knowledge: web services, python

Skill level: intermediate

Mentor: Vincent Untz


Upstream/downstream tracker

Many distributions have some custom tools to track upstream, and to help determine, for example, what is the latest version of an application. However, all those tools have some limitations and none is available as a service that everybody could use.

The goal of this project is to bootstrap a common tracker that could be then used to know the status of a module upstream, but also in various distributions. Information about the versions, but also what patches distro use and opened bugs are the first metadata we'd want to cover.


Required knowledge: preferably python

Skill level: advanced

Mentor: Vincent Untz


Popularity contest for RPM (popcorn)

OBS has a lot of repositories and a lot of packages. People continually contribute new packages and maintain them for the greater good. But who uses these packages?

It would be great to have a way for people to tell us (voluntarily) what packages/repos they use. This way we could have a way of knowing what to concentrate on and what's not needed.

Popcorn aims to track the collection of packages and repositories that users have installed on their systems in a central place. The aim of the project is to be distribution neutral, but we will start with RPM (and openSUSE) first.

You can learn: python, Flask, SQLAlchemy, PostgreSQL, rpm, YaST (YCP) and others.

You can see the WIP popcorn sources at github. Check out the TODO and don't hesitate to come up with your own ideas!

Required knowledge: python, beautiful code

Skill level: intermediate

Mentor: Ionuț Arțăriși


Compositor Colour Management

Colour Management has to be easy for casual developers and automatic for users. To get there it is an good idea to have all applications colour corrected inside the window manager. On the other side graphics applications, want to do own colour management and should be able to say a window shall not be colour managed. To do so easily exists the X Color Management spec and the implementation of this protocol in libXcm.

The ICC based colour correction is easy for compositing window managers, as they support mostly shaders. Shaders run on the GPU and allow for a very fast and efficient colour correction.

The project targets at providing colour management inside a compositing window manager of your choice. The protocol part to be implemented is the Baseline spec with _ICC_COLOR_OUTPUTS and additional the _ICC_COLOR_PROFILES atom.

This implementation prepared a easy transition into Wayland compositor colour management, which will as well be window based.

A good and very fast start is the update the CompICC plug for Compiz-0.8, to use the _ICC_COLOR_OUTPUTS atom.

Required knowledge: OpenGL, GPU shaders, Oyranos, C

Skill level: intermediate

Mentor: Kai-Uwe Behrmann


Gtk Front End to Oyranos

The Oyranos project is a cross desktop and cross OS colour management system (CMS) to provide easy to use and while robust colour management services to applications. The main goal of Oyranos is to provide colour management without user interaction. But in some situations and especially experts might want to configure and tweak the various settings manually.

Front ends exist in Qt and for KDE. For Gtk based Desktop Environments it is currently only possible to use the Qt front end. For a better appearance and integration it makes sense to provide a native Gtk GUI for settings and configuration.

Required knowledge: Gtk, Oyranos, C, good communication

Skill level: intermediate

Mentor: Kai-Uwe Behrmann


OpenICC Colour Configuration Data Base

Users, who configure their colour management system (CMS) behaviour and devices, want to share these settings on one host without any intervention among installed CMSes. The project will introduce the OpenICC data base into CMSes like ArgyllCMS, Oyranos and colord and replaces existing own DB access code.

device DB example: http://www.freedesktop.org/wiki/Specifications/icc_meta_tag_for_monitor_profiles

existing code: http://openicc.git.sourceforge.net/git/gitweb.cgi?p=openicc/openicc;a=tree

Required knowledge: C, good communication

Skill level: intermediate

Mentor: Kai-Uwe Behrmann



Redesign fdisk to be more extensible and implement GPT support

The fdisk (and family) partitioning utility is a popular and widely used tool in Linux, among other operating systems. The current code, dating from 20 years ago - since 1992, is messy, without standards, and a result of years of hacky patching. The util-linux project has been developing traditional Linux tools and updating them for the 21st century, in an organized and unified way.

Cleaning up the fdisk-family tools will allow refactoring, unification, clarity and abstraction across all fdisk-like programs (fdisk, sfdisk and cfdisk). This makes bug fixing and future contributions easier, with clearer, better organized code. A longer time goal, which comes naturally afterwards is to implement a libfdisk library - something like what libmount is to mount/umount.

This work should include, at least:

  • move all label-specific code to separate files
  • add GPT (GUID Partition Table) support
  • remove obsolete code - for example, around CHS addressing
  • use libblkid for partition tables parsing
  • create any interface for dialogs (fdisk is about dialogs)
  • write regression tests
  • data type standardization (ie: off_t instead of long long)
  • documentation

Required knowledge: C, partitioning, writing clean code, autotools, git

Skill level: intermediate

Mentor: Petr Uzel



LTP:Fix/Implement automated kernel/glibc tests

The Linux Test Project is huge collection of testcases aiming to test stability and correctness of kernel/glibc implementation and as the time goes by, some of the testcases needs polishing and testcases for newly introduced features should be written.

Required knowledge: C, low level Linux/POSIX interface

Skill level: Intermediate

Mentor: Cyril Hrubis


openQA:Implement alternative backends

The openQA/OS-autoinst testing framework provides reliable continuous quality feedback about current openSUSE-Factory, Debian (and potentially other distributions). Currently the service relies on kvm for the testing (an alternative VirtualBox backend exists), but to test things, that need real hardware such as NVidia/ATI drivers, it needs a different backend. One idea is to use Net::VNC to interact with the machine-under-test and another is to use HDMI-capturing hardware (e.g. from Blackmagic for 200€) and hardware that can generate keystrokes to emulate user-input.

Required knowledge: perl

Skill level: Intermediate

Mentor: Bernhard M. Wiedemann / Dominik Heidler


openQA:Implement web-based test creator

(for description of openQA see above) Creating/modifying test modules currently requires people to use a text-editor to create/change perl module files. Having an interactive web-based test-module editor/creator (could be similar to a user-input recorder) would allow easier creation of test-modules.

Required knowledge: perl, AJAX

Skill level: Advanced

Mentor: Bernhard M. Wiedemann / Dominik Heidler


openSUSE System Management

Automatic resizing of LVM volumes and filesystems

openSUSE currently provides good support for creating LVM volumes and installing the OS on these volumes. However, if the filesystem becomes full, the user/administrator has to increase the volume size and contained filesystem capacity manually.

The goal of this project would be to implement automatic resizing of LVM volumes and contained filesystems. This resizing would be triggered e.g. by the package manager before installing the packages, if the free space drops before certain threshold etc. The installer should be modified to compute the necessary space needed for installing the selected set of packages and allocate the LVM volumes 'just big enough' for the installation. With future automatic resizing of the LVM/FS, this would save storage capacity in the volume group which would otherwise be unnecessarily allocated for /, /usr etc.

Required knowledge: At least basic experience with C/C++, RPM, scripting (Python, bash). Understanding of LVM is a plus, but not necessary. Willingness to learn and investigate is a must.

Skill level: Intermediate

Mentor: Petr Uzel


ownCloud Related Ideas

  • ownCloud Apps as GNOME Web Apps
  • Background: ownCloud can show Apps as standalone Web Apps. They should automatically appear in GNOME when you connect ownCloud with GNOME via the Online Accounts Panel.'
  • Mentor: Frank Karlitschek
  • Skill Level: Medium
  • Student:

  • Project Title: ownCloud Dolphin integration
  • Background: Integration in Dolphin to access sharing and version of files from within the context menu.
  • Mentor: Frank Karlitschek
  • Skill Level:
  • Student:

Beautiful one-click-install

  • Project Title: Beautiful one-click-install
  • Background: Garrett made a great mockup for a much more beautiful one click installer some time ago. It would be great to get this implemented. I think it could be done with a small Qt application which uses libzypp or PackageKit or something like that as the backend to do the actual installation. Some more information in FATE #309503.

Implementing Accurate XML Code Formatting

  • Create Readable Source Code Formatting for XML
  • Background:

There are some tools which can format XML/HTML sourcecode (tidy, xmlformat, ...). For example, xmlformat splits elements in an inline, block, and verbatim (=code) category. In most cases this works fine, but sometimes it fails.

This tool could be improved by, for example using XPath expressions or by reading schemas (DTD, RNG, ...) to know more about the structure and how to format it. This would (hopefully) lead to a more exact formatting (think of mixed contents)

  • Skill Level: Intermediate

Perl or C experience. Knowledge of XML and/or XPath is desirable. Depending on the project plan, DTD would also be useful.