Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 67 additions & 90 deletions docs/getting-started/tools/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,118 +4,95 @@ sidebar_position: 1

# Tools
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

โ“ What's the context of Bitwarden vs. non here? Is this whole page worthy of hiding behind the check?


## Operating System
## Operating system

All Bitwarden developers are issued with a MacBook. The tooling recommendations and instructions in
this documentation assume that youโ€™re using macOS. This may require some adaptation if youโ€™re using
a different operating system.
All Bitwarden developers are issued with a MacBook or Windows laptop. The tooling recommendations
and instructions in this documentation assume that youโ€™re using one of these operating systems,
noting where a tool may apply to only one of them.

This may require some adaptation if youโ€™re using a different operating system.

## Recommended tools

The following tools are strongly recommended as part of the โ€œstandardโ€ developer setup. We recommend
The following tools are strongly recommended as part of the "standard" developer setup. We recommend
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐ŸŽ‰ So glad we catch these awful magic quotes that rich editors sneak in.

that any new Bitwarden developer install all of them as part of setting up their local development
environment.

### IDEs

- [Visual Studio Code](https://code.visualstudio.com/) - used for all Typescript projects.
Suboptimal for C#. Be sure to install [extensions](#visual-studio-code-extensions)
- [JetBrains Rider](https://www.jetbrains.com/rider/download/) - fully featured IDE for C#, .NET &
more. Bitwarden developers should contact IT for a license
- [Xcode](https://developer.apple.com/xcode/) - required for iOS Mobile development and Safari web
extension
| Tool | How we use it |
| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| [JetBrains Rider](https://www.jetbrains.com/rider/download/) | Fully featured IDE for C#, .NET & more. Bitwarden developers should contact IT for a license. |
| [Visual Studio](https://visualstudio.microsoft.com/) | Used for C# development on Windows. |
| [Visual Studio Code](https://code.visualstudio.com/) | Used for all Typescript projects. Suboptimal for C#. Be sure to install [extensions](#visual-studio-code-extensions). |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [Visual Studio Code](https://code.visualstudio.com/) | Used for all Typescript projects. Suboptimal for C#. Be sure to install [extensions](#visual-studio-code-extensions). |
| [Visual Studio Code](https://code.visualstudio.com/) | Used for all TypeScript projects. Be sure to install [extensions](#visual-studio-code-extensions). |

Not sure how much commentary to leave since this is a move, but I would avoid the opinionated language.

"Typescript" should be fixed everywhere.

| [Xcode](https://developer.apple.com/xcode/) | Required for iOS Mobile development and Safari web extension. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [Xcode](https://developer.apple.com/xcode/) | Required for iOS Mobile development and Safari web extension. |
| [Xcode](https://developer.apple.com/xcode/) | Required for iOS development and the Safari web extension. |

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿ’ญ Maybe just move to the mobile-specific tooling section?


### Local environment

- [Homebrew](https://brew.sh/) - package manager for macOS
- [Iterm2](https://iterm2.com/) (available via Homebrew) - a better terminal emulator
- Various browsers - Itโ€™s nice to have a slew of browsers ready to test the extension in a host of
scenarios. You can also use multiple browsers to have different browser extension version
installed to compare them.
- [Docker](https://docs.docker.com/get-docker/) - required for server development only
- [.NET SDK](https://dotnet.microsoft.com/download) - required for server and other backend
development environments
- [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos)
(available via Homebrew: `brew install powershell`)
- [NodeJS](https://nodejs.org/) v20 (preferably using a [node version manager][nvm])
- [NPM](https://www.npmjs.com/) v10 (included with Node)
- [Rust](https://www.rust-lang.org/tools/install) latest stable version - (preferably installed via
[rustup](https://rustup.rs/))
- [Git](https://git-scm.com)
- [Commit signing](../../contributing/commit-signing.mdx) is strongly recommended

### Mobile

- [Android Studio](https://developer.android.com/studio/) - Nice for setting up and running Android
Simulators
- [adb](https://developer.android.com/studio/command-line/adb) - for interacting with Android sims
- [Apple Icons Generator Gist](https://gist.github.com/brutella/0bcd671a9e4f63edc12e) - Script to
generate Apple icons from an image
| Tool | How we use it |
| --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [.NET SDK](https://dotnet.microsoft.com/download) | Required for server and other back-end development environments. |
| [Docker](https://docs.docker.com/get-docker/) | Required for server development only. Bitwarden developers should contact IT for a license for Docker Desktop. |
| [Git](https://git-scm.com) | [Commit signing](../../contributing/commit-signing.mdx) is strongly recommended. |
| [Homebrew](https://brew.sh/) | Package manager for macOS. |
| [Iterm2](https://iterm2.com/) | A better terminal emulator (available via Homebrew). |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

โ„น๏ธ Is this tool widespread?

| [NodeJS](https://nodejs.org/) | Check the `engines` in [package.json](https://github.com/bitwarden/clients/blob/main/package.json) for the current version. We recommend using a [node version manager][nvm]). |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [NodeJS](https://nodejs.org/) | Check the `engines` in [package.json](https://github.com/bitwarden/clients/blob/main/package.json) for the current version. We recommend using a [node version manager][nvm]). |
| [NodeJS](https://nodejs.org/) | Check the `engines` in [package.json](https://github.com/bitwarden/clients/blob/main/package.json) for the current version. We recommend using a [node version manager][nvm]. |

Hanging )

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for catching that. I updated it with bd76a24.

| [npm](https://www.npmjs.com/) | Check the `engines` in [package.json](https://github.com/bitwarden/clients/blob/main/package.json) for the current version. It is included with NodeJS. |
| [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos) | Available via Homebrew on macOS: `brew install powershell`. |
| [Rust](https://www.rust-lang.org/tools/install) | We stay on the latest stable version - preferably installed via [rustup](https://rustup.rs/). |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [Rust](https://www.rust-lang.org/tools/install) | We stay on the latest stable version - preferably installed via [rustup](https://rustup.rs/). |
| [Rust](https://www.rust-lang.org/tools/install) | We stay on the latest stable version, preferably installed via [rustup](https://rustup.rs/). |

| Various browsers | It's nice to have a slew of browsers ready to test the extension in a host of scenarios. You can also use multiple browsers to have different browser extension version installed to compare them. |

### Mobile-specific tooling

| Tool | How we use it |
| ----------------------------------------------------------------------------------- | --------------------------------------------------- |
| [adb](https://developer.android.com/studio/command-line/adb) | For interacting with Android sims. |
| [Android Studio](https://developer.android.com/studio/) | Nice for setting up and running Android Simulators. |
| [Apple Icons Generator Gist](https://gist.github.com/brutella/0bcd671a9e4f63edc12e) | Script to generate Apple icons from an image. |

### Databases

- [MSSQL VSCode Extension](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql) for
working with your local SQL Server
- [PgAdmin4](https://www.pgadmin.org/) - Useful for fiddling with PostgreSQL db
- [MySQLWorkbench](https://www.mysql.com/products/workbench/) - Useful for fiddling with MySQL db
- [SQLiteStudio](https://www.sqlitestudio.pl/) - Useful for fiddling with SQLite db
| Tool | How we use it |
| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| [Microsoft Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/) | For connecting to or working with local Azure table storage and queues. |
| [MSSQL VSCode Extension](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql) | For working with your local SQL Server. |
| [MySQLWorkbench](https://www.mysql.com/products/workbench/) | Useful for fiddling with MySQL db. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [MySQLWorkbench](https://www.mysql.com/products/workbench/) | Useful for fiddling with MySQL db. |
| [MySQL Workbench](https://www.mysql.com/products/workbench/) | Useful for fiddling with MySQL db. |

| [PgAdmin4](https://www.pgadmin.org/) | Useful for fiddling with PostgreSQL db. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [PgAdmin4](https://www.pgadmin.org/) | Useful for fiddling with PostgreSQL db. |
| [PgAdmin4](https://www.pgadmin.org/) | Management of PostgreSQL databases. |

Apply the same language for each below. Prior phrasing with "fiddling" is awkward to me.

| [SQLiteStudio](https://www.sqlitestudio.pl/) | Useful for fiddling with SQLite db. |

### Visual Studio Code Extensions
### Visual Studio Code extensions

There are some vs code extensions that are life-savers in our line of work. A list of highly
There are some VS Code extensions that are very helpful in our codebase. A list of highly
recommended ones include the following:

- General
- [Back & Forth](https://marketplace.visualstudio.com/items?itemName=nick-rudenko.back-n-forth) -
Adds forward and back buttons to top right of your editor. Simple, but incredibly useful.
- [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) -
can be annoying, but has saved me lots of `tmes form writting oragnizations.`
- [LiveShare](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) -
For pair programming
- C#
- [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) - Omnisharp
integrations
- [.NET Core Test Explorer](https://marketplace.visualstudio.com/items?itemName=formulahendry.dotnet-test-explorer) -
Test explorer for .NET tests
- [.NET Core User Secrets](https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.user-secrets) -
Edit secrets files by right clicking on a .proj and selecting edit user -secrets
- Git
- [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) - fantastic
git visualization tool
- [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory) -
More Git history
- [Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) - Even more Git
options
- Typescript / Angular
- [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=Angular.ng-template) -
Understands Angular templates
- [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) - Jest test runner
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) -
integrate with prettier code formatting
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) -
Integrations for ESLint
- Rust
- [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer) -
Great rust language server
- [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) -
for handling TOML (cargo config)
- [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) - for rust
debugging
- Databases
- [MySQL Syntax](https://marketplace.visualstudio.com/items?itemName=jakebathman.mysql-syntax) -
syntax highlighting for MySQL
- [PostgreSQL](https://marketplace.visualstudio.com/items?itemName=ckolkman.vscode-postgres) -
syntax highlighting for PostgreSQL
| Type | Extension | Notes |
| -------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| C# | [.NET Core Test Explorer](https://marketplace.visualstudio.com/items?itemName=formulahendry.dotnet-test-explorer) | Test explorer for .NET tests. |
| C# | [.NET Core User Secrets](https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.user-secrets) | Edit secrets files by right clicking on a .proj and selecting "Manage User Secrets". |
| C# | [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | Omnisharp integrations. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| C# | [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | Omnisharp integrations. |
| C# | [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | OmniSharp integrations. |

| Databases | [MySQL Syntax](https://marketplace.visualstudio.com/items?itemName=jakebathman.mysql-syntax) | Syntax highlighting for MySQL. |
| Databases | [PostgreSQL](https://marketplace.visualstudio.com/items?itemName=ckolkman.vscode-postgres) | Syntax highlighting for PostgreSQL. |
| General | [Back & Forth](https://marketplace.visualstudio.com/items?itemName=nick-rudenko.back-n-forth) | Adds forward and back buttons to top right of your editor. Simple, but incredibly useful. |
| General | [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) | Can be annoying, but has saved lots of `tmes form writting oragnizations.` |
| General | [LiveShare](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) | For pair programming. |
| Git | [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) | Fantastic git visualization tool. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Git | [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) | Fantastic git visualization tool. |
| Git | [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) | Fantastic Git visualization tool. |

| Git | [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory) | More Git history. |
| Git | [Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) | Even more Git options. |
| Rust | [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) | For Rust debugging. |
| Rust | [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) | For handling TOML (`cargo` config). |
| Rust | [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer) | Great Rust language server. |
| Typescript / Angular | [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=Angular.ng-template) | Understands Angular templates. |
| Typescript / Angular | [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) | Integrations for ESLint. |
| Typescript / Angular | [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) | Jest test runner. |
| Typescript / Angular | [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) | Integrate with prettier code formatting. |

## Optional tools

The following tools may be useful depending on your preferences or what youโ€™re developing.
The following tools may be useful depending on your preferences or what you're developing.

- [Microsoft Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/) -
for connecting to or working with local Azure table storage and queues
- [Parallels](https://www.parallels.com/) - For running Windows VMs
- [Sourcetree](https://www.sourcetreeapp.com/) - Git GUI. Note: For the git hooks to behave
correctly on macOS when using nvm, please follow
[these instructions](https://typicode.github.io/husky/#/?id=command-not-found).
| Tool | How we use it |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Parallels](https://www.parallels.com/) | For running Windows or Linux VMs on macOS machines. |
| [Sourcetree](https://www.sourcetreeapp.com/) | Git GUI. For the Git hooks to behave correctly on macOS when using `nvm`, please follow [these instructions](https://typicode.github.io/husky/#/?id=command-not-found). |

[nvm]: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm