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
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
[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
|