-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Description
Just wanted to give you a bit of an update/some background.
The decision to go with a launcher approach was partly due to feeling overwhelmed, and wanting to reduce the overhead of making releases. I figured it'd get users something close to auto-update support at the same time, so it seemed like a win-win. But between uv edge cases and users' eyes glazing over the moment a terminal window appears, it hasn't been as smooth as I'd hoped.
A launcher GUI is the logical next step. It should solve a bunch of pain points/be more user-friendly. But it doesn't solve all problems (e.g. #4151), and some users want to be able to do a single download without subsequent extra downloads.
Months back Andrew floated the idea of using Briefcase instead, which is closer to our old PyOxidizer setup. We have extra hands at our disposal now, making maintenance less of a concern, so that may be more practical now. I think we might want to explore that path in more detail (only a very basic PoC so far), and then decide whether to persist down the launcher path, provide both in parallel, use some hybrid approach, or switch over to a more conventional packaged build.
Originally posted by @dae in #4390 (comment)
Related:
- Consider integrating Python in the launcher #4151
- feat: launcher gui #4390 (comment)
- feat(launcher): embed python #4414 (comment)
At this point I figure we have the following options:
- Persist with the launcher, optionally merging the launcher GUI @iamllama has worked on
- Revert to a more traditional bundle, using something like Briefcase or PyInstaller.
- Do both, leaving the launcher around for power users
- Do a hybrid model, where Python (and possibly Qt) is shipped with the 'base', but we use something like 'uv' to update our code and other deps.
If we switch to a traditional bundle, we'll lose the easier/faster version upgrades/downgrades. But the people appreciating that probably doesn't justify the number of users that struggle to get Anki installed. Automatic updates would still be possible, but would presumably require downloading an entire new package for each version bump.
Keeping both is appealing in that it doesn't throw away previous work. I don't know if there enough power-users to justify keeping both though, especially since the launcher is basically just a convenient wrapper around manual uv invocations.
The hybrid approach offers some benefits. My main concern is that users may struggle when some updates (those that don't touch Python/Qt) are turn-key, and others require a manual download.
Thoughts?