Home Wiki > openSUSE:GSOC ideas
Sign up | Login

openSUSE:GSOC ideas

tagline: From openSUSE


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 2013 Ideas page, GSoC 2014 Ideas page or openFATE.

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.



Native Ruby Interface for libyui

  • Description:

There is libyui library which provides single interface for three toolkits (QT, GTK and ncurses). It is heavily used in YaST and also Mageia uses that for its configuration tool. YaST is now transpiled to ruby and libyui ruby bindings is simple 1:1 to its C++ API. Goal of this project is to design and implement native ruby API built on top of libyui.

  • Deliverable:

It is expected that at the end of project there will be design of library, proposal for API and implementation for basic widgets.

  • Mentor:

Josef Reidinger

  • Skills:
    • knowledge of ruby idioms and basic ruby libraries - to have idea how good ruby design look like
    • API design
  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:

Looks at existing frameworks and its API like shoes, dsl-gtk or hello-rugui/ and then post to yast-devel@opensuse.org mailing list own proposal how new API can look like together with at least two examples of code that uses such API.

  • Student:

Apache Initial Setup YaST Module

  • Description:
   Write a new YaST module for apache that do initial setup of apache with given framework so it allows easy start. Module use cases are:
    • I want to quickly setup apache with static HTML
    • I want to quickly setup apache with PHP
    • I want to quickly setup apache with RoR
    • I want to quickly setup apache with django
    • I want to quickly setup apache with mocculus

etc. with frameworks you are interested. Module is focused for newbies with basic setup. It is not intended to modify existing configuration. It should include also install of needed packages.

  • Deliverable:

YaST module that can do initial setup with static html pages and at least one of frameworks. The module include documentation and tests.

  • Mentor:

Josef Reidinger

  • Skills:
    • Ruby
    • Rspec
    • Object oriented design
  • Skill Level:

Easy

  • Byte Sized tasks for students to get involved:

Read new tutorial and write question or suggestions how to improve it to yast-devel@opensuse.org mailing list.

  • Student:

Deploy Scenarios for OSEM

  • Description:

The Open Source Event Manager is an event management app tailored to Free Software Conferences, it is developed in the Ruby on Rails web framework. There is currently next to no code/config/help for deploying OSEM to either develop, testing or using it in production.

  • Deliverable:

This project is about adding support for deploying OSEM with IaaS, PaaS or even SaaS providers Amazon EC2, Heroku or Arckcloud. This project includes adopting the OSEM code, developing and documenting strategies and packages/images/containers.

  • Mentor:

Hennevogel (talk)

  • Skills:

You know your way around a Ruby on Rails application and can tell the difference between a My and Postre SQL database. You have deployed applications to Heroku. Elastic Compute, Docker and Vagrant are not all Greek to you.

  • Skill Level:

Hard

  • Byte Sized tasks for students to get involved:
  • Student:

Volunteer Management for OSEM

  • Description:

The Open Source Event Manager is an event management app tailored to Free Software Conferences, it is developed in the Ruby on Rails web framework. Free Software conferences often depend on volunteers, recruited from the visitors, for on-site tasks like the registraition desk, room/track moderation, video taping or cleaning up. This project is about adding volunteer management to OSEM.

  • Deliverable:

Design a volunteer management workflow and describe it in our RSpec test suite. Develop Ruby on Rails Model(s) that describe the volunteer data. Develop Ruby Rails Controller(s) that interact with the volunteer model(s). Design and Develop a HTML/CSS/Javascript interface for Volunteer Management.

  • Mentor:

Hennevogel (talk)

  • Skills:
    • Ruby
    • Ruby on Rails
    • RSpec
    • HTML5, CSS3, Javascript
  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:
  • Student:

Parser for SPEC file for spec-cleaner project

  • Description:

spec-cleaner is a project hosted in github that is planned to be replacement for "osc service localrun format_spec_file". It is intended to provide same or better features in order for us to be able to unify all the spec files in obs.

The current implementation use a set of regular expression to detect certain patterns that can be improved by the spec-cleaner tools. The limitation of a regular expression is that is complex (or impossible) to express certain transformation in the document. A better approximation is create a parser that understand the grammar of the spec file, and create the AST tree that reflect the original file. In this way, the refactorization process can be done in the AST tree directly, instead of using regex for that.

  • Mentor:

aplanas

  • Skills:
    • Python
    • Knowledge the spec file
    • How to make a parser
  • Skill Level:
    • Medium to hard
  • Student:


Alternatives YaST Module

  • Description:

