Ideas

Differences between revisions 28 and 29
Revision 28 as of 2016-02-19 13:21:45
Size: 21622
Editor: p3E9C2A70
Comment:
Revision 29 as of 2016-02-25 18:57:55
Size: 22539
Editor: localhost
Comment:
Deletions are marked like this. Additions are marked like this.
Line 101: Line 101:



=== Build a QEMU API for Rust ===
 * '''Mentors: ''' Chris Holcombe <<MailTo(chris.holcombe AT canonical DOT com)>>
 * '''Description:''' QEMU is a generic and open source machine emulator and virtualizer. It has a nice JSON based API that can be used to communicate with it. The goal of this project will be to write a library to interface with a running QEMU instance. This will allow unit tests in your Rust code to build and launch a virtual machine to test your code with. The Rust community will greatly benefit from this addition.
 * '''Desirable skills:''' Strong command line knowledge and debugging skills. Rust knowledge will be very helpful but not required. Willingness to read a lot of documentation.
 * '''Goal/Deliverable:''' Demonstrate that a virtual machine can be built and deployed. The code will then be packaged up and put on crates.io for everyone in the community to use.

Google Summer of Code: Project ideas and mentors

Mentors

We need your help to make GSoC 2016 a success. Do you contribute to Ubuntu? If you do, please consider becoming a mentor this summer and adding your name and idea to the list below.

Project ideas

Students: Please read our advice for students in addition to the ideas on this page. Remember, these are just suggestions! If your favourite idea isn't here, don't worry. You are welcome to use your own project idea when you submit your student application. Of course, it is a good idea to look around and find someone who would be interested in mentoring your project. Perhaps someone is offering to mentor a similar project?

Can you think of a nice project for a student to work on over the summer? Is it best achieved here in Ubuntu? Great! Go ahead and add it to this list. When adding a project idea…

  • Try to explain your idea quickly. If you need more words, consider linking to another wiki page.
  • Make sure your idea is understandable for someone who is new to Ubuntu development.
  • If you are interested in mentoring that idea, please leave your name with the project, and in the table at the top of this page, so potential students can contact you.
  • Please use the following format and add your idea to the top of the list:
    • === Project name ===
       * '''Mentors:''' List anyone interested in mentoring the project; include contact details!
       * '''Description:''' Describe the project
       * '''Desirable skills:''' List what skills will be useful to the project, like what language(s) are used
       * '''Goal/Deliverable:''' A quick summary of what you hope to achieve at the end of the project
      ----


Ubuntu Core

Personal NAS system

  • Mentors: Kyle Fazzari <kyle.fazzari AT canonical DOT com>

  • Description: Creating a snap package offering NAS capabilities to a local network (on Ubuntu Core 16.04).

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core. Some bash/python knowledge may be needed to write glue code. The primary target for this can be some hardware the student already has (e.g. an Intel NUC, or Raspberry Pi 2), or our kvm vm.

  • Goal/Deliverable: A NAS solution snap approved in the snap store (for all architectures).

Personal media publishing platform

  • Mentors: Didier Roche <didrocks AT ubuntu DOT com>

  • Description: Creating a snap package offering personal media publishing platform (for instance, based on mediagoblin) to share photos and videos with friends and family (on Ubuntu Core 16.04).

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core. Some bash/python knowledge may be needed to write glue code. The primary target for this can be some hardware the student already has (e.g. an Intel NUC, or Raspberry Pi 2), or our kvm vm.

  • Goal/Deliverable: A media publishing platform snap approved in the snap store (for all architectures).

Surveillance box to monitor your home while you are away

  • Mentors: Kyle Fazzari <kyle.fazzari AT canonical DOT com>

  • Description: Creating a snap package to be installed on any Ubuntu Core device offering monitoring and reporting capability while you are away (on Ubuntu Core 16.04).

  • Desirable skills: Research of good surveillance existing solution working or easily portable to Ubuntu, providing reports to other devices like phone (sms, alerts…). Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core. Some bash/python knowledge may be needed to write glue code. The primary target for this can be some hardware the student already has (e.g. an Intel NUC, or Raspberry Pi 2), or our kvm vm. A USB webcam is required for this task.

  • Goal/Deliverable: A surveillance platform snap approved in the snap store (for all architectures).

