lutris/CONTRIBUTING.md

84 lines
3.5 KiB
Markdown
Raw Normal View History

2018-10-15 00:14:29 +00:00
*************************************************************
/!\ This document is an early draft. It might be full of lies
*************************************************************
Contributing to Lutris (draft)
==============================
Finding issues to work on
-------------------------
If you are looking for issues to work on, have a look at the
[milestones](https://github.com/lutris/lutris/milestones) and see which one is
the closest to release then look at the tickets targeted at this release.
If you are less experienced with code, you can also have a look at the issues
that are [not part of a release](https://github.com/lutris/lutris/milestone/29)
which usually include problems with specific games or runners.
2018-10-15 00:36:24 +00:00
Don't forget that lutris is not only a desktop client, there are also a lot of
issues to work on [on the website](https://github.com/lutris/website/issues)
and also in the [build scripts repository](https://github.com/lutris/buildbot)
where you can submit bash scripts for various open source games and engines we
do not already have.
2018-10-15 00:14:29 +00:00
Formatting your code
--------------------
To ensure getting your contributions getting merged faster and to avoid other
developers from going back and fixing your code, please make your code pass the
pylint checks. We highly recommend that you install a pylint plugin for your
code editor. Once you have pylint set up to check the code, you can configure
it to use 120 characters max per line instead of 80.
Writing tests
-------------
If your patch does not require interactions with a GUI or external processes,
please consider adding unit tests for your code. Have a look at the existing
test suite in the `tests` folder to see what kind of features are tested.
Submitting your changes
-----------------------
Make a new git branch based of `master` in most cases, or `next` if you want to
target a future release. Send a pull request through Github describing what
issue the patch solves. If the PR is related to and existing bug report, you
can add `(Closes #nnn)` or `(Fixes #nnn)` to your PR title or message, where
`nnn` is the ticket number you're fixing. If you have been fixing your PR with
several commits, please consider squashing those commits into one with `git
rebase -i`.
2018-10-15 00:56:48 +00:00
Developer resources
-------------------
Lutris uses Python 3 and GObject / Gtk+ 3 as its core stack, here are some
links to some resources that can help you familiarize yourself with the
project's code base.
* [Python 3 documentation](https://docs.python.org/3/)
* [PyGObject documentation](https://pygobject.readthedocs.io/en/latest/)
* [Python Gtk 3 tutorial](https://python-gtk-3-tutorial.readthedocs.io/en/latest/objects.html)
* [Fakegir GObject code completion](https://github.com/strycore/fakegir)
Project structure
-----------------
2018-10-15 00:57:56 +00:00
[root]-+ Config files and READMEs
|
+-[bin] Main lutris executable script
+-[debian] Debian / Ubuntu packaging configuration
+-[docs] User documentation
+-[lutris]-+ Source folder
| |
| +-[gui] Gtk UI code
| +-[installer] Install script interpreter
| +-[migrations] Migration scripts for user side changes
| +-[runners] Runner code, detailing launch options and settings
| +-[services] External services (Steam, GOG, ...)
| +-[util] Generic utilities
|
+-[po] Translation files
+-[share] Lutris resources like icons, ui files, scripts
+-[tests] Unit tests