GSoC 2017 Ideas

Peter Jonas edited this page Dec 5, 2016 · 8 revisions

Introduction

This page lists AppImage and AppImageKit project ideas for Google Summer of Code 2017. GSoC is a program run every year by Google where students are paid to work on open source projects during their summer break. If you are a student and interested in taking part then please read the Advice for Students section below. Everybody (not just students) is free to edit this page and add project ideas.

The AppImage format is a format for packaging applications in a way that allows them to run on a variety of different Linux target systems (distributions) without installation. For more information, check http://appimage.org/ and https://en.wikipedia.org/wiki/AppImage. AppImageKit is a concrete implementation of the AppImage format and provides tools such as appimagetool and appimaged for conveniently handling AppImages. Using AppImageKit you can package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, Ubuntu, Fedora, Debian and derivatives. For more information, check https://github.com/probonopd/AppImageKit (pending a move to https://github.com/AppImage soon).

AppImage project ideas

AppImage catalog

Create a crawler/search engine that extracts metadata like application name, author, license, etc. from an AppImage hosted somewhere on the net without having to download it (think "Google for AppImages"). Implement a suite of test cases to exercise the crawled AppImages. The data generated will be distributed to various frontends such as software centers (like GNOME Software and KDE Discover) and websites (such as store.kde.org or linux-apps.com). Read https://plus.google.com/105493415534008524873/posts/Z43MNMyPQW8 for some context. The whole thing should be as distributed as possible.

  • Required knowledge: C, bash, python, databases
  • Difficulty level: intermediate
  • Potential mentors: tbd

Make AppImages first-class citizens in desktop environments

Integrate AppImage into GNOME Software and KDE Discover. Improve AppImage support in GNOME File Roller and KDE Ark. Plus everything else that will make AppImages first-class citizens in the main desktop environments. This will require you to work not only with the AppImage project but also with the corresponding desktop environment projects (GNOME, KDE, and so on).

  • Required knowledge: C, Vala, GTK+, Gnome; C++, Qt, KDE Frameworks
  • Difficulty level: intermediate
  • Potential mentors: tbd

Make AppImageUpdate shine

AppImageUpdate lets you update AppImages in a decentral way using information embedded in the AppImage using delta updates, which makes downloads small, fast, and efficient. Possibly replace the AppImageUpdate bash script by C code, e.g., in zsync_curl. Write a native Qt GUI in addition to the existing Vala/GTK 3 one, integrate things nicely, and make it more polished. Make AppImageUpdate more robust.

  • Required knowledge: HTTP, C, C++, Qt, prior curl experience is beneficial but not required
  • Difficulty level: intermediate
  • Potential mentors: tbd

Convenient AppImage sandboxing

The optional appimaged daemon can run AppImages in sandboxes using Firejail. Also, AppImages can be signed with GPG keys. The objective of this project is integrating the building blocks to increase security of running AppImages while not making usage much more complicated. This could involve running applications in different sandboxing environments depending on GPG trust levels, allowing users to give permissions for filesystem, network etc. access (like on Android), and possibly using GNOME Portals.

  • Required knowledge: Linux security concepts, C. Knowledge of Android/iOS security concepts is beneficial but not required
  • Difficulty level: intermediate
  • Potential mentors: tbd

Integrate AppImage with toolchains, build environments, IDEs

Make it really easy to produce the software that goes into AppImages.

  • Required knowledge: Linux toolchains, crosscompilers, build environments
  • Difficulty level: intermediate
  • Potential mentors: tbd

Your own idea

The above projects are just suggestions --- it is also very good to suggest a project idea of your own if you have something in mind that you want to do. Ask people on #AppImage on irc.freenode.net or http://discourse.appimage.org/t/google-summer-of-code-2017/106/1 for suggestions.

Anyone can edit this wiki. Use this template to add your own:

### Title of the idea

Write a description of the idea in 3-5 sentences, your "elevator pitch".

- Required knowledge: C
- Difficulty level: intermediate
- Potential mentors: 

Advice for Students

If you are a student and interested in working on AppImage as part of GSoC then please read the information below, as well as the GSoC program information provided by Google, including the student manual and timeline.

Guidelines & requirements

Potential candidates should to take a look at GitHub Issues. Making a small enhancement/bugfix/documentation fix/etc (does not need to be related to your proposal) to AppImageKit before applying for the GSoC is a requirement; it can help you get some idea how things would work during the GSoC.

Basic requirements

Experience and familiarity with most/all of these:

  • AppImage
  • Git and GitHub
  • C or C++
  • Python or Bash

If you have other programming experience then it's not too late to start learning these now. The best way is to create a GitHub account and submit some pull requests to AppImage and other open source projects using these languages/tools.

Helpful extras

General understanding of any of these:

  • Docker
  • TravisCI
  • Qt
  • Different Linux distributions
  • Desktop Environments and their toolkits
  • Linux packaging systems

(Section on student expectations to be written)

Proposals

Advice on writing a proposal (written with the Mailman project in mind, but generally applicable)

The application template for 2017 doesn't yet exist, but it's expected to be very similar to that of 2014: Application template for 2014

Start on your proposal early, post a draft to http://discourse.appimage.org/ and iterate based on the feedback you receive. This will not only improve the quality of your proposal, but also help you find a suitable mentor.

References