obs-studio/CONTRIBUTING.rst
Ryan Foster 4960043c1e Update Linux kernel coding style URL in CONTRIBUTING
When visiting https://www.kernel.org/doc/Documentation/CodingStyle, you
see the message, "This file has moved to process/coding-style.rst". This
commit replaces the old URL with a version hosted on GitHub.
2017-04-25 23:31:37 -04:00

91 lines
2.8 KiB
ReStructuredText

Contributing
============
Quick Links for Contributing
----------------------------
- Compiling and building OBS Studio:
https://github.com/jp9000/obs-studio/wiki/Install-Instructions
- Our bug tracker (linked to forum accounts):
https://obsproject.com/mantis/
- Development IRC channel: #obs-dev on QuakeNet
- Development forum:
https://obsproject.com/forum/list/general-development.21/
- To contribute language translations, do not make pull requests.
Instead, use crowdin. Read here for more information:
https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/
Coding Guidelines
-----------------
- OBS Studio uses kernel normal form (linux variant), for more
information, please read here:
https://github.com/torvalds/linux/blob/master/Documentation/process/coding-style.rst
- Avoid trailing spaces. To view trailing spaces before making a
commit, use "git diff" on your changes. If colors are enabled for
git in the command prompt, it will show you any whitespace issues
marked with red.
- Tabs for indentation, spaces for alignment. Tabs are treated as 8
columns wide.
- 80 columns max
Commit Guidlines
----------------
- OBS Studio uses the 50/72 standard for commits. 50 characters max
for the title (excluding module prefix), an empty line, and then a
full description of the commit, wrapped to 72 columns max. See this
link for more information: http://chris.beams.io/posts/git-commit/
- Make sure commit titles are always in present tense, and are not
followed by punctuation.
- Prefix commit titles with the module name, followed by a colon and a
space (unless modifying a file in the base directory). When
modifying cmake modules, prefix with "cmake". So for example, if you
are modifying the obs-ffmpeg plugin::
obs-ffmpeg: Fix bug with audio output
Or for libobs::
libobs: Fix source not displaying
- If you still need examples, please view the commit history.
Headers
-------
There's no formal documentation as of yet, so it's recommended to read
the headers (which are heavily commented) to learn the API.
Here are the most important headers to check out::
libobs/obs.h Main header
libobs/obs-module.h Main header for plugin modules
libobs/obs-source.h Creating video/audio sources
libobs/obs-output.h Creating outputs
libobs/obs-encoder.h Implementing encoders
libobs/obs-service.h Implementing custom streaming services
libobs/graphics/graphics.h Graphics API
UI/obs-frontend-api/obs-frontend-api.h
Front-end API
If you would like to learn from example, examine the default plugins
(in the <plugins> subdirectory). All features of OBS Studio are
implemented as plugins.