# Troubleshooting FAQ and collecting topic for contributing to Joplin codebase

**URL:** <https://discourse.joplinapp.org/t/troubleshooting-faq-and-collecting-topic-for-contributing-to-joplin-codebase/6501>\
**Category:** Development\
**Tags:** tips-and-tricks\
**Created:** [2 March 2020 20:28 UTC](https://discourse.joplinapp.org/t/troubleshooting-faq-and-collecting-topic-for-contributing-to-joplin-codebase/6501 "2020-03-02T20:28:52Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [2 March 2020 20:28 UTC](https://discourse.joplinapp.org/t/troubleshooting-faq-and-collecting-topic-for-contributing-to-joplin-codebase/6501/1 "2020-03-02T20:28:52Z")

</div>

this is a living topic what shall collect and describe nicely all traps and hurdles when trying to contribute to codebase of Joplin.

For the time being anyone is welcome to edit this wiki.

If you feel that there is something that should be mentioned here, just reply in this topic and quote (discourse allows to quote across different topic) or reference to it, we will take from there.

# development environment

* * *

# build

* * *

# contribute

* * *

## basics about the PR

as there are not that many reviewers around here keep your PR clean to safe us time, you should be familiar with Use `git diff` or `git difftool` and know why to use them.  
Moreover, some editors reformat the code when saving, or you might have added test code that shouldn’t end up in the PR.

Pull requests that include changes unrelated to your issue **will not be merged**. Moreover it does not reflect well on your work when mentors have to remind you to clean up your pull request.

Once you have implemented changes requested by a mentor, please do **not** mark the comment as “resolved”. The mentor will need this comment to find out what still needs to be checked, and will mark the comment as “resolved” themselves.

## Effectively using Github

* * *

- After forking Joplin, clone the repository to build it locally  
`git clone git@github.com:<your-userid>/joplin.git`  
Then add another remote to pull changes from upstream.  
`git remote add upstream https://github.com/laurent22/joplin.git`

- Github does not automatically sync your forked repository with the main Joplin repo, you need to do it manually here’s [how to](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/syncing-a-fork).

- There is another [niche way](https://github.com/wei/pull#readme) of doing the same automatically too.

- When you are making a pull request make sure you _ **do not commit changes to your master branch** _ _(master branch of the forked-repo should be the one which is constantly synced with the main Joplin repository)_, create a new branch, push changes to it, and create a Pull-Request from that branch, it will save you a lot of time, in the case, your PR is not accepted you don’t need to reconfigure master branch. This is a really good [video](https://www.youtube.com/watch?v=pDmYNK68IEc&t=616s) which will refresh your concepts about branches.

- Use Github-keywords like `fixes #issue-number` and closes, if your PR would fix an issue.

- Use `git diff` or `git difftool` to see exactly what’s changed and remove any change that’s not relevant to your issue. Consider using `git add -p` to add only the relevant changes.

# app architecture

* * *

---

_[View the full topic](https://discourse.joplinapp.org/t/troubleshooting-faq-and-collecting-topic-for-contributing-to-joplin-codebase/6501)._
