Stores and developer accounts

Snaps and Ubuntu core devices in general are tied to accounts existing in the Ubuntu store or in another snaps enabled store.

The Ubuntu Store

The main way of distributing snaps to is through the Ubuntu Store, where you can customize how your snap is presented, review each new upload, and control publishing over several release channels. Here is the model it follows.

Developer namespace

You’ll choose a unique developer namespace as part of the store account creation process. This namespace will represent you as a publisher in the store and you won’t be able to change it afterwards.

Naming

You can publish a snap under any name you have rights to. Names can be registered by using the snapcraft register command, clicking New Snap on the developer portal, or by visiting the Register name page. You can also grant other developers permission to publish versions of a snap you own, for example as part of an open source project.

Collaborating

You can share the management of any snap registered in the store under your own namespace. This will allow you to collaborate on specific snaps and extend administration rights (upload and publication) to other developers.

Uploading

Uploading snaps to the store can be done directly from the command line or on the store website itself. Once uploaded you choose the release channel(s) (stable, candidate, beta, edge) that the snap will be published to.

It’s worth noting that when you upload a snap, the store assigns it a revision number of 1. The store then automatically increments this revision number each time you upload a new version.

Release channels

On the store, snaps can be published into different channels: stable, candidate, beta, and edge. This enables you to engage with users who are willing to test changes, and it helps users decide how close to the leading edge of development they want to be.

There are four channels available and snaps can be published into several at the same time:

  • stable is what most users will consume and as the name suggests, should be your most polished, stable and tested versions. Snaps in this channel appear in user searches.
  • candidate is used to vet uploads that should require no further code changes before moving to stable.
  • beta is used to provide preview releases of semi-stable changes. Snaps requiring the devmode flag to work are allowed in this channel.
  • edge is for your most recent changes, probably untested and with no guarantees attached. Snaps requiring the devmode flag to work are allowed in this channel.

By default, snaps are installed from the stable channel. Versions of snaps from other channels need to be explicitly selected by users:

snap install hello --beta

And snaps can be refreshed from a different channel to the one it was originally installed from:

snap install hello
snap refresh hello --beta

This switches the snap to using the beta channel for future updates.

Publishing

After you’ve chosen a channel, your snap is sent for review. Most snaps are reviewed by way of automated checks, but if your snap uses sensitive interfaces, it may be flagged for a manual review and you will receive a notification email from the store whenever the status of the review evolves.

Once your snap has been reviewed and approved, you can publish it when you’re ready, instantly making the snap available to users.