Simplifying the initial setup experience #409
markshuttle
started this conversation in
Ideas
Replies: 1 comment 3 replies
-
|
Hmmm GH won't let me attach a tgz despite recommending that format, perhaps 28MB is too much for an attachment here? I can find another way to publish the bits if needed, perhaps just directly in the snap store, but I'd only like to do that if there is support for getting CI/CD builds and releases published automatically for all the architectures. |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello. Before I open a PR I thought it would be best to have a discussion here about making the initial install and setup experience simpler. In general I think making software easier to install and run increases the pool of people who can contribute or advocate for that software. I'm no longer an active coder unless you count spreadsheets as software :) but I do often contribute to usability discussions in order to make open source reach a wider audience.
The branch which implements these ideas is at https://github.com/markshuttle/tuwunel if you want to try it out.
Last week, for a holiday project, I wanted to play with an OpenClaw-style AI assistant, and I wanted to setup a secure communication channel for it. We use Matrix for the Ubuntu community, but I have heard that Synapse is a little tricky, so I decided to try out Tuwunel. I chose PicoClaw (a very small claw-style AI assistant in Golang for devices like the Sipeed RISC-V SBCs). I also wanted to play with ACME certs and reverse proxies, and also try out Antigravity and Gemini.
All of these pieces work, and the steps to get it up and running are fine for expert open source people. But we could make it much easier!
For Tuwunel, I wanted to try making a snap package so it can be a one-command install for any distro that has snapd (Ubuntu and a few others by default, Debian and a few others as an option). This was quite easy (you can see it in snap./snapcraft.yaml in the branch I linked to above). However, I thought it would also be nice to offer an onboarding utility which initialises the service with a working, minimal config.
I don't know Rust but I thought the requirements could be stated clearly enough that it would be a good project to test out Gemini and Antigravity.
The result of that is an 'init' utility, also in that branch. I asked Gemini to keep dependencies to a minimum, so it's pretty basic. Nevertheless it provides a nice initial setup experience, asking the user for key information, writing out a basic minimal but working config, after which the daemon just runs.
With these two pieces of work, the install experience becomes:
sudo snap install tuwunel
sudo tuwunel.init
After that the daemon should be running, listening to the usual port.
Here is an example run:
After this I verified the server was running on localhost:8008.
If you want to play with this you can build the snap yourself easily enough from the branch I linked above. I can also attach an x86 build of the snap to this. I would say "don't run binaries from random strangers on the internet" and suggest you install it in a VM.
If you build it yourself, or if you use the build I can provide, then you need to use --dangerous on the snap install (which is basically "--unsigned"). If this change is accepted upstream, then I would get some of my colleagues to help the community setup automatic build and publication of this snap for x86, arm, risc-v, power and mainframe (z) architectures. Ideally this would means someone could play with a nightly build as easily as:
Again, that sort of thing can really help accelerate participation and contribution because it becomes much easier for people to try the latest builds and provide feedback.
I'm going to apologise in advance for the fact that all the Rust in that init command is Gemini, though I would say I eyeballed it and tested it I am not a Rust developer at all so consider this more a proof of concept of the UX than a ready-to-merge code contribution.
To go further, I would like to work with people around Caddy and Lego to make the whole end to end experience of getting Matrix up and running, with Let's Encrypt certs, easy for less technical people.
I'm on holiday this week too with plenty of time to polish it up further, and keen to hear back about this before I'm back to my usual calendar. FWIW I am also github.com/markatcanonical Mon-Fri and could post on this thread with that login if it would help anyone get confident to try the binary :)
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions