diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e6555a40e..db7ccf4f7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,23 +3,20 @@ name: Bug report about: Found a bug? Raise a report --- -Follow **[this guide](https://linuxgsm.com/support/#guide)** to make sure you post the correct info. -For general support visit the **[LinuxGSM-Support](https://github.com/GameServerManagers/LinuxGSM-Support)**. +Issues raised here are **ONLY** for: +* LinuxGSM bugs. +* Feature suggestions. +* Code contributions. -Issues here are **ONLY** for: -* LinuxGSM bugs -* feature suggestions -* code contributions +Issues raised here are **NOT** for: +* General support. +* Specific game server issues (e.g CS:GO, TF2). +* Dedicated server issues (e.g Ubuntu, CentOS). +* Anything not directly related to LinuxGSM development. -Issues here are **NOT** for: -* General support -* Specific game server issues (e.g CS:GO, TF2) -* Dedicated server issues (e.g Ubuntu, CentOS) -* Anything not directly related to LinuxGSM development +For general support visit the **[LinuxGSM-Support](https://linuxgsm.com/support)**. -Any general support issues on GitHub will be migrated to [LinuxGSM-Support](https://github.com/GameServerManagers/LinuxGSM-Support). - -*Please use the template below* +***Please use the template below, deleting the above text*** ## User Story @@ -27,9 +24,10 @@ As a [user description], I want [desired action] so that [desired outcome]. ## Basic info -* Distro: [Ubuntu 18.04] -* Game: [Garry's Mod] -* Command: [Monitor] +* **Distro:** [Ubuntu 18.04] +* **Game:** [Garry's Mod] +* **Command:** [Monitor] +* **LinuxGSM version:** [v12.34.56] ## Further Information diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 0f2ccde58..68bdf0ad6 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,23 +3,21 @@ name: Feature request about: Suggest an idea for this project --- -Follow **[this guide](https://linuxgsm.com/support/#guide)** to make sure you post the correct info. -For general support visit the **[LinuxGSM-Support](https://github.com/GameServerManagers/LinuxGSM-Support)**. -Issues here are **ONLY** for: -* LinuxGSM bugs -* feature suggestions -* code contributions +Issues raised here are **ONLY** for: +* LinuxGSM bugs. +* Feature suggestions. +* Code contributions. -Issues here are **NOT** for: -* General support -* Specific game server issues (e.g CS:GO, TF2) -* Dedicated server issues (e.g Ubuntu, CentOS) -* Anything not directly related to LinuxGSM development +Issues raised here are **NOT** for: +* General support. +* Specific game server issues (e.g CS:GO, TF2). +* Dedicated server issues (e.g Ubuntu, CentOS). +* Anything not directly related to LinuxGSM development. -Any general support issues on GitHub will be migrated to [LinuxGSM-Support](https://github.com/GameServerManagers/LinuxGSM-Support). +For general support visit the **[LinuxGSM Support](https://linuxgsm.com/support)** page. -*Please use the template below* +***Please use the template below, deleting the above text*** ## User Story @@ -27,9 +25,10 @@ As a [user description], I want [desired action] so that [desired outcome]. ## Basic info -* Distro: [Ubuntu 18.04] -* Game: [Garry's Mod] -* Command: [Monitor] +* **Distro:** [Ubuntu 18.04] +* **Game:** [Garry's Mod] +* **Command:** [Monitor] +* **LinuxGSM version:** [v12.34.56] ## Further Information diff --git a/.github/ISSUE_TEMPLATE/new-server-request.md b/.github/ISSUE_TEMPLATE/new-server-request.md index adb1f5f4f..8101f74f0 100644 --- a/.github/ISSUE_TEMPLATE/new-server-request.md +++ b/.github/ISSUE_TEMPLATE/new-server-request.md @@ -23,7 +23,7 @@ If yes Use SteamDB to get the appid. (https://steamdb.info). ## Is the server supported on Linux? -We only support Linux servers and do not support Wine. +We only support Linux servers and do **not** support Wine. * [ ] Yes * [ ] No diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 8a6a36f65..807f3d8bb 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -18,6 +18,7 @@ PR will not be merged until all steps are complete. * [ ] This pull request links to an issue. * [ ] This pull request uses the `develop` branch as its base. +* [ ] This pull request Subject follows the Conventinal Commits standard. * [ ] This code follows the style guidelines of this project. * [ ] I have performed a self-review of my own code. * [ ] I have checked that this code is commented where required. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 33650771e..2cadd7e54 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,36 +1,213 @@ -# How to contribute to LinuxGSM +# Contributing to LinuxGSM -We are really glad you're reading this, because if you are then you have shown an interest in helping make LinuxGSM great. +๐Ÿ‘๐ŸŽ‰ Thank you for taking the time to contribute! ๐ŸŽ‰๐Ÿ‘ -If you haven't already, come find us on [Discord](https://linuxgsm.com/discord). From there you will have contact with other contributers of the project. We want you working on things you're excited about. +The following is a set of guidelines for contributing to LinuxGSM, which are hosted in the [GameServerManagers Organization](https://github.com/gameservermanagers) on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. -Before working on a project we recommend that you create a issue in regards to the issue/feature. This will prevent duplicates while you work on the feature. If an issue already exists, make note that you are working on it so nobody else wastes their time working on the same project at the same time! +## Table of Contents +* [Contributing to LinuxGSM](#contributing-to-linuxgsm) + * [Table of Contents](#table-of-contents) + * [Code of Conduct](#code-of-conduct) + * [Bug/Enhancement Contributions](#---bug-enhancement-contributions---) + * [Reporting Bugs](#--reporting-bugs) + * [Before Submitting A Bug Report](#before-submitting-a-bug-report) + * [How Do I Submit A (Good) Bug Report?](#how-do-i-submit-a--good--bug-report-) + * [Suggesting Features](#--suggesting-features) + * [Before Submitting An Feature Suggestion](#before-submitting-an-feature-suggestion) + * [How Do I Submit A (Good) Feature Suggestion?](#how-do-i-submit-a--good--feature-suggestion-) + * [Game Server Requests](#---game-server-requests) + * [Before Submitting a Game Server Request](#before-submitting-a-game-server-request) + * [How Do I Submit A (Good) Game Server Suggestion?](#how-do-i-submit-a--good--feature-suggestion--1) + * [Game Server Specific Issues](#---game-server-specific-issues) + * [Code Contributions](#---code-contributions) + * [Pull Requests](#pull-requests) + * [Pull Request naming convention](#pull-request-naming-convention) + * [Testing](#testing) + * [Pull Request Status Checks](#pull-request-status-checks) + * [Test Environment](#test-environment) + * [Styleguides](#-wine-glass--styleguides) + * [Git Commit Messages](#git-commit-messages) + * [BASH Styleguide](#bash-styleguide) + * [Document Contributions](#-blue-book--document-contributions) + * [Documentation Styleguide](#documentation-styleguide) + * [Issue and Pull Request Labels](#issue-and-pull-request-labels) +## Code of Conduct -Here are some important resources: +This project and everyone participating in it are governed by the [LinuxGSM Code of Conduct](https://github.com/GameServerManagers/linuxgsm/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behaviour to [daniel.gibbs@linuxgsm.com](mailto:daniel.gibbs@linuxgsm.com). - * [Issues Page](https://github.com/GameServerManagers/LinuxGSM/issues) provides a list of areas that could use some work, - * [Developer Wiki](https://github.com/GameServerManagers/LinuxGSM/wiki) gives a detailed guide on developing LGSM, +## ๐ŸŽ‰ Bug/Enhancement Contributions ๐Ÿ› -## Testing +### ๐Ÿ›Reporting Bugs -Please make sure all the code you write is working properly **before** you create a pull request. Information on debugging can be found in the following document: +This section guides you through submitting a bug report for LinuxGSM. Following these guidelines help maintainers and the community understand your report ๐Ÿ“, reproduce the behaviour๐Ÿ’ป, and find any related reports ๐Ÿ”Ž. -[Developer Commands](https://github.com/GameServerManagers/LinuxGSM/wiki/Developer-Commands) +Before creating bug reports, please check [this list](https://github.com/GameServerManagers/linuxgsm/blob/master/CONTRIBUTING.md#before-submitting-a-bug-report) as you might find out that you donโ€™t need to create one. When you are creating a bug report, please [include as many details as possible](https://github.com/atom/atom/blob/master/CONTRIBUTING.md#how-do-i-submit-a-good-bug-report). Fill out [the required template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md), the information it asks for helps us resolve issues faster. -## Submitting changes +#### Before Submitting A Bug Report -Please send a [GitHub Pull Request to LinuxGSM](https://github.com/GameServerManagers/LinuxGSM/pull/new/develop) with a clear list of what you've done (read more about [pull requests](https://help.github.com/articles/about-pull-requests)). Please follow our coding conventions (below) and make sure all of your commits are atomic (one feature per commit). +* **Check the** [**documentation**](https://docs.linuxgsm.com/%5D(https://docs.linuxgsm.com/))**.** You might be able to find the cause of the problem and fix things yourself. +* **Check that the problem is not related to** [**support page**](https://linuxgsm/com/support) for links to other support options. +* **Check the** [**support page**](https://linuxgsm/com/support) for links to other support options. +* **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one. -Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should look like this: +#### How Do I Submit A (Good) Bug Report? - $ git commit -m "A brief summary of the commit - > - > A paragraph describing what changed and its impact." -This will help us in understanding your code and determining where problems may arise. +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue and provide the following information by filling in [the issues form](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose). -## Coding conventions +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Complete the user story** to give a summary of the issue. +* **Provide basic info** to help us understand the context of the issue. +* **Provide further info** to give specifics and more detail. +* **Give steps to reproduce** the issue, allowing developers to follow steps that lead to the issue. +* **Explain what you expect** to happen, so we know what you think should occur. -Start reading our code and you'll get the hang of it. Explore how functions are organized and you'll see how we strive for readable code. +### ๐ŸŽ‰Suggesting Features -Please give the following document a read and adjust your code according to its specifications. -[Syntax & Coding Conventions](https://github.com/GameServerManagers/LinuxGSM/wiki/Syntax-and-Conventions) +This section guides you through submitting a feature suggestion for LinuxGSM, including completely new features and minor improvements to existing functionality. Following these guidelines help maintainers and the community understand your suggestion ๐Ÿ“ and find related suggestions ๐Ÿ”Ž. + +#### Before Submitting An Feature Suggestion + +* **Check the** [**documentation**](https://docs.linuxgsm.com/%5D(https://docs.linuxgsm.com/)) to confirm that the enhancement doesnโ€™t already exist. +* **Check your** [**LinuxGSM version**](https://docs.linuxgsm.com/commands/update-lgsm)**.** A newer version of LinuxGSM may already have your enhancement. +* **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the enhancement has already been suggested. If it has **and the enhancement is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one. + +#### How Do I Submit A (Good) Feature Suggestion? + +Features are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue and provide the following information by filling in [the issues form](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose). + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Complete the user story** to give a summary of the issue. +* **Provide basic info** to help us understand the context of the enhancement. +* **Provide further info** to give specifics and more detail. +* **Provide any further reading** materials that might assist in developing the enhancement. + +### ๐ŸŽฎ Game Server Requests + +This section guides you through submitting a game server request for LinuxGSM, Following these guidelines help maintainers and the community understand your game server request ๐Ÿ“ + +#### Before Submitting a Game Server Request + +* **Check for existing** [**game server requests**](https://github.com/GameServerManagers/LinuxGSM/labels/type%3A%20game%20server%20request) to see if the new game server has already been suggested. If it has **and if the new game server is still open**, give it a thumbs up instead of opening a new one. + +### ๐ŸŽฎ Game Server Specific Issues + +LinuxGSM is a management script that acts as a wrapper around game servers. These game servers are developed by different game developers such as Valve, Epic and Facepunch to name a few. + +LinuxGSM has no control over the development and limited knowledge issues directly relating to the game servers themselves. The same also applies for any mods, add-ons, maps etc. + +If there is an issue with a specific game server or mod the best action may be to contact the game/mod developers on there support forums. If it is unclear some community members might be able to help. + +A [list](https://docs.linuxgsm.com/support/game-server) of known game developer forums is available on the [LinuxGSM docs](https://docs.linuxgsm.com/support/game-server). + +## ๐Ÿ’ป Code Contributions + +### Pull Requests + +The process described here has several goals: + +* Maintain LinuxGSM quality. +* Fix problems that are important to users. +* Engage the community in working toward the best possible LinuxGSM. +* Enable a sustainable system for LinuxGSM maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in [the template](https://github.com/GameServerManagers/LinuxGSM/blob/master/.github/pull_request_template.md) +2. Follow the [style guides](#styleguides) +3. After you submit your pull request, verify that all [status checks](https://help.github.com/articles/about-status-checks/) are passing + +What if the status checks are failing? If a status check is failing, and you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude that the failure was a false positive, then we will open an issue to track that problem with our status check suite. + +While the prerequisites above must be satisfied before having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + +#### Pull Request naming convention + +When naming a pull request to ensure that it is following [Conventional Commits](https://www.conventionalcommits.org/) standards; as your pull request commits will be squashed, with the PR subject becoming the commit that is used for generating the [changelog](https://github.com/GameServerManagers/LinuxGSM/releases) for the next release. + +The pull request subject line should always be able to complete the following sentence: + +If applied, this commit will _your subject line here_ + +For example: + +* If applied, this commit will _refactor subsystem X for readability_ +* If applied, this commit will _update getting started documentation_ +* If applied, this commit will _remove deprecated methods_ +* If applied, this commit will _release version 1.0.0_ +* If applied, this commit will _merge pull request #123 from user/branch_ + +Notice how this doesnโ€™t work for the other non-imperative forms: + +* If applied, this commit will _fixed bug with Y_ +* If applied, this commit will _change the behaviour of X_ +* If applied, this commit will _more fixes for broken stuff_ +* If applied, this commit will _sweet new API methods_ + +Below is an example of the subject line for a pull request. + +feat(alerts): add slack support to alerts + +fix(csgoserver): remove SteamCMD auth requirement 32-bit workaround + +### Testing + +#### Pull Request Status Checks +When a Pull Request is submitted, a series of status check tests are conducted. These tests will asses the code quality, complete CI tests etc. To get your PR merged these status checks must pass. + +#### Test Environment +It is recommended that you have a testing environment available to test your code during development. To test your own cod you must change some variables within the `linuxgsm.sh` file. This will force the use of your own code branch. +```bash +## GitHub Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" +``` + +### :wine_glass: Styleguides + +#### Git Commit Messages + +LinuxGSM uses the Conventional commits standard to allow other developers to get easy to understand, descriptive commit messages as you develop. While it is recommended that you use this standard for your commits, as your commits will eventually be squashed when your PR is merged following this standard is not strictly enforced for commits, however, it is recommended for more complex commits. + +#### BASH Styleguide + +LinuxGSM uses [ShellCheck](https://www.shellcheck.net/) to follow BASH best practices. It is recommended that you make use of linter tools for your text editor such as [linter-shellcheck](https://atom.io/packages/linter-shellcheck). LinuxGSM uses [Codacy](https://app.codacy.com/manual/GameServerManagers/LinuxGSM/dashboard) to analyse any Pull Requests to give you feedback on code standards. + +LinuxGSM also has some of its style standards that should be followed. These are available in the [dev docs](https://dev-docs.linuxgsm.com/) + +## :blue_book: Document Contributions + +As well as code contributions it is possible to contribute by writing and improving documentation. Documents contributions can be submitted similarly by submitting a Pull Request. + +### Documentation Styleguide + +LinuxGSM has various documentation available to assist users and developers. LinuxGSM primarily uses [GitBook](http://gitbook.com/) which uses the [Markdown](https://www.markdownguide.org/) document standard. LinuxGSM uses [Codacy](https://app.codacy.com/manual/GameServerManagers/LinuxGSM/dashboard) to analyse any Pull Requests to give you feedback on markup standards. + +## Issue and Pull Request Labels + +This section lists the labels we use to help us track and manage issues and pull requests. + +[GitHub search](https://help.github.com/articles/searching-issues/) makes it easy to use labels for finding groups of issues or pull requests you're interested in. There are several categories of labels available: + +**command** Labels +Highlights the LinuxGSM command the Issue/PR relates too. + +**info** Labels +Labels to help pinpoint what the issue or PR relates too. + +variants: +* _distro_ +* _engine_ +* _game_ +* _info_ + +**outcome** Labels +Labels that identify why an issue was closed. + +**status** Labels +Labels to update people on the status of the issue. + +**type** Labels +Labels identifying the type of issue, such as a bug, feature, refactor etc.