Developer setup

Develop Holder on Windows

Set up a Windows computer to contribute Holder code.

Before you begin

This guide is for people who want to change Holder's code. If you just want to use Holder, go to the Holder for Windows page to get the installer.

You need a PC running 64-bit Windows 11 or Windows 10*, and an internet connection. Allow tens of gigabytes of free disk space for the development tools, downloaded libraries, and builds. The Visual Studio installer will show how much space your selected tools need; see Microsoft's system requirements for details.

Install Git for Windows once: Git downloads project code and keeps track of the changes you make to it.

  1. Install Git for Windows. Accept the normal installer defaults.
  2. Make a working directory.
    • We will keep the folders of Holder source code in one place.
    • On my computer it is C:\Users\pigeonwrath\projects\holderteam but you can choose your own location, just be consistent.
    • In PowerShell, $HOME means your Windows user folder. The commands below use your own folder automatically. If you choose a different workspace, use that location in each guide.
    • Open PowerShell, Windows’ built-in command window, and run these commands once:
    mkdir $HOME\projects\holderteam
    cd $HOME\projects\holderteam

* Windows 11 is 64-bit only. Windows 10 also has 32-bit editions. The Core and Daemon guides use 64-bit build tools, but advanced users may be able to adapt them to build Core and Daemon for x86, then use holderctl or the local HTTP API. There is no current 32-bit holder-desktop build path.

Three parts, three small guides

Each Holder project has its own Git repository: its source files and the recorded history of changes. Source code is the text programmers change to alter how an app works.

Choose the part you want to change. You do not need to complete all three guides.

The core and backend use Visual Studio. The desktop app uses MSYS2 UCRT64 instead.

Desktop

Desktop is the app with windows and buttons. Build it if you want to change the editors, navigation, or other parts of the user interface.

Build Desktop →

If you get stuck

Open Holder's issue page; it covers Core, Daemon and Desktop. Issues are GitHub's place for reporting problems and discussing fixes. Search for the error first; if no existing issue covers it, sign in to GitHub and open a new one.

Include the guide you followed, the step that failed, and what you expected to happen. Copy the command and its output, or the error from Visual Studio's Output window. Include your Windows version and the versions of the tools you used. This helps someone else understand where you got stuck.

Share your first change

Once you can build and test the project, you are ready to try a small change. A documentation correction or a fix for an issue you can reproduce is a useful place to start.

  1. Create a fork of the repository on GitHub: a copy under your own account where you can upload your changes. You can keep the local checkout you used for this guide and connect it to your fork.
  2. Create a branch for your change. A branch keeps that work separate from the project's main line of development.
  3. Make your change, rebuild, and run the tests described in the relevant guide. A commit records the changes you want to share, along with a short explanation.
  4. Push your commits to your fork, then open a pull request to the original HolderTeam repository. A pull request asks the maintainers to review and include your changes. Explain what changed and how you tested it, and complete the repository's contribution checklist.

GitHub's step-by-step contribution guide explains forks, branches, commits, and pull requests. Each Holder repository also has a CLA.md contributor agreement linked from its pull request checklist; read it before submitting your contribution.