Jump to content

snap package for 0ad


oSoMoN
 Share

Recommended Posts

Hi everyone,

Ever heard of snaps as a new packaging format? If you haven't, information available at http://snapcraft.io/.

I packaged 0ad as a snap, it is now available in the Ubuntu app store for amd64 and i386.

Official announcement on the snapcraft mailing list: https://lists.ubuntu.com/archives/snapcraft/2017-January/002486.html.

 

Note that the package is registered under my user in the ubuntu app store, but I’m happy to hand it over to the development team if this is something you're interested in maintaining.

 

For anyone interested in the packaging details, the code lives here: https://code.launchpad.net/~osomon/+junk/0ad-snap.

 

Feedback welcome, and keep up the awesome work on 0ad, my favourite game by far.

  • Like 1
Link to comment
Share on other sites

Moved this out of the announcements forum to a better place (as that one should be about WFG announcments, I'm sligthly surprised that you could start a topic there).

We do provide a ppa, that provides updated versions of the game for Ubuntu versions and doesn't have the shortcomings of emulating static libraries.

Link to comment
Share on other sites

1 hour ago, Lion.Kanzen said:

Isn't the first time this happen.

 

@feneur you can contact with @implodedok ?

I don't need to contact him, I could change it myself. I don't really see the need to though. Most people won't post here unless they have a reason to, and if they do it's easy to move/delete it. If this actually would have added something new and not just another way to do the same thing that can already be done I think it could have been relevant to have in that forum, but I guess that can be discussed. I think it's better to have the possibility in case there is a situation where there is a point to it, even if we might have trouble thinking of relevant topics at the moment, than not to have it.

  • Like 2
Link to comment
Share on other sites

2 hours ago, leper said:

Moved this out of the announcements forum to a better place (as that one should be about WFG announcments, I'm sligthly surprised that you could start a topic there).

Sorry I posted that in the wrong place, and thanks for fixing it.

 

2 hours ago, leper said:

We do provide a ppa, that provides updated versions of the game for Ubuntu versions and doesn't have the shortcomings of emulating static libraries.

Right, snaps embed all their dependencies, not relying on system-wide shared libs. Much like a windows or java application would do. That’s a new paradigm for people used to the traditional linux distribution model. There are pros and cons, and I’m not saying this should replace the PPA (which is what I used to use). Rather, this is (hopefully) a way of reaching more gamers :)

Link to comment
Share on other sites

I made a similar question once, but it was about AppImage. The real benefit I could see is that if I have an Internet Cafe filled with Linux machines, then I could just download 0 A.D. once and just slap it anywhere rather than download it for each machine.

But I'm just settling on 0 A.D.'s DEB files for a workaround: download once, install in every Xenial Machine.

Link to comment
Share on other sites

3 hours ago, oSoMoN said:

Much like a windows or java application would do. That’s a new paradigm for people used to the traditional linux distribution model.

And both of these support sharing libraries too (though in the former case you might end up with a quite large WinSxS folder). Not new, rather decades old. I did not use the static linking moniker without a reason. You can just build something statically (though that ignores what to do with the data) against some quite old (and thus supported everywhere) version of glibc and have it run on most Linux distributions. However both that and these bundle solutions have the same issue as you have possibly multiple versions of the same libraries stored (not a huge issue nowadays with FS compression and deduplication, and huge amounts of storage space available) and have to rely on whoever created that bundle to provide security updates (and I doubt a lot of those have someone responsible for tracking security issues in libraries; while most distros do have that). I do see the appeal of having something that should work everywhere, but then again nobody forces anyone to use a distro that lives years in the past with regard to shipped software.

1 hour ago, sphyrth said:

The real benefit I could see is that if I have an Internet Cafe filled with Linux machines, then I could just download 0 A.D. once and just slap it anywhere rather than download it for each machine.

In that case you should create one image (centrally) and mirror that to all the boxes, or even boot of a NAS caching used files locally. That way you have less work administering the whole thing and can spend more time beating your regulars at the game.

  • Like 3
Link to comment
Share on other sites

2 hours ago, sphyrth said:

The real benefit I could see is that if I have an Internet Cafe filled with Linux machines,

Not on this side of the Atlantic have never seen even one Linux machine at any internet cafe of which there are six with in walking distance most still have XP or at most Win 7.

Enjoy the Choice :)

  • Like 1
Link to comment
Share on other sites

10 hours ago, leper said:

Not new, rather decades old.

New as in "unlike what traditional linux distros do", not new as in "just been invented", of course :)

 

10 hours ago, leper said:

have to rely on whoever created that bundle to provide security updates