openSUSE, as other distributions, includes the command update-alternatives in order to allow users to choose which program they want to be the default for every given function (which text editor, which Java implementation and so on). Being quite prominent in other distributions, update-alternatives does not get the attention it deserves in openSUSE. The project consists on implementing a YaST module for managing the alternatives and their priority, offering an easy and guided interface on top of plain update-alternatives.

  • Deliverable:

A YaST module offering a clear overview of all the alternatives in the system and a convenient way to manage their configuration and priorities. The module must conform to the YaST development guidelines, which means, among other things, that it must include unit tests (RSpec).

  • Mentor:

Ancor González Sosa

  • Skills:
    • Ruby
    • Rspec
    • Object oriented design
  • Skill Level:

Easy

  • Byte Sized tasks for students to get involved:

Read the new YaST tutorial and write question or suggestions on how to improve it to yast-devel@opensuse.org mailing list.

  • Student:

-

Build Service: Add ARM64 ILP32 support for obs

  • Description:

This idea want the ilp32 support in obs which make life easier to make LP64 rootfs + ILP32 libs and/or pure ILP32 rootfs.

ILP32 is a method for running 32bit application on 64bit platform, such binary is elf32 with aarch64 assembly and is compiled by 64bit compiler. It is the alternative ABI supported by arm64. The default ABI on arm64 is LP64. X32 is the ILP32 implementation on x86_64(x86_64 platform support i386, x32, and x86_64).

There are gcc(upsteamed), kernel(during review) and glibc(during review) support for ilp32. And yocto for ILP32 is in process.

  • Deliverable:

Basically, it is expected that at the end of project there will be a ILP32 support in JeOS(pure ILP32 JeOS and/or LP64 root with ILP32 libs).

Further more, some testbench(such as LTP, lmbench) could be compiled in ILP32 in order to test ilp32 support status.

  • Mentor:

Bamvor (talk)

  • Skills:
    • Knowledge in deply obs server.
    • Knowledge in arm64 architecture.
    • Familiar osc, rpm and relative command.
  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:

Add ilp32 support for rpm. reference x32 support for rpm: https://sites.google.com/site/x32abi/x32-patches/rpm-4.11-x32-1.patch

  • Student:

Zorp

IDS/IPS Integration

  • Description: The goal of this project is to integrate the Suricata IDS/IPS system with an application level firewall to combine the advantages of the two different technologies.
  • Deliverable: An integrated system where
    • Suricate uses Zorp as an SSL terminator
    • Zorp uses Suricata automatic protocol detection feature to start the necessary proxy
    • Zorp passes extracted data to Suricata for further analysis
  • Mentor: Szilárd Pfeiffer
  • Skills:
    • willingness to learn new stuff
    • computer networks
    • network security
    • Linux networking
  • Skill Level: Medium
  • Byte Sized tasks for students to get involved:
  • Student:

Authentication as Rule Condition

  • Description: The goal of this project is to make it possible to set up firewall rules what can contain authentication as condition.
  • Deliverable:
    • a user space daemon which can handle authentication request coming from kZorp
    • an implementation of package queuing which can delay packets during authentication
    • modified kZorp module capable making decisions depending on authentication results
  • Mentor: Szilárd Pfeiffer
  • Skills:
    • willingness to learn new stuff
    • computer networks
    • network security
    • Linux network programming
    • Linux kernel programming
    • daemon programming
    • Python
  • Skill Level: High
  • Byte Sized tasks for students to get involved:
  • Student:

Code Review tool Github and Trello based

  • Description:

We have a tool for assigning reviewer for a particular pull request [1] We need to extend that tool to be able to run standalone and as a Rails engine.That requires re-factoring of the codebase to be able to use internal model of Rails and be able to run via Sequel backed database. [1] https://github.com/jschmid1/reviewlette

  • Deliverable:

New version of a gem which can be used both in standalone mode and in Rails engine mode.

  • Mentor:

Artem Chernikov

  • Skills:
    • Ruby
    • RSpec
    • Rails
  • Skill Level:
  • Medium
  • Byte Sized tasks for students to get involved:
    • Come up with idea of the re-factoring phases. What should be done first, what next.
    • Refactor application to be easily extendable
    • Implement Database abstraction which will allow to use either standalone DB or Rails backed DB
  • Student:

Build an openSUSE version ad-hoc for x86_64 tablets shipped with UEFI at 32 bits

  • Description:
The idea should consist in building an openSUSE version ad-hoc for
x86_64 tablets shipped with UEFI at 32 bits (i.e. Asus Transformer
Book T100 and so on). This is an interesting issue since currently no
distribution offer support for this kind of tablets (the only one I've
heard to work is GParted live!). On the other hand, this kind of
tablets cost less than an ultrabook and similar. So they are a
growing market for both Linux in general and openSUSE in particular.
  • Deliverable:

