
Developers
**********

* We need your help

* Contribute docs

  * Overview

  * Documentation Tools

  * Building the files

  * Submitting updates

  * Special Tags

  * Conventions: Man Pages

* Contribute code and tests

  * Getting Started

  * System files and Databases

  * Resources

  * Releasing

* Cyrus.Works

  * About Cyrus Works

  * How it works


Cyrus Internals
===============

These documents are intended for persons interested in contributing to
the Cyrus IMAP development effort, or for those interested in lower-
level details about how Cyrus is implemented.

* Cyrus APIs

  * CyrusDB API

  * cyrusdb API

  * Index API

  * Mailbox API

* Thoughts & Notes

  * Notes for backup implementation

  * Cyrus IMAP Server: Sieve Bytecode

  * Cyrus CalDAV Scheduling Flowchart

  * Enabling improved_mboxlist_sort

  * Cyrus IMAP Server: Notes

  * Cyrus IMAP Server: Prot Events

* Guidance for Developers

  * Cyrus IMAP Server: Hacking

  * Cyrus IMAP Server: Internationalization

  * Cyrus IMAP Server: Locking

  * Cyrus IMAP Server: Mailbox File Formats

  * Cyrus IMAP Server: Namelocks

  * Cyrus IMAP Server: prot layer

  * Cyrus IMAP Server: Replication Examples

  * Cyrus IMAP Server: Replication Protocol v2.4+

  * Cyrus IMAP Server: Special Characters

  * Cyrus IMAP Server: var directory structure

This "diagram" shows the Master State Machine.


Unit Tests
==========

* Unit Tests

  * Table of Contents

  * 1. Introduction

  * 2. What Is A Unit Test?

  * 3. Running The Tests

    * 3.1. Setting Up The Machine

    * 3.2 Configure Script

    * 3.3 Make

    * 3.4 Using Valgrind

    * 3.5 The Tests Are Failing

  * 3.6 Debugging A Test

  * 4. Adding Your Own Tests

  * 4.1 Where To Put Your Tests

  * 4.1 Adding A New Suite

  * 4.2 Adding A Test To A Suite

  * 4.3 Suite Setup And Teardown
