Skip to content

Latest commit

 

History

History
59 lines (37 loc) · 4.2 KB

CONTRIBUTING.md

File metadata and controls

59 lines (37 loc) · 4.2 KB

Contributing to Tokodon

Like other projects in the KDE ecosystem, contributions are welcome from all. This repository is managed in KDE Invent, our GitLab instance.

If this is for your first code contribution, see the GitLab wiki page for a tutorial on how to send a merge request.

Testing

If you want to quickly test UI changes and keep network requests to servers at a minimum, then compile Tokodon with tests (-DBUILD_TESTING=ON) and use the tokodon-offline executable. It uses the same mock network backends as our testing infrastructure, and is extremely useful for rapid testing.

Chatting

If you get stuck or need help with anything at all, head over to the KDE New Contributors room on Matrix. For questions about Tokodon, please ask in the Tokodon room. See Matrix for more details.

What Needs Doing

If you want to report a bug, submit it to the KDE Bugtracking System. Please do not use the Issues tab to report bugs.

If you found a part of Tokodon that's not translated, check out the Getting Involved in Translation wiki page to see how you can help translate!

To finding bugs to fix or wanted features to fullfill, see the open bugs for Tokodon on the KDE Bugtracking System. There may be open issues on Invent as well.

Where Stuff Is

Everything codewise for Tokodon in the /src directory. Tokodon follows modern Kirigami and Qt practices, meaning the frontend is written in QML and the backend is C++.

Backend

The backend code is written in C++, and we're currently requiring C++17 to build.

  • Classes related to accounts are located under /src/accounts.
  • The models and other classes used for the moderation tools live in /src/admin.
  • Code for the tests are put under /src/autotests.
  • Models for the conversation (direct messages) page is located in /src/conversation.
  • The backend classes for the status composer are in /src/editor.
  • The network controller and other miscellanous classes live in /src/network.
  • The Purpose plugin (allowing shared to Tokodon from other KDE applications) is located under /src/purpose.
  • The search models are put under /src/search.
  • The timeline model classes live in /src/timeline.
  • Everything else like generic utility classes are located in /src/utilities.

When creating new classes, please make sure they are categorized correctly. Please create a new directory if you feel like it is necessary.

Frontend

The user interface is written in QML, using technologies such as Kirigami. Please see the KDE API Documentation for more information. The frontend files are located in /src/content/ui.

The folder will eventually be reorganized, but for new components please try to put them under a relevant folder.

Conventions

Tokodon follows the standard KDE coding style, which is enforced by the use of clang-format and a git hook. There is nothing else you need to do, please commit any fixes the tool makes.