Build an openSUSE version ad-hoc for x86_64 tablets shipped with UEFI at 32 bits

  • Skills: C, Linux Kernel, Grub
  • Skill Level: Medium
  • Byte Sized tasks for students to get involved:

A new kernel option, CONFIG_EFI_MIXED, was added recently, and it allows the 64-bit kernel to be loaded from 32-bit UEFI. I didn't check the details, but this might be a good start. If this works, the rest would be the structure of the ISO image and the modification of the installation process.

https://bugzilla.suse.com/show_bug.cgi?id=901061

  • Student:

ownCloud : API client libraries

  • Description:

ownCloud provides several APIs like WebDAV and OCS to do operations like accessing files, managing shares, managing users, etc. To make it easier for developers to integrate their external applications or scripts with ownCloud, API client libraries should be developed that provide classes/functions that call such APIs in a way that is easy to use for the library user. Such a library should be developed for other programming languages like Ruby, Go, Javascript (Node JS), etc. One example is the Python ownCloud client library. Ideally such libraries should have a similar class/module structure and use similar function names and signatures, for consistency. Test suites must be present to test the provided functions against real ownCloud instances.

  • Deliverable:

Write an API client library for a chosen target language that cover files, sharing (and optionally users management too)

  • Mentor:

Vincent Petry (PVince81 on IRC freenode: #ownCloud-dev)

  • Skills:

Knowledge about the said chosen language and about calling REST APIs

  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:
  • Student:

ownCloud: New App Store

  • Description:

The current App Store suffers from multiple problems, the biggest being maintainability, ergonomics and duplication. In order to ease app publishing and installation, a new solution should be developed based on Node.js because the traffic is mainly IO intensive. This App Store offers a user signup page and a RESTful API to publish and unpublish apps and retrieve apps and zips. The initial implementation should handle only GitHub but should be extendable by plugins. A spec is already available but can always be adjusted. A testsuite for the API should be created and unit tests should be written using jasmine

  • Deliverable:

A RESTful API for managing applications with a web signup for app devs

  • Mentor:

Bernhard Posselt (Raydiation on IRC freenode : #ownCloud-dev)

  • Skills:

Node.js, Node.js frameworks, RESTful APIs, Git, TDD, BDD, Jasmine

  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:
  • Student:

ownCloud: Reference Management App (similar to Zotero)

  • Description:

Reference management software helps researchers to keep their personal libraries organised. One of the most used reference manager is Zotero. Whereas it is already possible to keep the files stored by Zotero synced through ownCloud via webDAV, the sync of meta-data requires an Zotero server. The ownCloud reference app will help the users to collect, handle and sync metadata of papers that are uploaded to ownCloud storage. For details see this page the Zotero and this discussion on the ownCloud mailing list.

  • Deliverable:

The project consists of implementing an ownCloud app to store metadata from research articles and, if time permits, a browser (Firefox/Chrome) plugin that interfaces the app. The ownCloud app needs to do at least the following things:

  1. scan ownCloud filesystem (or a selected folder) for PDF files.
  2. extract metadata from these files using some PHP library, such as pdfparser.
  3. allow the user to annotate pdf files and store annotations (the format of which needs to be decided)
  • Alternative Suggestion:

Making ownCloud based UI for native Zotero WebDAV data. Zotero already excels in web clipping and organising, but lacks comfortable data storage solutions, and still has no independent web interface. ownCloud app could fill the gap.

  • Mentor:

Alessandro Cosentino (cosenal on IRC : freenode : #ownCloud-dev)

  • Skills:

minimal: PHP and Javascript preferred: AngularJS It's definitely a plus if the student has experience with reference management software.

  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:
  • Student:

ownCloud : ownCloud as backend for web apps

  • Description:

An unhosted web app is an application that runs entirely in the browser. Since unhosted web apps do not have a database or storage server of their own, they rely on the user to connect their own per-user storage at runtime. Also when an application does have a server, it can be more efficient to let the client-side code communicate directly with an API, instead of letting all traffic go via the application server as an extra hop. The idea of this GSoC project is to

  1. add CORS headers to the API
  2. add support for the implicit-grant flow to ownCloud's OAuth dialog
  3. publish a small javascript library that makes it easy to use the ownCloud API in an unhosted web app.

To get an idea of what this would look like, check out the JavaScript libraries provided by for instance Google Drive or Dropbox.

  • Deliverable:

Support for cross-origin API access in ownCloud, a small JavaScript library, and some documentation, aimed at html5 app developers, describing how to use it. With this, it will be possible to "log in" to a website with your ownCloud instance as your personal data storage, and all user data on this website will come from, and be saved to, your ownCloud account.

  • Mentor:
  1. @michielbdejong on Github
  2. Jan-Christoph Borchardt (@jancborchardt on Github, jancborchardt on IRC freenode : #ownCloud-dev)
  • Skills:

JavaScript, PHP, basic understanding of HTTP debugging (browser developer tools as well as WireShark or similar), capacity to understand the complex request flows of both CORS and OAuth.

  • Skill Level:

Medium / Difficult

  • Byte Sized tasks for students to get involved:
  • Student:


Trello command line client

Description

Trollolo is a command line client for Trello. It can be used to retrieve data in various ways. Its two main features are generation of burndown for teams using Scrum and backup of Trello boards. These features can be improved quite a bit and there is virtually unlimited opportunity to come up with other interesting ideas how to improve the tool and add support for interesting additional use cases.

For the generation of burndown charts possible tasks and projects could be:

  • Automatic upload of burndown charts
  • Tracking velocity
  • Better configurability to be able to adapt to a wider variety of projects
  • Support for sprint planning
  • Support for agile estimation techniques
  • Displaying history of project
  • ...

For the backup of Trello boards possible tasks and projects could be:

  • Restoring boards
  • Show diffs between different versions of the board
  • Handling attachments
  • Store backups under version control
  • Display of backups on the command line
  • ...

Other projects could be:

  • Membership management for organizations
  • Generator for board templates from existing boards
  • Validator of boards according to given criteria (given lists, format of titles, existence of checklists)
  • Cross-referencer to create and validate two-way links between cards. This would be useful for cases where you have hierarchies of cards distributed between different lists and you want to keep the link status up to date without manual work. Use case could be managing requirements where you go from vision over high-level user scenarios to low-level use cases.
  • ...

As an interesting twist all these projects could be done in a self-hosting way by managing the project with the tools which are developed.

Deliverable

Tested, working, released version of Trollolo containing shiny new feature.

Mentor

Cornelius Schumacher <cschum@suse.de>

Skills

  • Ruby
  • RSpec
  • TDD
  • Command line tools
  • REST APIs
  • JSON

Skill Level

Medium

Byte Sized tasks for students to get involved

  • Take an issue of CodeClimate and refactor the code to fix it
  • Add a test for a method which isn't tested yet
  • Add a new sub command of your choice which does something useful

Puppet: openSUSE improvements in puppet modules

  • Description:

Puppet is configuration management tool. Its recent best practises allows us to structure our modules in Base, Profiles and Roles, for better use of third party modules from the forge. Most of the forge modules though have limited to no openSUSE support.

  • Deliverable:

Popular forge modules should have openSUSE support, along with proper tests. Also, openSUSE specific modules like zypprepo should be improved.

  • Mentor:

Theo Chatzimichos <tampakrap@opensuse.org>

  • Skills:

Ruby, Puppet DSL, Puppet Types and Providers, RSpec, rspec-puppet

  • Skill Level:

Medium

  • Byte Sized tasks for students to get involved:
  • Student:

MATE Desktop

The MATE Desktop Environment is the continuation of GNOME 2. It provides an intuitive and attractive desktop environment using traditional metaphors for Linux and other Unix-like operating systems.

Read the page to learn how to get started with MATE Desktop development.

If you have questions or suggestions, you could contact MATE developers through IRC or our mailing list.

MATE Desktop media casting

MATE Desktop mobile device integration

  • Description: Create a panel applet that can interact with notifications from mobile devices.
  • Deliverable: It shall be possible to receive to incoming messages from Android devices on the MATE desktop. It shall also be possible to transfer links, text snippets and files, using Caja Send-to, between MATE desktop and Android devices. The panel applet should also display the Android device power and signal status. The implementation should be flexible so that other mobile platforms (such as iOS, Ubuntu Touch and Sailfish) can be supported in the future. If technically feasible, add support for composing messages and replying to messages directly from MATE desktop. Ideally work directly with KDEConnect to add MATE support to KDEConnect rather than create a separate project or fork. The implementation must support GTK2 and GTK3.
  • Mentors:
    • Stefano Karapetsas (stefano-k in IRC)
    • Martin Wimpress (flexiondotorg in IRC)
  • Skills: Most MATE applications are written in C. We have also few applications and applets written in Python. Almost all applications have Python bindings generated with GObject introspection.
    • C
    • Python
    • GLib
    • GTK
    • Qt and KDE would be advantageous given KDEConnect currently relies on both.
  • Skill Level: Medium
  • References:
  • https://github.com/hauckwill/linconnect-server
  • Student:

MATE Window Manager (Marco) GPU accelerated compositing

MATE Panel Renovation