# Development Software

Before you get started a few tools are required for developing LinuxGSM. The tools used are down to the developer's preferences. However, there are some recommendations if you are new.

## GitHub Account

LinuxGSM uses [GitHub](https://github.com) to host the code, manage issues, and run CI/CD tools. Because of this a GitHub account is required.

{% embed url="<https://github.com>" %}

{% embed url="<https://www.youtube.com/watch?v=pBy1zgt0XPc>" %}

## Text editor

LinuxGSM is written in BASH and can be developed simply by using a text editor. The recommended text editor is [VSCode](https://code.visualstudio.com/) as it is free and integrates with GitHub and WSL. However, if you are more comfortable with another editor that is fine. For specific requirements for text editors see [Text Editor Settings](https://linuxgsm/s/linuxgsm-dev/text-editor-settings).

* [VSCode](https://code.visualstudio.com/) (recommended)
* [Sublime Text](https://www.sublimetext.com/)
* [Notepad++](https://notepad-plus-plus.org/)
* [Neovim](https://neovim.io/)

{% embed url="<https://www.youtube.com/watch?v=KMxo3T_MTvY>" %}

## Git

The LinuxGSM project uses Git as version control software. It is important you have a basic understanding of Git, however, don't be worried if you don't understand it all.

{% embed url="<https://www.youtube.com/watch?v=hwP7WQkmECE>" %}

To work on the project, edit code, and create branches a Git client is required. GitKracken as it is feature-rich and easy to understand the branch relationships. GitHub Desktop is a great client for beginners as well as VSCode's built-in Git Client.

* [GitKracken](https://www.gitkraken.com/)
* [VSCode](https://code.visualstudio.com/docs/sourcecontrol/overview)
* [Github Desktop](https://desktop.github.com/)
* [Git](https://git-scm.com/downloads)

## SSH Client

To connect to Linux servers an SSH client is needed. There are various clients available to choose from. For Windows, MobaXterm is a great option for the classic PuTTY. For Linux and Mac Remmina works well for saving SSH sessions.

* [Termius](https://termius.com/) (Cross-platform)
* [MobaXterm](https://mobaxterm.mobatek.net/) (Windows)
* [Putty](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) (Windows)
* [Remmina](https://remmina.org/) (Linux & Mac)

## Discord

The LinuxGSM project uses [Discord](https://discordapp.com) as the main method of communication.

## SteamDB

[SteamDB](https://steamdb.info/) is a great resource for finding data related to Steam. This can be used to look up appid's for game servers as well as checking if a game server supports Linux. For example, The Rust dedicated server is found here <https://steamdb.info/app/258550/info/>

##
