# Developing Plugins

PATHspider is written to be extensible and the plugins that are included in the PATHspider distribution are examples of the measurements that PATHspider can perform.

`pathspider.plugins` is a namespace package. Namespace packages are a mechanism for splitting a single Python package across multiple directories on disk. One or more distributions may provide modules which exist inside the same namespace package. The PATHspider distribution’s plugins are installed in `pathspider.plugins`, but also 3rd-party plugins can exist in this path without being a part of the PATHspider distribution.

- Choosing a Plugin Model
  - SynchronizedSpider Model
  - DesynchronizedSpider Model
  - SingleSpider Model
  - ForgeSpider Model
- Plugin Basics
  - Quickstart
  - Directory Layout
  - Running Your Plugin
- Common Plugin Features
  - Plugin Metadata
  - Command Line Arguments
- SynchronizedSpider Development
  - Connection Modes
  - Configuration Functions
- DesynchronizedSpider Development
  - Connection Functions
- SingleSpider Development
- ForgeSpider Development
  - Plugin Metadata
  - Packet Forging
- Flow Analysis Chains
  - Library Flow Analysis Chains
  - Writing Flow Analysis Chains