This document describes how you can contribute to Kotatogram Desktop. Please read it carefully.
Table of Contents
- What contributions are accepted
- Contributing translations
- Build instructions
- Pull upstream changes into your fork regularly
- How to get your pull request accepted
Before contribute to Kotatogram Desktop, you could try to contribute to Telegram Desktop in following cases:
- Bug fixes of original Telegram Desktop features
- Optimization of Telegram Desktop's source code and documentation
If your PR is merged into the official app, it will help both apps (as well as many other Telegram Desktop forks). Be sure to read its CONTRIBUTING.md before trying.
If your feature couldn't be added to official Telegram Desktop (e.g. new feature), you can try to submit a pull request here.
Following contributions are accepted to Kotatogram Desktop:
- Bug fixes and improvements
- New features
If you are submitting a new feature, please note that:
- It must be tested: we need these features to work, and work correctly.
- It must not confilct with exsiting features. If it's an alternative way of making this feature (e.g. showing text in other place), you should improve existing feature, and give user a choice unless there is no logical reasons for making a choice.
- It must look as good and refined as possible. I can accept some "dirty" solutions, but in that case they should be optional, and disabled by default. Still, too "dirty" solution won't be accepted.
- It must not violate Telegram API Terms of Service, e.g. features like Ghost Mode won't be implemented.
Translation contributions are currently accepted on Crowdin. Even though you can open an issue about translation here (e.g. requesting a new language) or submit a PR, Crowdin is the prefered way.
Please note: if you submit a PR with translation, it won't be merged. Instead it will be updated on Crowdin.
Build instructions of Kotatogram Desktop are practically same, as Telegram Desktop's. See the README.md for details on the various build environments.
Of course, you should clone https://github.com/kotatogram/kotatogram-desktop.git
instead of https://github.com/telegramdesktop/tdesktop.git
.
Kotatogram Desktop is advancing quickly. It is therefore critical that you pull upstream changes into your fork on a regular basis. Nothing is worse than putting in a days of hard work into a pull request only to have it rejected because it has diverged too far from upstream.
To pull in upstream changes:
git remote add upstream https://github.com/kotatogram/kotatogram-desktop.git
git fetch upstream master
Check the log to be sure that you actually want the changes, before merging:
git log upstream/master
Then rebase your changes on the latest commits in the master
branch:
git rebase upstream/master
After that, you have to force push your commits:
git push --force
For more info, see GitHub Help.
We want to improve Kotatogram Desktop with your contributions. But we also want to provide a stable experience for our users and the community. Follow these rules and you should succeed without a problem!
Pull requests should be as small/atomic as possible. Large, wide-sweeping changes in a pull request will be rejected, with comments to isolate the specific code in your pull request. Some examples:
- If you are making spelling corrections in the docs, don't modify other files.
- If you are adding new functions don't 'cleanup' unrelated functions. That cleanup belongs in another pull request.
To keep the history of the project clean, you should make one commit per pull request. If you already have multiple commits, you can add the commits together (squash them) with the following commands in Git Bash:
- Open
Git Bash
(orGit Shell
) - Enter following command to squash the recent {N} commits:
git reset --soft HEAD~{N} && git commit
(replace{N}
with the number of commits you want to squash) - Press i to get into Insert-mode
- Enter the commit message of the new commit
- After adding the message, press ESC to get out of the Insert-mode
- Write
:wq
and press Enter to save the new message or write:q!
to discard your changes - Enter
git push --force
to push the new commit to the remote repository
For example, if you want to squash the last 5 commits, use git reset --soft HEAD~5 && git commit
If you change two lines of code and correct 200 lines of whitespace issues in a file the diff on that pull request is functionally unreadable and will be rejected. Whitespace cleanups need to be in their own pull request.
Please keep your code as clean and straightforward as possible. Furthermore, the pixel shortage is over. We want to see:
opacity
instead ofo
placeholder
instead ofph
myFunctionThatDoesThings()
instead ofmftdt()
Before you submit a pull request, please test your changes. Verify that Kotatogram Desktop still works and your changes don't cause other issue or crashes.
-
Explain why you make the changes. More infos about a good commit message.
-
If you fix an issue with your commit, please close the issue by adding one of the keywords and the issue number to your commit message.
For example:
Fix #545