prompter: Can you give me some tips on how to get into contributing open source projects (e.g. on websites like GitHub)?

assistant: For your first contribution, you should plan to make a small change or fix(such as a spelling fix or a uncaught error) that will be easy to perform and for someone else to review. Before contributing to an open source project for the first time, its a good idea to check if the project has a contributing guide. If it does, make sure to comply with it over any specifics given here. 

1. Identify the change you want to make. Look at the issues for ideas, or create an issue with a brief description of the issue. Your first one should be simple to help to learn how to make them. 
2. Fork the project.
3. Clone the fork of the project you made.
4. Create a branch named after the issue you want to solve and switch your working branch to that one.
5. Fix the spelling mistake or simple bug
6. If there are any pre-commit checks, perform those
7. Commit your code. Indicate that you have solved the associated issue.
8. Push your code. It should appear as it's own branch in your fork of the source.
9. Submit a Pull Request (PR) for your fork, indicating the issue it solves in the PR.
10. A project maintainer will reach out to review your PR and review your code. If it is satisfactory, they will merge it in. If there are any issues, they'll give feedback on what you need to do.

Overall, contributing to open source software is fun and easier than many believe. Large open source projects may seem intimidating from the outside, but they are often the easiest to start contributing towards because they have the most active maintainers.

prompter: Thanks, and is there anything I can do to make my pull-requests have a higher chance of being accepted?

assistant: Sure! Start small, and look for beginner-friendly issues or projects on websites like GitHub and start with smaller, easier tasks. This will give you a good understanding of how the project works and help you build your confidence. Read the documentation before you start working on a project to make sure you understand its goals, objectives, and guidelines and get familiar with the codebase. Don't be afraid to ask questions. Most open source communities are welcoming and supportive, and they will be happy to help you get started. I hope these tips will help you get started with contributing to open source projects. Good luck!

prompter: Could you explain the difference between a pull request and a merge request?

assistant: A pull request (also known as a PR) is a proposed change to a repository that is submitted by a contributor, and it is then reviewed by the project maintainer. If the maintainer accepts the changes, the PR is then merged into the repository. A merge request (also known as a MR) is similar to a PR, but it is used to request changes to a branch in a repository. A MR is submitted by a contributor and is then reviewed by the project maintainer. If the maintainer accepts the changes, the MR is then merged into the repository.

assistant: Yes I can. In general you would follow these steps:

1. Find and download the latest source code. Usually open-source projects have at least two "branches" of the source-code:
     - One that is the latest "stable" version, where typically only small issues are fixed, intended for normal users  and 
     - one "development" version that includes all the latest changes, not fully tested, usually used to implement and additions and larger changes.
  If you want to contribute, you typically want to use this development "branch", so your proposals are compatible with the latest changes so other developers can test your proposals.

2. Find and follow the compilations instructions and requirements and dependencies to try and compile the program for your operating system. You can then test this "development" version. This is important, for example to check that the change you want to make was not already implemented in the development branch and to test the program after you have made your changes. Other developers are generally willing to help you with setting up compilation, but less likely to accept your changes if you don't put in the effort to compile and test your changes yourself.

3. make the changes to the source code, and test your changes. Also test of other parts of the program still work as expected, i.e: you didn't break anything else in the process.

4. contribute your changes. This depends on how (or if) the project is organized by the current developers. You typically create a "diff" file that lists only the changes that you made, compared to the latest version of the development branch. Other developers can then test your changes, also in combination with changes for other developers.

An exception to the the above could be when you want to contribute to an existing project without active developers and no developer that can be reached. In that case you would have to (temporary) take over development, and possibly make a copy of the project so you can continue development on a new website where you have the access rights to make changes.

Besides coding, you could possibly also help with other tasks, like answering questions from other users, organize bug-reports, write your own bug-reports, help with translations, help promote the project, help with documentation, etc. Some or all of these tasks may also be organized in similar ways to organizing changes to the source code, for example also use github.

Specifically for github, you would create an account for the github website, install the git source-code management tools for your operating system, use git to "clone" the source code of a project and regularly update it to the latest development branch. You can manage your own changes by creating additional branches yourself. You then create a "pull request" to give other developers access to your changes. Eventually your changes could be added to the main branch of the project.

Git also tracks which contributor worked last on each line of code, so if new issues are discovers later, you may be contacted to help resolve the issue.

In practice the details of the procedures varies between open-source projects. If you can contact the current developers, it is always good to discuss what you plan to do. The existing developers may be able to point you in the right direction, help you and increase the chance that your changes will be accepted into the official version of the software.

prompter: Do you have any suggestions for projects to contribute to?

assistant: You could also check out GitLab. The best tip is to not get worried about breaking things. We all break things, as that is how we learn.

prompter: Can you please elaborate? What exactly does GitLab provide that is not present with GitHub? Please be more specific about "breaking things," as contributing code to an open source project which you know is malicious or unhelpful in some is not a constructive use of your time.