Issues is a really powerful, but lightweight issue tracking system. You can make tickets, assign them to people, file them under milestones, order them with labels and have discussion in them. They integrate deeply into GitLab and are easily referenced from anywhere by using # and the issuenumber. Internally, at GitLab.com, we use this for all our project management needs.
## Merge Requests
Using a merge request, you can review and discuss code before it is merged in the branch of your code. As with issues, it can be assigned; people, issues, etc can be refereced; milestones attached. We see it as an integral part of working together on code and couldn't work without it.
## Wiki
This is a separate system for documentation, built right into GitLab. It is source controlled and is very convenient if you don't want to keep you documentation in your source code, but you do want to keep it in your GitLab project.
## Wall
For simple, project specific conversations, the wall can be used. It's very lightweight and simple and works well if you're not interested in using issues, but still want to occasionally communicate within a project.
## Snippets
Snippets are little bits of code or text. This is a nice place to put code or text that is used semi-regularly within the project, but does not belong in source control. For example, a specific config file that is used by > the team that is only valid for the people that work on the code.