Indeed with snaps the responsibility of providing security updates falls on the packager.

Thankfully 0ad has an active community of packagers for major linux distros, but many software vendors don’t have that, and they want to be in control of the versions of the deps their software will run against.

 

One considerable advantage of snaps is that they run fully confined by default, so even if using old libs with known vulnerabilities, the damage they can do the host system is very limited.

Link to comment
Share on other sites

Hi all, I work with oSoMoN, just jumping in to add some thoughts to the conversation.

 

Quote

You can just build something statically (though that ignores what to do with the data) against some quite old (and thus supported everywhere) version of glibc and have it run on most Linux distributions.

This is quite true, but it means you have to sacrifice having the features of a modern library version for the convenient or portability, or sacrifice portability to gain the features. Bundling those libraries means you get to keep both, while only sacrificing a little disk space. The build tools (snapcraft) also make it considerably easier than trying to build against an old library.

Quote

However both that and these bundle solutions have the same issue as you have possibly multiple versions of the same libraries stored (not a huge issue nowadays with FS compression and deduplication, and huge amounts of storage space available)

Indeed, with snaps being bind-mounted squashfs filesystem images, they can sometimes take up less disk space than a traditional package that is extracted on install.

Quote

and have to rely on whoever created that bundle to provide security updates (and I doubt a lot of those have someone responsible for tracking security issues in libraries; while most distros do have that)

They don't have to, as I said above the build tools make it easy to do, and in most cases re-running the build script is all that's needed to get the latest (fixed) version of those dependencies either from your distro or directly from upstream. For an actively developed application, this isn't going to be a problem for the developers or users. And, as oSoMoN mentioned already, snapped apps are run in a sandbox, so even for apps that don't get updated regularly, they won't be able to damage the user's system.

Link to comment
Share on other sites

  • 4 weeks later...
  • 5 months later...
  • 11 months later...

I pushed a change to the snap package to get the desktop file from the source tarball, instead of a hardcoded, old version. This ensures the MimeType=application/x-pyromod+zip association is there and generates the corresponding mimeinfo.cache entry when snapd installs the snap.

This, however, is not enough. The host system also needs to be made aware of the new mime type (need to run update-mime-database with the pyrogenesis.xml file). As far as I can tell snapd doesn't provide such a feature yet, but I have asked about it on the snapcraft forum.

 

Please note that the name of the snap has changed from play0ad to 0ad (the previous name was a consequence of a limitation in snapd that didn't allow names starting with a digit, but this was fixed since then). Also note that the process-control interface doesn't need to be manually connected any longer.

In summary, to install and run, just do:

snap install 0ad
0ad

This will get you the latest official release. If you feel adventurous and want to try the latest changes in the development repository, use the edge channel:

snap install 0ad --edge

 

  • Thanks 1
Link to comment
Share on other sites

  • 1 year later...

A follow-up post to state that I regularly update the 0ad snap with the latest releases.

The current version in the stable channel is 0.0.23b-alpha, while the edge channel has a fairly recent svn development snapshot.

Maintaining the snap is a minimal amount of work (builds happen automatically on Launchpad) so I'm happy to continue doing so, however I'd like to highlight that one big advantage of transferring the ownership of the snap to Wildfire Games is that it would give the project control over the branded store page at https://snapcraft.io/0ad, and access to a dashboard with detailed metrics (versions, distributions, territories, weekly active installations).

As a quick glimpse of what this looks like, here is a screenshot showing active installations per version over the past two years:

0ad-metrics.thumb.png.cdba835e0f97134bf9cf62ec0d419c87.png

 

As you can see, there are currently more than 4K users of the snap, and whenever an update is available the way snapd automatically installs it ensures that players will always be on the latest version. And the snap is being used on 19 different linux distributions (snapd currently supports more than 100 of them). 

  • Thanks 1
Link to comment
Share on other sites

Hello @oSoMoN

First let me thank you again for your time :) Even though it's launchpad doing it taking the time to maintain it is important. I don't think that we can nor should take over though because of the limited amount of available developers. Maybe you could give me access to the dashboard though so I can have some stats, or maybe we could use an API to extract those stats from time to time.

Link to comment
Share on other sites

Hi @Stan`

I understand the developers' time is limited and precious, and is better spent improving the game.

I suggest making you (or someone trustworthy on the development team) a collaborator of the snap. This is a feature of the snap store that will give you permission to administer the 0AD snap, while I retain ownership (and I'll continue to update it). It will give you access to the dashboard with detailed metrics. There can be more than one collaborator. All that's needed is an e-mail address for each collaborator, feel free to contact me in private.

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...