How to manage roles?

How do I allow a developer to commit to master branch?
What are the actions a maintainer is allowd to do? Are the roles managible? how?

You can add roles or users to push to master (or other protected branches) via Project-> Settings -> Repository -> Protected Branches
An overview of the permissions per role is on Permissions | GitLab As far as I know these settings are embedded in Gitlab and not adjustable.