conda / conda/constructor

Use Briefcase as an installer backend

Open
#967 2 comments 1 reaction 0 assignees View on GitHub
type::feature
Dominant language
Python
Stars
497
Forks
181
Avg merge
1d 16h
Merged PRs (30d)
17

Description

### Checklist

- [x] I added a descriptive title
- [x] I searched open requests and couldn't find a duplicate

### What is the idea?

This issue is a summary of some recent discussions between the BeeWare and Conda teams. We're posting it in public to get feedback from the larger community.

[Briefcase](https://briefcase.readthedocs.io/en/stable/) (part of the [BeeWare](https://beeware.org/) project) is an open-source packaging tool which has some overlap with Constructor's functionality. It's a mature and well-tested tool that supports building Mac, Linux and Windows installers in multiple formats, including signing and notarization.

Briefcase currently combines two functions: creating a directory tree containing a Python app, and packaging it into an installer. If it had an option to use the packaging step independently, then it could create installers with arbitrary content. In this mode, Briefcase’s own Python app functionality would not be involved.

Constructor could then use Briefcase to build installers, with the following division of responsibility:

* Briefcase provides non-conda-specific installer mechanisms.
* Constructor uses those mechanisms to implement conda-specific functionality.

From the Constructor user’s point of view, very little would change: they would continue to use Constructor’s existing CLI and configuration file format. The fact that Constructor used Briefcase to build installers would only be an implementation detail.

Constructor could start using Briefcase incrementally, one installer format at a time, without disturbing the others.

### Why is this needed?

As described in #646, for several years the Constructor developers have wanted to stop using NSIS because of its developer-unfriendliness. However, the effort required to produce an entirely new Windows backend has so far been too much to face.

Briefcase has an actively-maintained Windows installer implementation based on the modern WiX toolkit. Reusing this via Briefcase's high-level interface should be significantly easier than creating a WiX backend from scratch.

Longer term, Briefcase could also be used to build installers in other formats, e.g. .pkg installers for macOS, which would relieve the Constructor project of even more maintenance burden.

Contributor guide

Open the contributing guide

Research direction

Start by reading the discussion in issue #646 and the Briefcase documentation, then inspect Constructor’s existing installer backends and configuration flow. The scope is not yet settled; done would require an agreed incremental Briefcase-backed installer format while preserving Constructor’s existing CLI and configuration format.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.