-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Description
Context
The migration from PyOxidizer to the UV-based launcher (#3081, #4074) has created significant UX regressions despite solving critical technical problems. Users report that the terminal-based installation process appears "virus-like" and creates confusion, particularly for non-technical users. The offline installer request (#4241) has 29 upvotes, and the GUI launcher request (#4152) has 18 upvotes.
BeeWare Briefcase discussion #2316 contains a proof of concept demonstrating that Briefcase can package Anki. In a meeting with Russell Keith-Magee (Briefcase creator), @dae, and the AnkiHub team, Russell estimated implementation could be completed in as little as one day.
Goal
Determine whether Briefcase can produce production-ready native installers (MSI/DMG/DEB) for all supported Anki platforms while preserving or improving upon current functionality.
Definition of Done
We have validated that Briefcase either can or cannot meet Anki's packaging requirements on all supported platforms by answering these questions:
- Binary dependency handling
- Confirm Briefcase correctly installs and bundles rsbridge (PyO3/Rust extension)
- Verify PyQt6 and all binary dependencies work across Windows/macOS/Linux
- Test platform-specific wheels
- Native installer generation
- Windows: Generate MSI installer (or confirm directory output works with existing NSIS wrapper)
- macOS: Generate signed and notarized DMG with proper .app bundle
- Linux: Generate DEB package (DEB preferred over AppImage/Flatpak for compatibility)
- Startup performance
- Measure cold start time vs. current launcher
- Document any performance regression and evaluate mitigations (zip stdlib, PYC precompilation)
- Process identity
- Determine if Briefcase-packaged app appears as "Anki" (not "Python") in Task Manager/Dock
- If not, document an approach to preserve launcher entrypoint while using Briefcase for packaging
- Offline capability
- Confirm installer is fully offline-capable (no runtime dependency downloads) - is this what we want/need?
- Validate total installer size is acceptable
- Auto-update compatibility
- Document whether the existing Tools > Upgrade/Downgrade mechanism can be preserved - If not, outline required changes to update architecture
- Build pipeline integration
- Confirm Briefcase can be integrated into existing BuildKite CI/CD
- Document platform-specific build requirements (Briefcase cannot cross-compile)
Non-Goals
Migrating Anki's GUI to Toga
Mobile platform support via Briefcase
Success Criteria
Briefcase is feasible if all seven validation points pass or have documented, acceptable workarounds.
Briefcase is not feasible if any blocker exists that cannot be resolved within a reasonable implementation timeline (e.g., unacceptable startup time regression with no mitigation path).
Related Issues
#3081 - PyOxidizer abandonment
#4074 - UV launcher implementation
#4151 - Python integration in launcher
#4152 - GUI launcher (18 upvotes)
#4241 - Offline installer request (29 upvotes)
#4144 - Process identity (Task Manager/Dock naming)
#4556 - Revisiting the launcher