github.com/aminovpavel/nomad@v0.11.8/contributing/README.md (about)

     1  # Nomad Codebase Documentation
     2  
     3  This directory contains some documentation about the Nomad codebase,
     4  aimed at readers who are interested in making code contributions.
     5  
     6  If you're looking for information on _using_ Nomad, please instead refer
     7  to the [Nomad website](https://nomadproject.io).
     8  
     9  ## Architecture
    10  
    11  The code for Nomad's major components is organized as:
    12  
    13  * `api/` provides a Go client for Nomad's HTTP API.
    14  * `client/` contains Nomad's client agent code.
    15  * `command/` contains Nomad's CLI code.
    16  * `nomad/` contains Nomad's server agent code.
    17  * `ui/` contains Nomad's UI code.
    18  * `website/` contains Nomad's website and documentation.
    19  
    20  The high level control flow for many Nomad actions (via the CLI or UI) are:
    21  
    22  ```
    23  # Read actions:
    24  Client -> HTTP API -> RPC -> StateStore
    25  
    26  # Actions that change state:
    27  Client -> HTTP API -> RPC -> Raft -> FSM -> StateStore
    28  ```
    29  
    30  ## Checklists
    31  
    32  When adding new features to Nomad there are often many places to make changes.
    33  It is difficult to determine where changes must be made and easy to make
    34  mistakes.
    35  
    36  The following checklists are meant to be copied and pasted into PRs to give
    37  developers and reviewers confidence that the proper changes have been made:
    38  
    39  * [New `jobspec` entry](checklist-jobspec.md)
    40  * [New CLI command](checklist-command.md)
    41  * [New RPC endpoint](checklist-rpc-endpoint.md)
    42  
    43  ## Tooling
    44  
    45  * [Go tool versions](golang.md)