2.9 KiB
Contributing to obs-websocket
Translating obs-websocket to your language
Localization happens on Crowdin
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
-
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.
Code Best-Practices
- Favor return-early code and avoid wrapping huge portions of code in conditionals. As an example, this:
if (success) {
return req->SendOKResponse();
} else {
return req->SendErrorResponse("something went wrong");
}
is better like this:
if (!success) {
return req->SendErrorResponse("something went wrong");
}
return req->SendOKResponse();
- Some example common response/request property names are:
sceneName
- The name of a scenesourceName
- The name of a sourcefromScene
- 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
, ...)
- Start your work in a newly named branch based on the upstream main one (e.g.:
-
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").