2020-07-11 15:54:30 +00:00
Contributing to EmulationStation Desktop Edition
================================================
### Help needed:
2020-08-17 20:12:25 +00:00
There are many cards in the Kanban backlog that would be nice to implement. And for this, code contributions are very welcome. There may be a bug or two as well that needs fixing ;)
2020-07-11 15:54:30 +00:00
Apart from code commits, help is especially needed for thorough testing of the software and for working on the rbsimple-DE theme.
2020-08-05 10:08:42 +00:00
It's impossible for me to test every game system (rbsimple-DE has support for more than a 100 different systems!) so it would be especially useful to hear about any issues with starting games using the default es_systems.cfg configuration file and also if there are any problems with scraping for certain systems.
2020-07-11 15:54:30 +00:00
2020-08-19 19:50:27 +00:00
In general, a review of the [es_systems.cfg_unix ](resources/templates/es_systems.cfg_unix ), [es_systems.cfg_macos ](resources/templates/es_systems.cfg_macos ) and [es_systems.cfg_windows ](resources/templates/es_systems.cfg_windows ) files including the supported file extensions would be great!
2020-07-11 15:54:30 +00:00
As for rbsimple-DE there are quite some missing graphic files and other customizations for a number of game systems. \
Check out [MISSING.md ](themes/rbsimple-DE/MISSING.md ) for more details of what needs to be added or updated.
### Coding style:
2020-08-17 20:12:25 +00:00
The coding style for EmulationStation-DE is mostly a combination of the Linux Kernel style (although that's C it's close enough to C++ as far as I'm concerned) and Google's C++ guidelines. Google is not a very nice company, but they write nice code.
2020-07-11 15:54:30 +00:00
Please refer to these documents here:
2020-06-14 10:55:31 +00:00
2020-06-15 15:45:53 +00:00
https://www.kernel.org/doc/html/v4.10/process/coding-style.html \
2020-07-11 15:54:30 +00:00
https://google.github.io/styleguide/cppguide.html
2020-06-14 10:55:31 +00:00
2020-07-11 15:54:30 +00:00
**Some key points:**
2020-06-14 10:55:31 +00:00
* Column width (line length) is 100 characters
* Indentation is 4 spaces, don't use tabs as they can be interpreted differently!
2020-06-15 15:45:53 +00:00
* Line break is Unix-style (line feed only, no carriage return)
2020-06-15 20:14:41 +00:00
* Do not leave trailing whitespaces at the end of the lines (a good source code editor should have a setting to automatically trim these for you)
2020-06-21 12:25:28 +00:00
* When breaking up long lines into multiple lines, consider what could be useful data to grep for so you don't break in the middle of such a string
2020-06-14 10:55:31 +00:00
* Comments always in C++ style, i.e. // instead of /* */
* Comments should be proper sentences, starting with a capital letter and ending with a dot
2020-06-15 15:45:53 +00:00
* Use K& R placements of braces, read the Linux Kernel coding style document for clarifications
* Always use spaces between keywords and opening brackets, i.e. `if ()` , `for ()` , `while ()` etc.
2020-07-14 17:16:21 +00:00
* Indentation of switch/case statements is optional, but it's usually easier to read the code with indentations in place
2020-06-23 18:07:00 +00:00
* Use `std::string` instead of `char *` or `char []` unless there is a specific reason requiring the latter
2020-06-15 15:45:53 +00:00
* If the arguments (and initializer list) for a function or class exceeds 4 items, arrange them vertically to make the code easier to read
* Always declare one variable per line, never combine multiple declarations of the same type
* Name local variables with the first word in small letters and the proceeding words starting with capital letters, e.g. myExampleVariable
* Name member variables starting with a small 'm', e.g. mMyMemberVariable
* Use the same naming convention for functions as for local variables, e.g. someFunction()
2020-06-23 18:07:00 +00:00
* Inline functions makes perfect sense to use, but don't overdo it by using them for functions that won't be called very frequently
2020-06-28 16:39:18 +00:00
* Never put more than one statement on a single line (there are some exceptions though like lambda expressions and some switch statements)
2020-06-15 15:45:53 +00:00
* Avoid overoptimizations, especially if it sacrifices readability, makes the code hard to expand on or is error prone
* For the rest, check the code and have fun! :)
2013-11-12 23:28:15 +00:00
2020-07-11 15:54:30 +00:00
### Building and configuring:
2013-11-12 23:28:15 +00:00
2020-07-11 15:54:30 +00:00
Please refer to the [INSTALL.md ](INSTALL.md ) file for details on everything related to building and configuring EmulationStation Desktop Edition.