This is the official guide on how to contribute to Orbit. We want to make it as easy as possible to contribute, so if you have any questions or comments, reach out via GitHub issues or join our Discord server!
There are a few ways to contribute:
- 💫 Complete items on the Project Board.
- 💡 Make suggestions in GitHub Issues.
- 🪴 Start new Issues - see Issues.
Orbit is a fork of Void Editor, which is itself a fork of VS Code.
Most of Orbit's code lives in the folder src/vs/workbench/contrib/orbit/.
If you're making changes to Orbit's code as a contributor, you'll want to run a local version of Orbit to make sure your changes worked. Developer mode lets you do this. Here's how to use it.
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 MitigationsC++ 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. - SUSE (openSUSE, etc):
sudo zypper install patterns-devel-C-C++-devel_C_C++ krb5-devel libsecret-devel libxkbfile-devel libX11-devel. - Others: see How to Contribute.
Here's how to start changing Orbit's code. These steps cover everything from cloning Orbit, to opening a Developer Mode window where you can play around with your updates.
git clone https://github.com/ashish200729/orbiteditorto clone the repo.npm installto install all dependencies.- Open VSCode or another editor, and initialize Developer Mode (this can take ~5 min to finish, it's done when 2 of the 3 spinners turn to check marks):
- Windows: Press Ctrl+Shift+B.
- Mac: Press Cmd+Shift+B.
- Linux: Press Ctrl+Shift+B.
- Open the Orbit Developer Mode window:
- Windows:
./scripts/code.bat. - Mac:
./scripts/code.sh. - Linux:
./scripts/code.sh.
- Windows:
- You're good to start editing Orbit's code!
- You won't see your changes unless you press Ctrl+R (Cmd+R) inside the new window to reload. Alternatively, press Ctrl+Shift+P and
Reload Window. - You might want to add the flags
--user-data-dir ./.tmp/user-data --extensions-dir ./.tmp/extensionsto the command in step 4, which lets you reset any IDE changes you made by deleting the.tmpfolder. - You can kill any of the build scripts by pressing
Ctrl+Din its terminal. If you pressCtrl+Cthe script will close but will keep running in the background.
- You won't see your changes unless you press Ctrl+R (Cmd+R) inside the new window to reload. Alternatively, press Ctrl+Shift+P and
If you get any errors, scroll down for common fixes.
- Make sure you followed the prerequisite steps above.
- Make sure you have Node version
20.18.2(the version in.nvmrc).- You can do this without changing your global Node version using nvm: run
nvm install, followed bynvm useto install the version in.nvmrclocally.
- You can do this without changing your global Node version using nvm: run
- Make sure the path to your Orbit folder does not have any spaces in it.
- If you get
"TypeError: Failed to fetch dynamically imported module", make sure all imports end with.js. - If you get an error with React, try running
NODE_OPTIONS="--max-old-space-size=8192" npm run buildreact. - If you see missing styles, wait a few seconds and then reload.
- If you get errors like
npm error libtool: error: unrecognised option: '-static', when running ./scripts/code.sh, make sure you have GNU libtool instead of BSD libtool (BSD is the default in macos) - If you get errors like
The SUID sandbox helper binary was found, but is not configured correctlywhen running ./scripts/code.sh, runsudo chown root:root .build/electron/chrome-sandbox && sudo chmod 4755 .build/electron/chrome-sandboxand then run./scripts/code.shagain. - If you have any other questions, feel free to submit an issue. You can also refer to VSCode's complete How to Contribute page.
To build Orbit from the terminal instead of from inside VSCode, follow the steps above, but instead of pressing Cmd+Shift+B, 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
Orbit's maintainers distribute Orbit on our GitHub releases page. The build pipeline is based on the VS Code and Void Editor build systems.
If you want to completely control Orbit's build pipeline for your own internal usage, which comes with a lot of time cost (and is typically not recommended), you may need to set up your own build infrastructure.
We don't usually recommend building a local executable of Orbit - typically you should follow the steps above to distribute a complete executable, or you should just use Developer Mode to run Orbit locally which is much faster. If you're certain this is what you want, see details below.
Building Locally (not recommended)
If you're certain you want to build a local executable of Orbit, follow these steps. It can take ~25 minutes.Make sure you've already entered Developer Mode with Orbit first, then run one of the following commands. This will create a folder named VSCode-darwin-arm64 or similar outside of the orbiteditor/ repo (see below).
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-arm64
npm run gulp vscode-linux-x64- most commonnpm run gulp vscode-linux-arm64
The local executable will be located in a folder outside of orbiteditor/:
workspace/
├── orbiteditor/ # Your Orbit fork
└── VSCode-darwin-arm64/ # Generated output- 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 🙂