Ubuntu Core media center system based on kodi

  • Mentors: Stephen M. Webb <stephen.webb AT canonical DOT com>

  • Description: Creating a snap package offering kodi media center for installation (on Ubuntu Core 16.04).

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core. Some bash/python knowledge may be needed to write glue code. The primary target for this can be some hardware the student already has (e.g. an Intel NUC, or Raspberry Pi 2), or our kvm vm. Warning: this task is less trivial than other ones in the same category (require access to hw acceleration via sdl/mir).

  • Goal/Deliverable: A kodi-based snap approved in the snap store (ideally for all architectures).

Enhancing snappy config via the webdm interface

  • Mentors: Didier Roche <didrocks AT ubuntu DOT com>

  • Description: Ubuntu Core has a "snappy config" command which take today a free-form yaml file and create an user configuration. Ensuring that this config is more declarative will enable to expose it to some UI and clear interfaces like webdm. Finally, create generic hooks that can be used in various projects.

  • Desirable skills: Be able to design a good API and specification. Debating about it with developers over emails or IRC. Willingness to read a lot of documentation on Ubuntu Core. Go/HTML knowledge to write both the generic config parser and changing webdm interface to expose those properties.

  • Goal/Deliverable: Having this new straightforward config specification acked and implemented in both snappy and webdm.

Package and build some openHAB based home automation system

  • Mentors: Kyle Fazzari <kyle.fazzari AT canonical DOT com>

  • Description: Creating a snap package to be installed on any Ubuntu Core device offering openHAB capability and monitoring (on Ubuntu Core 16.04).

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core and openHAB. Some bash/python knowledge may be needed to write glue code. The primary target for this can be some hardware the student already has (e.g. an Intel NUC, or Raspberry Pi 2), or our kvm vm. Various sensors will be required for this task.

  • Goal/Deliverable: An home automation openHAB snap approved in the snap store (for all architectures) with a good suite of addons and demos.

