diff options
author | H. Shay <hillerys@element.io> | 2022-05-09 13:31:42 -0700 |
---|---|---|
committer | H. Shay <hillerys@element.io> | 2022-05-09 13:31:42 -0700 |
commit | 116a66e3af3ab25b955a37369a001e4fc61d1c50 (patch) | |
tree | dcd2d2b73b91436241a9829a61bfa0e36d9a3e52 | |
parent | Implement cancellation support/protection for module callbacks (#12568) (diff) | |
download | synapse-116a66e3af3ab25b955a37369a001e4fc61d1c50.tar.xz |
outline new docs skeleton
-rw-r--r-- | docs/SUMMARY.md | 159 |
1 files changed, 149 insertions, 10 deletions
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 65570cefbe..a7e93dd591 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -88,19 +88,158 @@ - [OpenTracing](opentracing.md) - [Database Schemas](development/database_schema.md) - [Experimental features](development/experimental_features.md) - - [Synapse Architecture]() - - [Log Contexts](log_contexts.md) - - [Replication](replication.md) - - [TCP Replication](tcp_replication.md) - - [Internal Documentation](development/internal_documentation/README.md) + - [Synapse Architecture](development/synapse_architechture.md) + - [Overview]() + - Flows of data through Synapse + - Starts with a Request/BG Job/Module + - Processing + - Maybe Response + - Config + - Request Handling + - Clients + - Federation + - Internal Processing - there could be an exception! + - Storage + - Federation + - External Entities: Remote homeservers, Appservices, Pushers, Identity Servers + - Modules + - Workers/Replication/Redis/Organization of a large homeserver instance + - [Configuration]() + - Experimental config options + - Define how long they should live after the corresponding msc has merged + - [Logging]() + - combine with [Log Contexts](log_contexts.md) + - [Storage]() + - What is current database schema? + - Start by linking script that can compile full schema + - Is there a tool that can visualize a postgres db? - Shay to check + - [Database Backends]() + - [Database Migrations]() + - Background [Schema] Updates + - [Caching]() + - Cache tuning + - How to check sizes + - Nice to have a metric for max cache sizes + - How to add a cache to a [storage] function + - Why would you + - How to invalidate (with support for workers) + - [Request Listening]() + - Mention that we use Twisted + - [Servlets and Resources]() + - When to use one over the other (always use a servlet?) + - Unstable/release-based endpoints + - Don't put too many servlets on the same resource + - [Handlers]() + - Machinery behind the servlet that does all the processing + - [Background Jobs]() + - [Federation]() + - Federation Catchup + - [Data Types]() + - [Users]() + - Allowed username characters + - [Devices]() + - [Events]() + - What is an event? + - Different event formats depending on room version + - Outlier events, rejected events, dropped events + - [Rooms]() + - [Room DAG concepts](development/room-dag-concepts.md) + - [Sync]() + - [State Resolution]() + - [The Auth Chain Difference Algorithm](auth_chain_difference_algorithm.md) + - [User Authentication]() - [Single Sign-On]() - [SAML](development/saml.md) - [CAS](development/cas.md) - - [Room DAG concepts](development/room-dag-concepts.md) - - [State Resolution]() - - [The Auth Chain Difference Algorithm](auth_chain_difference_algorithm.md) - - [Media Repository](media_repository.md) - - [Room and User Statistics](room_and_user_statistics.md) + - [User-Interactive Auth]() + - [Password-based]() + - [Password Auth Modules]() + - [Token-based]() + - [Rate Limiting]() + - Different rate limiting classes (Ratelimiter vs RequestRatelimiter) + - How does our rate limiting work + - When to use/add rate limiting + - Rate limiting for federation traffic + - [Media Repository](media_repository.md) + - [Email and HTML Templating]() + - [Presence]() + - What is Presence? + - How is it designed to work currently + - Why it is recommended to be disabled + - Why is this resource intensive + - Links and issues on how to fix this + - How it's implemented + - [Application Services]() + - [Push Notifications]() + - [Synapse Admin API]() + - [Synapse Modules]() + - [Workers]() + - Things to be mindful of in order to make your feature work with workers + - How to test a feature on workers + - [Replication](replication.md) + - [TCP Replication](tcp_replication.md) + - [Sources]() + - TypingSource, ReceiptSource, PresenceSource, etc + - Classes containing methods for storing and getting different types of data + - [Streams]() + - Stream Types (the ID of the stream) + - Stream Token: each entity added to the stream gets a unique, incremental token + - StreamReplication classes and clients + - How this interacts with sync? + - Stream token generators: Single Writer Only (sqlite), MultiWriterStreamIDGenerator (Postgres) + - [Notifier]() + - [Monitoring and Metrics]() # opentracing, phone home and metrics + - [Opentracing]() + - How does this work? + - How is this helpful? + - What's jaeger? + - How do I create and mutate a span? + - How are spans sent between homeservers? + - Only between whitelisted homeservers + - What areas are currently traced + - Database layer + - Servlets + - Crypto stuff + - [Metrics]() + - Prometheus + - How to make a new metrics / good practices + - What are all the current metrics and what each one means + - How to view in grafana + - Here's a quick example of making a new panel to visualize metrics + - Btw it would be nice to have a tooltip with an explainer for every graph in graphana + - [Room and User Statistics](room_and_user_statistics.md) # TODO: This page is currently useless + - [Testing]() + - [Unit Tests]() + - How to run the tests (partially in the contributing guide) + - IDE-specific examples + - How to run one test / one test case / run in parallel + - Documenting test environment variables: SYNAPSE_TEST_LOG_LEVEL, SYNAPSE_TEST_PERSISTENT_SQLITE_DB, SYNAPSE_POSTGRES etc. + - Test case versus test method + - prepare, make_homeserver, default_config, @override_config decorator, @parameterized decorator, pump/reactor.advance + - Test utilities: fake homeserver, federation, workers, channels, requests, HomeServerTestCase.helper + - How to use them in your tests at a high level + - How they are implemented + - Different inherited TestCase classes: HomeServerTestCase, FederatedHomeServerTestCase(sp?), TestCase + - Test pattern: How to start a request, check the state of the homeserver, respond to the request + - Ensuring the right servlets for your test are registered + - Good practice: use storage methods vs. tampering with the database directly (database schema changes) + - Dealing with deferreds/async (get_success/get_failure). + - Mocking - async mocks + - Organization of tests + - Skipping tests + - [Integration Tests]() + - [Complement]() + - Point to Complement's documentation on its structure and how to write a test + - How to run Complement against Synapse + - Document Synapse's Complement images and how they're built + - Which Complement build flags does Synapse support + - Unstable features + - Synapse's Complement Blacklist + - [Sytest]() + - You should prefer Complement :) + - Helper functions + - Dealing with race conditions + - Link to that one perl helper doc Matthew wrote - [Scripts]() # Other |