Welcome! 👋 This is the official guide on how to contribute to Void. We want to make it as easy as possible to contribute, so if you have any questions or comments, reach out via email or discord!
If you'd like to get started developing Void, feel free to follow the steps below on building Void yourself and doing a PR.
Void's code mostly lives in src/vs/workbench/contrib/void/
and src/vs/platform/void/
.
There are a few ways to contribute:
If you're using a Mac, you need Python and XCode. You probably have these by default.
If you're using a Windows computer, first get Visual Studio 2022 (recommended) or VS Build Tools (not recommended). If you already have both, you might need to run the next few steps on both of them.
Go to the "Workloads" tab and select:
Desktop development with C++
Node.js build tools
Go to the "Individual Components" tab and select:
MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
C++ ATL for latest build tools with Spectre Mitigations
C++ MFC for latest build tools with Spectre Mitigations
Finally, click Install.
First, run npm install -g node-gyp
. Then:
- Debian (Ubuntu, etc):
sudo apt-get install build-essential g++ libx11-dev libxkbfile-dev libsecret-1-dev libkrb5-dev python-is-python3
. - Red Hat (Fedora, etc):
sudo dnf install @development-tools gcc gcc-c++ make libsecret-devel krb5-devel libX11-devel libxkbfile-devel
. - Others: see How to Contribute.
To build Void, open void/
inside VSCode. Then open your terminal and run:
npm install
to install all dependencies.npm run watchreact
to build Void's browser dependencies like React. (If this doesn't work, trynpm run buildreact
).- Build Void.
- Press Cmd+Shift+B (Mac).
- Press Ctrl+Shift+B (Windows/Linux).
- This step can take ~5 min. The build is done when you see two check marks.
- Run Void.
- Run
./scripts/code.sh
(Mac/Linux). - Run
./scripts/code.bat
(Windows).
- Run
- Nice-to-knows.
- You can always press Ctrl+R (Cmd+R) inside the new window to reload and see your new changes. It's faster than Ctrl+Shift+P and
Reload Window
. - You might want to add the flags
--user-data-dir ./.tmp/user-data --extensions-dir ./.tmp/extensions
to the above run command, which lets you delete the.tmp
folder to reset any IDE changes you made when testing.
- You can always press Ctrl+R (Cmd+R) inside the new window to reload and see your new changes. It's faster than Ctrl+Shift+P and
Alternatively, if you want to build Void from the terminal, instead of pressing Cmd+Shift+B you can run npm run watch
. The build is done when you see something like this:
[watch-extensions] [00:37:39] Finished compilation extensions with 0 errors after 19303 ms
[watch-client ] [00:38:06] Finished compilation with 0 errors after 46248 ms
[watch-client ] [00:38:07] Starting compilation...
[watch-client ] [00:38:07] Finished compilation with 0 errors after 5 ms
- Make sure you followed the prerequisite steps.
- Make sure you have the same NodeJS version as
.nvmrc
. - If you get
"TypeError: Failed to fetch dynamically imported module"
, make sure all imports end with.js
. - If you see missing styles, wait a few seconds and then reload.
- If you have any questions, feel free to submit an issue. You can also refer to VSCode's complete How to Contribute page.
We don't usually recommend packaging. Instead, you should probably just build. If you're sure you want to package Void into an executable app, make sure you've built first, then run one of the following commands. This will create a folder named VSCode-darwin-arm64
or similar outside of the void/ repo (see below). Be patient - packaging can take ~25 minutes.
npm run gulp vscode-darwin-arm64
- most common (Apple Silicon)npm run gulp vscode-darwin-x64
(Intel)
npm run gulp vscode-win32-x64
- most commonnpm run gulp vscode-win32-ia32
npm run gulp vscode-linux-x64
- most commonnpm run gulp vscode-linux-arm
npm run gulp vscode-linux-ia32
This will generate a folder outside of void/
:
workspace/
├── void/ # Your Void fork
└── VSCode-darwin-arm64/ # Generated output
Void's maintainers distribute Void on our website and in releases. If you'd like to see the scripts to convert Mac .app -> .dmg
, Windows folder -> .exe
, and Linux folder -> appimage
for distribution, feel free to reach out.
- Please submit a pull request once you've made a change.
- No need to submit an Issue unless you're creating a new feature that might involve multiple PRs.
- Please don't use AI to write your PR 🙂
We highly recommend reading this article on VSCode's sourcecode organization.
We are currently putting together our own articles on VSCode and Void's sourcecode organization. The best way to get this information right now is by attending a weekly meeting.
For some miscellaneous useful links on VSCode we've put together, see VOID_USEFUL_LINKS.md
.