# Welcome and Overview - Synapse

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Introduction

Welcome to the documentation repository for Synapse, a Matrix homeserver implementation developed by Element.

## Installing and using Synapse

This documentation covers topics for installation, configuration and maintenance of your Synapse process:

- Learn how to install and configure your own instance, perhaps with Single Sign-On.

- See how to upgrade between Synapse versions.

- Administer your instance using the Admin API, installing pluggable modules, or by accessing the manhole.

- Learn how to read log lines, configure logging or set up structured logging.

- Scale Synapse through additional worker processes.

- Set up monitoring and metrics to keep an eye on your Synapse instance’s performance.

## Developing on Synapse

Contributions are welcome! Synapse is primarily written in Python. As a developer, you may be interested in the following documentation:

- Read the Contributing Guide. It is meant to walk new contributors through the process of developing and submitting a change to the Synapse codebase (which is hosted on GitHub).

- Set up your development environment, then learn how to lint and test your code.

- Look at the issue tracker for bugs to fix or features to add. If you’re new, it may be best to start with those labeled good first issue.

- Understand how Synapse is built, how to migrate database schemas, learn about federation and how to set up a local federation for development.

- We like to keep our `git` history clean. Learn how to do so!

- And finally, contribute to this documentation! The source for which is located here.

## Reporting a security vulnerability

If you’ve found a security issue in Synapse or any other Element project, please report it to us in accordance with our Security Disclosure Policy. Thank you!