Skip to content

GSoC 2017 Ideas

probonopd edited this page Dec 4, 2016 · 9 revisions

Introduction

This is the GSoC 2017 ideas page for AppImage.

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).

This page lists a number of ideas for Google Summer of Code projects for AppImage and AppImageKit, plus gives some pointers for potential GSoC students on how to get started with contributing and putting together their application.

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/ for suggestions in this case.

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: 

Guidelines & requirements

(Section on student expectations to be written)

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

We expect from students that they're at least comfortable with C (intermediate level). Some projects may also require bash skills. Knowing how to use Git is also important; this can be learned before the official start of GSoC if needed though.

Advice

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.

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

This page was drafted using https://github.com/scipy/scipy/wiki/GSoC-2016-project-ideas as a starting point.