6.2 KiB
Contributing to Void
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!
There are a few ways to contribute:
- 👨💻 Build new features - see Issues.
- 💡 Make suggestions in our Discord.
- ⭐️ If you want to build your AI tool into Void, feel free to get in touch! It's very easy to extend Void, and the UX you create will be much more natural than a VSCode Extension.
Most of Void's code lives in src/vs/workbench/contrib/void/browser/ and src/vs/platform/void/.
Building the full IDE
a. Build Prerequisites - Mac
If you're using a Mac, you need Python and XCode. You probably have these by default.
b. Build Prerequisites - Windows
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 MitigationsC++ MFC for latest build tools with Spectre Mitigations
Finally, click Install.
c. Build Prerequisites - Linux
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.
Building Void
To build Void, open void/ inside VSCode. Then open your terminal and run:
npm installto install all dependencies.npm run watchreactto build Void's browser dependencies like React.- 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). - This command should open up the built IDE. You can always press Ctrl+R (Cmd+R) inside the new window to see changes without re-building, or press or Ctrl+Shift+P in the new window and run "Reload Window".
- If you would like to reset Void back to its default settings, you can run
./scripts/code.sh --user-data-dir ./.tmp/user-data --extensions-dir ./.tmp/extensions(mac). This will save all data and extensions to the.tmpfolder. You can delete this folder to reset your settings.
- Run
Building Void from Terminal
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
Common Fixes
- Make sure you follow the prerequisite steps.
- Make sure you have the same NodeJS version as
.nvmrc. - Make sure your
npm run watchreactis running if you change any React files, or else you'll need to re-build. - If you see missing styles, go to
src2/styles.cssand re-save the file. - If you get
"TypeError: Failed to fetch dynamically imported module: vscode-file://vscode-app/.../workbench.desktop.main.js", source: file:///.../bootstrap-window.js, make sure all imports end with.js. - If you have any questions, feel free to submit an issue. For building questions, you can also refer to VSCode's full How to Contribute page.
Bundling
We don't usually recommend bundling. Instead, you should probably just build. If you're sure you want to bundle 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) in the repo's parent's directory. Be patient - compiling can take ~25 minutes.
Mac
npm run gulp vscode-darwin-arm64- most common (Apple Silicon)npm run gulp vscode-darwin-x64(Intel)
Windows
npm run gulp vscode-win32-x64- most commonnpm run gulp vscode-win32-ia32
Linux
npm run gulp vscode-linux-x64- most commonnpm run gulp vscode-linux-armnpm run gulp vscode-linux-ia32
Guidelines
We're always glad to talk about new ideas, help you get set up, and make sure your changes align with our vision for the project! Feel free to shoot Mat or Andrew a message, or start chatting with us in the #contributing channel of our Discord.
Submitting a Pull Request
- Please submit a pull request once you've made a change. No need to submit an Issue unless you're creating a new feature.
- Please don't use AI to write your PR 🙂.
References
For some useful links we've compiled on VSCode, see VOID_USEFUL_LINKS.md.