Upstreaming

Leo Arias edited this page Sep 30, 2016 · 46 revisions
Clone this wiki locally

Upstreaming

The Snappy Playpen is a fun and research project, but we want the world to benefit from our work. What we want to achieve with each of the projects in the repo is that we get the snap to production quality and offer it to the projects in question to be included in their source tree. This will make the upstreams' lives a lot easier. Getting their app out to millions of users is just a matter of running snapcraft upload.

Tracking our work

Status App Who Requirements Link Notes
:rotating_light: 2048 dholbach blocked on desktop content snap Needs to be slimmed down
:grey_question: atom
:grey_question: click-parser
:grey_question: cloudfoundry-cli
:grey_question: consul
:grey_question: cuberite jamestait
:grey_question: dcos-cli
:grey_question: deis-workflow-cli
:grey_question: docker-compose
:grey_question: dosbox
:grey_question: ffmpeg
:rotating_light: galculator blocked on desktop content snap Needs to be slimmed down
:grey_question: gitter-im
:grey_question: heroku
:grey_question: hexchat
:grey_question: idea
:grey_question: imagemagick-edge
:grey_question: imagemagick-stable
:grey_question: jtiledownloader dplanella
:grey_question: keepassx
:grey_question: kodi-stable dgmvecuador
:grey_question: kpcli
:rotating_light: leafpad dholbach blocked on desktop content snap Needs to be slimmed down
:grey_question: minetest
:grey_question: mirageos
:rainbow: metalsmith elopio metalsmith
:email: moon-buggy sergiusens moon-buggy PR
:grey_question: mpv
:grey_question: openjdk-demo
:grey_question: openttd
:grey_question: plank mhall119
:grey_question: ps-mem popey
:rainbow: qcomicbook pstolowski qcomicbook tree
:rainbow: qdriverstation alex-spataru qdriverstation tree
:rainbow: qownnotes pbek qownnotes tree
:grey_question: residualvm
:rotating_light: ristretto dholbach tumbler service can't index photos easily yet (dbus service issue)
:grey_question: scummvm caldav
:grey_question: shotwell mhall119
:grey_question: smplayer
:grey_question: tinyproxy
:grey_question: tyrant-unleashed-optimizer
:rainbow: ubuntu-clock-app dholbach can't use new launcher yet Clock tree
:grey_question: ubuntukylin-icon-theme
:grey_question: vault
:grey_question: vlc caldav
:rainbow: wallpaperdownloader egara wallpaperdownloader
:grey_question: youtube-dl caldav

Status

Use these statuses in the table:

Code Emoji Explanation
:grey_question: :grey_question: unknown
:rotating_light: :rotating_light: needs work (new interface needed, or anything else is broken)
:email: :email: proposed (snapcraft.yaml proposed for the upstream tree)
:rainbow: :rainbow: accepted (snapcraft.yaml accepted in upstream tree)

Whichever status you pick, make sure you add a link to document what's required. If there's multiple bugs in question, make sure you list all of them. We want to use this list to make sure we get common issues fixed together with the snapcraft, snapd and snap-confine developers. Have a look at our list of known issues to see if your issue has maybe been filed already.

Forwarding your work upstream

Quality

We as a team should make sure that if we submit our work upstream that it is production quality, that stuff just works and we can be proud of what we achieved.

This includes things such as

  • all features work,
  • the upstream .desktop file is used,
  • the icon is present.

How to submit

If you search for the project name online, you are often going to find it quickly. Some projects live in code hosting sites such as github.com or Launchpad or SourceForge or on the gnu project site.

Others choose to have their own web sites or are part of bigger projects, such as GNOME, KDE, XFCE, LXDE or others.

The best way is usually to propose this as a pull request, merge proposal or whichever other way the project in question uses to accept patches. If it's not immediately clear from looking at their developer docs, ask some of the project's members first.

Getting in touch

Maintain the contact with the upstream. It's great if you can be responsive in the conversation, even if the upstream is not. Be friendly, help fix issues, get help if necessary. If an upstream doesn't react for a longer period of time, you could try asking in their IRC channel (or whichever other real-time chat they use) or on their mailing list (or forum). Again: be friendly, if the upstream is not interested, that's their choice. They all have been maintaining their software for years and might have more pressing things on their agenda.

When you write the inclusion request, you should make sure to refer to http://snapcraft.io/ and talk about the advantages snaps have. Here are a few suggestions:

  • Snaps can be installed by millions of users: Ubuntu 16.04 LTS (by default), other distros have snapd in their repositories already.
  • Necessary libraries and dependencies can be bundled to give maximum amount of control over the stack.
  • The .snap can be built by just running snapcraft, publishing it to the store is just a matter of snapcraft upload <.snap file>.
  • The store offers multiple release channels (stable, which is the default and beta and edge too).
  • Services like Launchpad offer building of snaps from your git tree (current state of Launchpad in this regard).

One thing you might also want to mention is the publishing procedure and app name registration procedure. Particularly the latter is important for upstreams to have control over publishing their app.