I’m getting a 3D printer delivered soon. It’s important to be able to run the latest version of the manufacturer’s slicer, so I snapped it, in that I locally have a
snapcraft.yaml that works in strict mode as a starting point at least. I can build and use my own snap without publishing it, of course. Ideally I’d like to see upstream make the snap official, and just be able to sit back, consume and switch between channels as branches get updated and release tags made. The slicer is https://github.com/prusa3d/slic3r (which happens to be a Prusa-specific fork of Slic3r, which I could probably snap separately too but we can ignore that for now).
I’m aware that people file pull requests to incorporate a
snapcraft.yaml into the upstream source tree, and that builds can be automated, but I haven’t been able to find any kind of guide about this. What I expected to find was something like:
- Documentation on best practice for what exactly to send upstream. What is best practice for them to land into their repo for things to work well? Just a
snapcraft.yaml, and where are the different source tree integration options documented? How about branches and tags for CI-based snap publication?
- Common documentation to point upstream to, so they can understand the submission and what the benefits are for them to take it.
- Best practice guides on how they can connect their branches and tags to store channels.
- Any other suggestions on how to best approach this effort. For example: should I attempt to register the name, or leave it to them? How would registration handover work? Should I attempt to publish snaps in their name first, or is that inappropriate etiquette? If I do publish, how would a publication handover work?
Most of the documentation on docs.snapcraft.io seems to be geared towards people who are building and publishing snaps for themselves (whether for their own projects or others’ projects). That was great in helping me to have got to this stage, but now I’d like something aimed at how I should communicate with upstreams to get them to adopt my snap.
I found the snap ci-integration page (URL count limited by moderation policy) but that seems to be a little more at the deep end - in my case for example upstream don’t appear to have any (public) CI at all currently, and it starts from already having Travis, or for Launchpad only covers one channel.
What I’m looking for is an expanded form of this paraphrased template:
Hey, here’s a pull request to snapify your repo. You want to snapify because [why snaps are great]. You can automate publication of your releases as well as your master branch into the Snap store by doing [summary steps to set up automation]. I’ve done [X] for you already; you could take over by doing [Y], which would benefit you because [Z]. See [url] for more documentation on this.
I’d like the URL to be a dedicated landing page specifically for upstreams being sent in this way. I haven’t found any page that currently exists that I think is suitable.
Is there anything that exists already that I’ve missed that handles this use case? If not, how are snap developers handling this kind of thing at the moment?