Expanding snapcraft parts store with communication standards

  • Mentors: Didier Roche <didrocks AT ubuntu DOT com>

  • Description: Provide some example parts and working demos to Ubuntu Core 16.04 snapcraft parts store around IoT communication standards. We are looking for MQTT (via mosquitto and paho), CoAP (via californium), LwM2M (via Leshan) and ETSI SmartM2M (via OM2M) ones in particular as per Eclipse IoT projects (http://iot.eclipse.org/standards).

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ubuntu Core and communication frameworks. Some bash/python/Java/Go knowledge to be able to build up the snapcraft parts best practices for those and demos using them.

  • Goal/Deliverable: Writing up technical demos using those communication frameworks (server/client) and having the parts referenced on the parts store as best practices.

Cloud Storage

Diagnose My Ceph Cluster

  • Mentors: Chris Holcombe <chris.holcombe AT canonical DOT com> and Chris MacNaughton <chris.macnaughton AT canonical DOT com>

  • Description: Build a script that can be very quickly be run and give you a best guess as to what was wrong with the a running Ceph cluster. Working knowledge of distributed storage will be helpful but not required. We can guide you along the way. You will learn a lot about how Ceph works. This project will pull together a lot of different disciplines.

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ceph and communication frameworks. Python knowledge will be needed to be able to build this script.

  • Goal/Deliverable: A Python script that can be run on a Ceph cluster that is broken and the script will produce a best guess as to what is wrong.

Decode CephX Protocol

  • Mentors: Chris Holcombe <chris.holcombe AT canonical DOT com>

  • Description: The storage team at Canonical have built a library that can decode Ceph's RPC protocol in real time. A good chunk of Ceph's packets are currently able to be decoded. However one very important one is still missing. The CephX packets need to be decoded before this library can be used as a full fledged ceph client. The goal of this project will be to correctly encode and decode a CephX packet. This project is entirely written in Rust.

  • Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Rust knowledge will be very helpful but not required. Strong knowledge of networking. Willingness to read a lot of documentation.

  • Goal/Deliverable: Demonstrate that a CephX packet can be correctly sent/recieved to a Ceph monitor cluster. A small Rust program can be built to demonstrate this.

Build a QEMU API for Rust

  • Mentors: Chris Holcombe <chris.holcombe AT canonical DOT com>

  • Description: QEMU is a generic and open source machine emulator and virtualizer. It has a nice JSON based API that can be used to communicate with it. The goal of this project will be to write a library to interface with a running QEMU instance. This will allow unit tests in your Rust code to build and launch a virtual machine to test your code with. The Rust community will greatly benefit from this addition.

  • Desirable skills: Strong command line knowledge and debugging skills. Rust knowledge will be very helpful but not required. Willingness to read a lot of documentation.

  • Goal/Deliverable: Demonstrate that a virtual machine can be built and deployed. The code will then be packaged up and put on crates.io for everyone in the community to use.

~

Juju

Create a ruby on rails layer

  • Mentors: Marco, José, lazypower

  • Description: Create a new layer for juju that allows charm authors to easily add rails applications. Layers let you build on the work of other charmers, whether that work is in the form of other charms that you can extend and modify, interfaces that are already built for you and know how to communicate with a remote service and let you know when that service is ready and what it provides for you, or partial base layers that make managing dependencies much easier. And it does this in a consistent, repeatable, and auditable way. https://jujucharms.com/docs/stable/authors-charm-building

  • Desirable skills: ruby

  • Goal/Deliverable: A published layer that is used by at least one charm

Create a php layer

  • Mentors: Marco, José, lazypower

  • Description: Create a new layer for juju that allows charm authors to easily add php applications. Layers let you build on the work of other charmers, whether that work is in the form of other charms that you can extend and modify, interfaces that are already built for you and know how to communicate with a remote service and let you know when that service is ready and what it provides for you, or partial base layers that make managing dependencies much easier. And it does this in a consistent, repeatable, and auditable way. https://jujucharms.com/docs/stable/authors-charm-building

  • Desirable skills:

  • Goal/Deliverable: A published layer that is used by at least one charm

Desktop

Create a window manager for MIR

  • Mentors: Alan Griffiths, Stephen Webb?

  • Description: Create a working window manager, based upon the MIR library; https://unity.ubuntu.com/mir/index.html

  • Desirable skills: C/C++

  • Goal/Deliverable: A working installable package of a window manager utilizing MIR that works on x86 and armhf platforms. It should be capable of real world usage.

Implement a Vulkan renderer for Mir

  • Mentors: Cemil Azizoglu

  • Description: Implement a Vulkan renderer for the Mir compositor; https://unity.ubuntu.com/mir/index.html

  • Desirable skills: C/C++

  • Goal/Deliverable: A working Mir utilizing the Intel-based Mesa or the LunarG driver for Vulkan for composition.

Add accelerometer support

  • Mentors: Stephen Webb

  • Description: Enable accelerometer/gyroscope/magnetometer devices on modern laptop hardware

  • Desirable skills: C++

  • Goal/Deliverable: A working driver that enables accelerometers in at least vendor series of modern laptops

Implement new designs for UITK components

  • Mentors: Jamie Young & Zoltan Balogh

  • Description: Implement the new designs for various UITK components, both new components as well as redesigned existing components

  • Desirable skills: C++/qml

  • Goal/Deliverable: Implemented designs in the next version of UITK

Community

Translations stat site

  • Mentors: David Planella

  • Description: Create a new translation stats site that shows the current translation status for product targets including the ubuntu phone and desktop.

  • Desirable skills: Django, Javascript, Python

  • Goal/Deliverable: A hosted website that displays translations statistics in realtime

Integrate Snippets App

  • Mentors: David Callé

  • Description: Integrate django-cab/djangosnippets as an app on developer.ubuntu.com to allow users to host, share and re-use code snippets.

  • Desirable skills: Django, javascript, python

  • Goal/Deliverable: Code snippets hosting and sharing functionnality on developer.ubuntu.com

Migrate community.ubuntu.com website to Django

  • Mentors: Michael Hall

  • Description: The current community.ubuntu.com site is operating on wordpress. To be consistent with the rest of the ecosystem, we'd like to move it to community.ubuntu.com. This involves migrating the site, creating plugins, etc.

  • Desirable skills: Django

  • Goal/Deliverable: A completed migrated community.ubuntu.com site

Create a django webapp for Ubuntu on Air

  • Mentors: Daniel Holbach

  • Description: ubuntuonair.com is a live video site utilized for live Q and A's, talks, and other community outreach events. The site serves as a crude gateway for live Q and A's that would be better itegrated as a proper application with the community site.

  • Desirable skills: Django, javascript, python

  • Goal/Deliverable: ubuntuonair.com is replaced by the new django webapp, which has been integrated with the greater community.ubuntu.com site

UBuntu MATE Snappy and Xmir derivative

  • Mentors: Martin Wimpress

  • Description: Let's create an alternative implementation of MATE that utilizes snappy as a base, and incorporates Mir and XMir.

  • Desirable skills: C/C++

  • Goal/Deliverable: A bootable image of mate with snappy and mir

Extend Ubuntu Pi Flavour Maker

  • Mentors: Martin Wimpress

  • Description: The ubuntu pi flavour maker allows you to create custom flavours of ubuntu for the raspi2. We'd like to extend this to more easily maintain the tool by incorporating it as part of Ubuntu Mate builds directly.

  • Desirable skills: C/C++

  • Goal/Deliverable: The ubuntu mate build infrastructure is capable of supporting raspberry pi 2.

Ubuntu Touch

Implement a 2D renderer for Mir

  • Mentors: Cemil Azizoglu

  • Description: Implement a 2D-based renderer for the Mir compositor; https://unity.ubuntu.com/mir/index.html

  • Desirable skills: C/C++

  • Goal/Deliverable: A working Mir utilizing only 2D-capable hardware for composition.

Calendar app: Add calDAV support

Calendar app: Add iCalendar support

HTML mail composer for Dekko

  • Mentors: Dan Chapman

  • Description: Add an HTML compliant mail composer for dekko

  • Desirable skills: C++, qml

  • Goal/Deliverable: Working code added to the beta version of dekko

Contacts plugins for Dekko

  • Mentors: Dan Chapman

  • Description: Extend contacts support in dekko via plugins

  • Desirable skills: C++, qml

  • Goal/Deliverable: Working code added to the beta version of dekko

Message Filter editor for Dekko

  • Mentors: Dan Chapman

  • Description: Add filtering capability for messages

  • Desirable skills: C++, qml

  • Goal/Deliverable: Working code added to the beta version of dekko

SIEVE editor

  • Mentors: Dan Chapman

  • Description: Allow for mail filtering sieve editor within dekko

  • Desirable skills: C++, qml

  • Goal/Deliverable: Working code added to the beta version of dekko

Enhance the Ubuntu Phone Emulator

  • Mentors: Andreas Pokorny

  • Description: The ubuntu phone emulator allows for testing and development of ubuntu apps on the desktop, without an actual device. However, it's limitations and poor integration with the SDK make it difficult to use. It needs performance enhancements, bug fixes, and features to make it more useful as a full hardware replacement for development. Simulation of an external monitor and emulation of the HWC API. Easy ways to simulate plugging in and removing input devices. Support for alternative form factors. Simulation of an accelerometer...

  • Desirable skills: C/C++

  • Goal/Deliverable: An emulator that is well integrated into the Ubuntu SDK, runs easily, and is able to run and test apps locally from source.

Port Ubuntu SDK to windows and mac os

  • Mentors: Alan Pope

  • Description: The Ubuntu SDK is the official IDE for working on ubuntu applications. It allows you to create new applications using Qt/QML. It runs on ubuntu, but we'd like to make it truly cross-platform to allow for others to develop apps on windows and mac os.

  • Desirable skills: C\C++

  • Goal/Deliverable: A working copy of the ubuntu sdk running on a non-linux platform

Browser app: readability/reader mode

  • Mentors: Olivier Tilloy

  • Description: Add a native readability/reader mode to the touch browser app, to ease reading articles on mobile devices and desktops alike.

  • Desirable skills: C++, QML, javascript

  • Goal/Deliverable: Figure out the tasks needed to add reader mode to the browser, and implement them (might require some plumbing work in oxide, the web engine that powers the browser app). Get that work tested, reviewed and merged to oxide/webbrowser-app.

Browser app: adblock functionality

  • Mentors: Olivier Tilloy

  • Description: Add native ad-blocking support to the touch browser app, for a stress-free browsing experience. Because the browser app doesn’t have an extension mechanism, this will have to be implemented as a native feature.

  • Desirable skills: C++, QML, javascript

  • Goal/Deliverable: Figure out the tasks needed to add ad-blocking support to the browser, and implement them (might require some plumbing work in oxide, the web engine that powers the browser app). Get that work tested, reviewed and merged to oxide/webbrowser-app.

Scopes Generator

  • Mentors: Michael Hall

  • Description: Create the ability to generate new scopes using user submitted data. The generator should allow for many different data types and layouts.

  • Desirable skills: C++, QML, javascript

  • Goal/Deliverable: A working template for generating scopes that 'just work' when built and installed on a ubuntu phone

GoogleSoC2016/Ideas (last edited 2016-02-29 21:24:18 by nskaggs)