Archive:GSOC ideas 2014
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.
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:
- Skills:
- Python
- Knowledge the spec file
- How to make a parser
- Skill Level:
- Medium to hard
- Student:
kumar rishabh (candidate)
Integrate Windows NTFS shadow volume browsing into openSUSE GUI tools
- Description:
libvshadow was added to openSUSE 13.1 but does not have integration into the rest of the distribution. libvshadow provides read-only access to NTFS VSCs (volume shadow copies). NTFS VSCs are extremely common in Windows 7 based systems and created by default when certain Windows System actions take place. They are the foundational piece for Windows 7 Restore Points, so they tend to be created when new drivers, etc. are installed.
These are the basic command line steps currently required to access a VSC from openSUSE 13.1
mmls /dev/sdb # identify potential partitions on /dev/sdb vshadowinfo -o $((512 * 29566976)) -v /dev/sdb # look for VSCs on the partitions shown by mmls vshadowmount -o $((512 * 29566976)) /dev/sdb /mnt # the partition at offset 29566976 has VSCs, so make them accessible mkdir -p /shadows/vss1; mount -o loop,ro /mnt/vss1 /shadows/vss1 # Mount the first VSC
There are multiple tasks that individually or cumulatively might make an appropriate GSoC project.
- write a new GUI front-end that would mount the volume shadow copies in /media or /run, etc. I guess it could be a new YaST module. Alternatively it might make sense to extend an exisitng YaST module. YaST has recently been fully converted Ruby source code.
- integrate libvshadow into a filemanager such as KDE's dolphin or mc (midnight commander)
- integrate libvshadow into snapper (I'm not sure this makes since. VSCs are readonly from Linux.)
- Mentor: Greg Freemyer & Need Someone familiar with the GUI tool being integrated into is needed (Josef Reidinger if it will be integrated to YaST)
- Skills: Depends on the specific task chosen. libvshadow is written as a C library and has python bindings. YaST is in ruby. Different file managers are likely in different languages.
- Skill Level: Depends on how easy the GUI tool is to enhance
- Student:
Better Cloud images with KIWI
- Description:
The openSUSE KIWI Image System provides a complete operating system image solution for Linux supported hardware platforms as well as for virtualization systems like Xen, VMware, etc. The KIWI architecture was designed as a two level system. The first stage, based on a valid software package source, creates a so called unpacked image according to the provided image description. The second stage creates from a required unpacked image an operating system image. The result of the second stage is called a packed image or short an image.
KIWI is hosted on github, licensed under GPL v2 and used by a number of companies to build images.
- Cloud image building needs to gain a few features to eliminate initrd re-generation when an image is launched in the cloud
- Cloud boot process should be controlled by kiwi initrd and not by mkinitrd because mkinitrd deals bad with offline root filesystems
- Filesystem creation with a label is important. Along with this Filesystem options setting need to be integrated into the XML and processed and handled properly
We have a long list to keep you busy for the whole Summer.
- Mentor:
Robert Schweikert Marcus SchÀfer
- Skills:
- Perl
- Knowledge of the Linux boot process
- Willingness to learn new stuff
- Have no fear
- Skill Level:
- Medium to hard
- Student:
Interested: Saket Sinah
Open Source Event Manager (OSEM): Event Splash Pages
- Description: OSEM is used by openSUSE and other projects to organize events. So far the feature set for attendees is limited to registering and reading the schedule. But there is so much more to tell about an event: Venue Details, Travel Info, Sponsors, Policies, Featured Speakers, Keynotes, Parties, Updates, Media and so on, and so on. Usually this info is kept on a separate web page, disconnected from OSEM. This project is about giving event admins the possibility to build such a splash page in OSEM. See also https://github.com/openSUSE/osem/issues/21 and https://github.com/openSUSE/osem/issues/20
- Mentor: Hennevogel (talk)
- Skills: Ruby, Ruby on Rails, Web-Design, HTML, CSS
- Skill Level: Medium
- Student: User:tian2992
- Interested:Gopesh Tulsyan
Quick Apache Initial Setup YaST Module
- Description: Write 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 RoR I want to quickly setup apache with django I want to quickly setup apache with mocculus
etc. with framework 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.
- Mentor: Josef Reidinger
- Skills: ruby and rspec. Object oriented design.
- Skill Level: Medium
- Student:
Open Build Service: Integration Tests
- Description: The Open Build Service uses an automated test suite using rails minitest and capybara. This project is about extending the integration tests to cover all major workflows in the OBS.
- Mentor: Hennevogel (talk)
- Skills: Rails, Minitest, Capybara
- Skill Level: Easy
- Student:
Integrate Snapper Snapshot browsing into openSUSE Desktop tools
- Description: Snapper can make snapshots of Btrfs subvolumes and LVM thin provisioned logical volumes. It can be configured to allow users to make snapshots of their home directories. The individual user is so far mainly limited to the command line tool. An integration into the desktop could allow the user to view available snapshots (including metadata), browse though individual snapshots (e.g. addressed by time of snapshot creation) and view all versions of an individual files next to each other.
- Mentor: Arvin Schnell (snapper part) and Ismail Dönmez (desktop part)
- Skills: The communication to snapper needs DBus. Otherwise depends on the Desktop, e.g. KDE or Gnome.
- Skill Level:
- Student:
Extend Git-Review to work with BitBucket
- Description: Git-Review manages review workflow for projects hosted on GitHub (using pull requests). Many developers already use this handy little command line tool to help them with their everyday work. It has originally been developed during a former SUSE Hackweek and has already been part of GSoC 2013 (with great success).
Since especially from members of the community there are requests to enable BitBucket support for Git-Review, during GSoC 2014 the main task will be to extend git-review towards this goal. Meaning, adding an abstraction layer for the data source (which right now is GitHub) and talking to BitBucket's API the same way we are talking to GitHub's API right now. In the final state a user should not see / feel any difference in git-review's functionality no matter wheter the repository's remote origin is on GitHub or on BitBucket. Usually, it shouldn't even be necessary to configure anything. It should just work.
Before jumping into this task there will also be a couple of minor bugfixes for git-review on GitHub (e.g. support 2 factor authentication) to become familiar with the project. All open issues are tracked on the project's page on GitHub.
- Mentor: Dominik Bamberger
- Skills: Ruby, RSpec, GitHub and BitBucket.
This tool makes heavy use of GitHub's API and thus a potential student should have a good grasp of how GitHub's API works, in order to understand the code and to be able to modify it.
- Skill Level: Medium
- Student: TBA
Add virtual machine snapshot support to libvirt Xen driver
- Description:
For quite some time now, the libvirt QEMU driver has supported virtual machine snapshot operations. These were never implemented in the legacy Xen driver, due to missing support in xend. But now that the Xen project has deprecated xend and moved to the new and improved libxenlight toolstack, the doors have been opened to finally provide snapshot support in libvirt for Xen virtual machines.
This project aims to implement the minimal operations needed to make snapshot useful in the libvirt libxenlight driver
- virDomainListAllSnapshotsvirDomainListAllSnapshots
- virDomainRevertToSnapshotvirDomainRevertToSnapshot
- virDomainSnapshotCreateXMLvirDomainSnapshotCreateXML
- virDomainSnapshotCurrentvirDomainSnapshotCurrent
- virDomainSnapshotDeletevirDomainSnapshotDelete
- virDomainSnapshotFreevirDomainSnapshotFree
- virDomainSnapshotGetNamevirDomainSnapshotGetName
- virDomainSnapshotGetXMLDescvirDomainSnapshotGetXMLDesc
- virDomainSnapshotNumvirDomainSnapshotNum
The remaining snapshot APIs supported by libvirt provide plenty of extra credit opportunities for this project
- virDomainHasCurrentSnapshotvirDomainHasCurrentSnapshot
- virDomainSnapshotGetCurrentvirDomainSnapshotGetCurrent
- virDomainSnapshotGetDomainvirDomainSnapshotGetDomain
- virDomainSnapshotGetParentvirDomainSnapshotGetParent
- virDomainSnapshotHasMetadatavirDomainSnapshotHasMetadata
- virDomainSnapshotIsCurrentvirDomainSnapshotIsCurrent
- virDomainSnapshotListAllChildrenvirDomainSnapshotListAllChildren
- virDomainSnapshotListChildrenNamesvirDomainSnapshotListChildrenNames
- virDomainSnapshotListNamesvirDomainSnapshotListNames
- virDomainSnapshotLookupByNamevirDomainSnapshotLookupByName
- virDomainSnapshotNumChildrenvirDomainSnapshotNumChildren
- virDomainSnapshotRefvirDomainSnapshotRef
- Mentor: Jim Fehlig
- Skills: C, git
- Skill Level: Medium
- Student:
Open Source Event Manager (OSEM): Refactor user management model
- Description:
OSEM is used by openSUSE and other projects to organize events, but the whole model for users and permissions management have evolved in an undirected way, always looking at the short term, and now it really needs a major rethinking and refactoring. There are two different models, "user" and "person" with a lot of overlapping functionality. That results in a lot of confusion for both the users and the people willing to install and administer the application. On the other hand, there is only a limited number of roles (admin, organizer and participant), without a clear distinction between admin and organizer.
A major overhaul is needed, including:
- rethink the logic of OSEM and change/merge the two overlapping models (users and persons),
- think about the structure of the roles,
- add more needed roles (volunteer, global admin, conference admin and/or organizer, etc.),
- add the necessary functionality to them, with a clear distinction of who can do what
- Mentor: Ancor GonzĂĄlez
- Skills: Ruby, Ruby on Rails
- Skill Level: Medium to hard
- Student: Stella Rouzi
TSP application: enabling configuration and management through web interface
- Description:
The TSP application is a web application to manage the requests and reimbursements from travel help programs of free software organizations. Although currently it's only been used to manage the openSUSE Travel Support Program, the goal is to write a generic application including all the common features so it can be extended and adapted to fulfill the needs of any organization.
In the current implementation, adapting the application means introducing small modifications in the source code and the translations, apart from adjusting the configuration files. In addition, management of users and roles is performed with a command line tool, instead of being integrated in the web interface.
The goal of this GSoC project is to create a new area in the web interface of the application that enables users with an special role to manage the users and their roles, the workflow of the requests and the information associated to very state, the structure of the application menu and, in general, any thing that now needs to be set up by editing files or using the command line.
- Mentor: Ancor GonzĂĄlez
- Skills: Ruby, Ruby on Rails
- Skill Level: Medium to hard
- Student: Karthik Senthil ??
ePub format support in Atril (MATE)
- Description:
Atril is the MATE document viewer and already has support for a variety of document formats: PostScript (PS), Encapsulated PostScript (EPS), DJVU, DVI, Portable Document Format (PDF) and Open XML Paper Specification (XPS). We would like to add support to open also EPUB files. EPUB is a short for âelectronic publicationâ, it is a free and open e-book standard by the International Digital Publishing Forum (IDPF).
- Mentor:
- Stefano Karapetsas (stefano-k on irc)
- Martin Wimpress (flexiondotorg on irc)
- Skills: C
- Skill Level: Medium
- Student:
GStreamer-1.0 support (MATE)
- Description:
GStreamer is a multimedia framework. MATE currently supports GStreamer 0.10, but this version now is no longer maintained. GStreamer 1.0 includes a lot of improvements and new features, but it is not API or ABI compatible with the 0.10. We would like to add support for this new version of GStreamer.
- Mentor:
- Stefano Karapetsas (stefano-k on irc)
- Martin Wimpress (flexiondotorg on irc)
- Skills: C (GStreamer framework a plus)
- Skill Level: Medium
- Student:
Plugin system in Caja (MATE)
- Description:
Caja, our file manager, has a nice library to allow developers to create extensions. But these extensions are loaded during Caja start, and there is no possibility to enable/disable them at runtime. Add a way to enable and disable Caja extensions is one of the goals of MATE Desktop roadmap.
- Mentor:
- Stefano Karapetsas (stefano-k on irc)
- Martin Wimpress (flexiondotorg on irc)
- Skills: C (GLib and GTK a plus)
- Skill Level: Medium
- Student:
Implement a test driver for the libvirt libxl driver
- Description:
The libvirt libxl driver desperately needs needs some unit testing. The goal of this project is to implement a fake libxl library that can be preloaded and used to test the libvirt libxl driver. The libvirt project already contains examples of LD_PRELOADing such fake libraries to test other drivers and subsystems within libvirt and should provide a good starting point for this project.
- Mentor: Jim Fehlig
- Skills: C, git
- Skill Level: Medium
- Student:
Porting of the Plasma-Active Bodega Client to openSUSE
- Description:
Bodega is an "appstore" developed by the Plasma-Active group within KDE, the goal of this project is to develop a Qt native client for use within openSUSE as a Package Manager (Yast/zypper) front end, as well as looking at appstore functionality (music, movies, television, et. al) https://projects.kde.org/projects/kdereview/bodega-client https://projects.kde.org/projects/kde/kdeplasma-addons
- Mentor: Shawn W Dunn
- SFaulken on IRC
- Skills: Qt, QML, git
- Skill Level: Medium
- Student:
Cool live flash
- Description:
- This project will be about investigating and developing cool live flash drives, that would allow us to do following:
- whole flash drive will be fat32/ntfs with files on it and thus usable on other systems as well
- user can add additional live images by simply copying them on flash drive
- support for images from SUSE Studio
- user can decide whether run clean image and discard changes or whether all changes should be persistent
- removing/updating images should be easy
- user should be able to have separate persistent storage for every live image while being able to access other storage
- initial creation of flash drive should be easy
- This project will be about investigating and developing cool live flash drives, that would allow us to do following:
- Mentor: Michal Hrusecky
- Skills: shell scripting, knowledge about boot process and GNU/Linux internals, basic packaging, some C to be able to apply patches/fix compilations
- Skill Level: Medium
- Student:
Implement an application-level LBaaS driver for Zorp
- Description: The LBaaS extension provides OpenStack users with the ability to load balance their networks. The goal of the project is to provide a Load Balancer as a Service (LBaaS) Zorp driver either to openSUSE or OpenStack users.
- Mentor: ["SzilĂĄrd Pfeiffer"] ["BĂĄlint KovĂĄcs"]
- Skills:
- Willingness to learn new stuff
- Knowledge of TDD and Clean Code principles
- C/C++
- Linux networking
- Python
- Skill Level: Medium
- Medium to hard
- Student: Péter Vörös
MongoDB proxy for the Zorp application level firewall
- Description:
Zorp is an application level firewall: something that sees inside protocols, can understand and modify them.
The goal of this project is to write a completely new proxy module for it, that is able to parse and reassemble the MongoDB wire protocol, and provide hooks for the firewall user to influence the traffic (by, for example, restricting access to read-only operations).
- Deliverables:
- A functional proxy, that is able to parse and reassemble the MongoDB wire protocol.
- Ability to hook into the protocol, and influence it, by restricting the usable set of commands to read-only operation only (or to a selected list of commands).
- Mentors:
- Confirmed Mentor: Szilard Pfeiffer, who is available at szilard.pfeiffer@balabit.com
- Confirmed Co-mentor: Balint Kovacs, who is available at: balint.kovacs@balabit.com
- Skills:
- A reasonable knowledge of the C and Python programming languages
- Basic knowledge of network protocols
- Interested students who wish to apply should attach a log of a successful Zorp 3.9.5 compilation from source. An even more interesting thing would be if applicants already tried the Zorp virtual machines in advance, to get familiar with the software.
- Skill Level: medium - hard
- Student:
Facebook chat restrictions with Zorp
- Description:
The goal of the project would be to figure out a way to either enhance the existing HTTP proxy, or write a new one, that can be stacked inside it, to be able to restrict Facebook chat.
This involves a reasonable amount of research along with the coding. The expected outcome is a way to enable users to use facebook, but forbid chatting during work hours (where work hours are, of course, configurable).
- Deliverables:
- An analysis of how one could restrict facebook chat.
- Either an enhancement of the existing HTTP proxy, or a new one, that can be stacked inside it that makes the restriction possible.
- Mentors:
- Confirmed Mentor: Szilard Pfeiffer, who is available at szilard.pfeiffer@balabit.com
- Confirmed Co-mentor: Balint Kovacs, who is available at: balint.kovacs@balabit.com
- Skills:
- A reasonable knowledge of the C and Python programming languages
- A solid knowledge of the HTTP protocol and HTML.
- A reasonable knowledge of JavaScript, and debugging tools. Interested students who wish to apply should attach a log of a successful Zorp 3.9.5 compilation from source. An even more interesting thing would be if applicants already tried the Zorp virtual machines in advance, to get familiar with the software.
- Skill Level: medium - hard
- Student:
ownCloud: Read later app (similar to Pocket/Instapaper)
- Description: A combination of web and mobile apps which allow people to save websites and articles for later and to read offline. This should integrate with the already existing Bookmarks app, or supersede it. Also it should use the same API as the already existing open source Wallabag â then we can also use their already existing Android app and browser extensions.
- Deliverable: Modification of the Bookmarks app to also save and be able to view the content of webpages. Expose the same API as Wallabag so that their apps (mobile/desktop) can be reused.
- Mentors: Jan-Christoph Borchardt (@jancborchardt, design), Alessandro Cosentino (@cosenal)
- Skills: Javascript (ideally also knowledge of AngularJS framework)
- Skill level: Medium
ownCloud: Reference Management App (similar to Zotero)
- Description: Reference management software helps researchers to keep their personal libraries organized.
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 [1] on the Zotero website and this discussion on the ownCloud mailing list: [2]
- 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.
- Future development: Interfacing this app with other existing reference manager (both desktop and mobile)
- Mentor: Alessandro Cosentino (@cosenal), others?
- Skills: minimal: PHP and Javascript, preferred: AngularJS
It's definitely a plus if the student has used some reference management software before.
- Skill level: Medium
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
- add CORS headers to the API
- add support for the implicit-grant flow to ownCloud's OAuth dialog
- 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 GoogleDrive 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: @michielbdejong, Jan-Christoph Borchardt (@jancborchardt, design)
- 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
... more ownCloud projects
For the complete list of ownCloud projects, check this list: https://github.com/owncloud/core/wiki/Project-ideas
For other information, check the ownCloud GSoC welcome page.