mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
82 lines
2.9 KiB
Markdown
82 lines
2.9 KiB
Markdown
# Contributing to obs-websocket
|
|
|
|
## Translating obs-websocket to your language
|
|
|
|
Localization happens on [Crowdin](https://crowdin.com/project/obs-websocket)
|
|
|
|
## Branches
|
|
|
|
**Development happens on `master`**
|
|
|
|
## Writing code for obs-websocket
|
|
|
|
### Code Formatting Guidelines
|
|
|
|
* Function and variable names: camelCase for variables, MixedCaps for method names
|
|
|
|
* Request and Event names should use MixedCaps names. Keep naming conformity of request naming using similar terms like `Get`, `Set`, `Get[x]List`, `Start[x]`, `Toggle[x]`.
|
|
|
|
* Request and Event json properties should use camelCase. For more detailed info on property naming, see [here](https://gist.github.com/tt2468/59390b99e7841b28f56dffb3dd622ec9)
|
|
|
|
* Code is indented with Tabs. Assume they are 8 columns wide
|
|
|
|
* 80 columns max code width. (Comments/docs can be larger)
|
|
|
|
* New and updated requests/events must always come with accompanying documentation comments (see existing protocol elements for examples).
|
|
These are required to automatically generate the [protocol specification document](docs/generated/protocol.md).
|
|
|
|
### Code Best-Practices
|
|
|
|
* Favor return-early code and avoid wrapping huge portions of code in conditionals. As an example, this:
|
|
```cpp
|
|
if (success) {
|
|
return req->SendOKResponse();
|
|
} else {
|
|
return req->SendErrorResponse("something went wrong");
|
|
}
|
|
```
|
|
is better like this:
|
|
```cpp
|
|
if (!success) {
|
|
return req->SendErrorResponse("something went wrong");
|
|
}
|
|
return req->SendOKResponse();
|
|
```
|
|
|
|
* Some example common response/request property names are:
|
|
* `sceneName` - The name of a scene
|
|
* `sourceName` - The name of a source
|
|
* `fromScene` - From a scene - scene name
|
|
|
|
### Commit Guidelines
|
|
|
|
* Commits follow the 50/72 standard:
|
|
* 50 characters max for the commit title (excluding scope name)
|
|
* One empty line after the title
|
|
* Description wrapped to 72 columns max width per line.
|
|
|
|
* Commit titles:
|
|
* Use present tense
|
|
* Prefix the title with a "scope" name
|
|
* e.g: "CI: fix wrong behaviour when packaging for OS X"
|
|
* Typical scopes: CI, General, Requests, Events, Server
|
|
|
|
**Example commit:**
|
|
|
|
```
|
|
Requests: Add GetTransitionPosition
|
|
|
|
Adds a new request called `GetTransitionPosition` which gets the current
|
|
transition's state from 0.0f to 1.0f. Works with both auto and manual
|
|
transitions.
|
|
```
|
|
|
|
### Pull Requests
|
|
|
|
* Pull Requests must never be based off your fork's main branch (in this case, `master`).
|
|
* Start your work in a newly named branch based on the upstream main one (e.g.: `feature/cool-new-feature`, `bugfix/fix-palakis-mistakes`, ...)
|
|
|
|
* Only open a pull request if you are ready to show off your work.
|
|
|
|
* If your work is not done yet, but for any reason you need to PR it (like collecting discussions, testing with CI, getting testers),
|
|
create it as a Draft Pull Request (open the little arrow menu next to the "Create pull request" button, then select "Create draft pull request"). |