Contributing To PyFarm


PyFarm is a Python based project with the goal of creating an easy to use and deploy render farm. The project is written on top of several existing libraries including SQLAlchemy, Flask, Twisted, and many more. While PyFarm’s original goal is providing the base for running a render farm it can be used for other types of work as well.

As flexible and easy to use as the project may be, contributions from the community are always welcome. There are many ways one can contribute to the overall project but generally they fall under either documentation, bug fixes, features, or testing. With that in mind, if you’re looking to contribute to any of these three areas then read on to get started.

Project Structure


The project is broken down into several smaller sub-projects to aid in long term maintenance and isolation of code scope. Generally speaking there are two kinds of sub-projects, supporting and operational. Supporting sub-projects support all consumers of the project in some capacity (ex. documentation or deployment tools). Operations sub-projects contain the code which operate PyFarm (ex. agent or master). See the below table to get familiar with the various sub-projects as they will be referenced later on:

Sub-Projects of PyFarm
Sub-Project Type Description
pyfarm-docs Supporting
pyfarm-core Operations
  • common library used by all other operational type sub-projects containing standard library backports, enums, basic file handling, base logger, general utilities, and system information collection

  • does not specify all dependencies, the consuming sub-project will do this instead (ex. pyfarm-agent specifies the dependencies that the system information library needs)

  • pushes to this repository will:
pyfarm-agent Operations
  • contains the code which runs on a remote host which can run jobs, update the master on a host’s resources, and track progress of individual commands

  • pushes to this repository will:
  • code which wraps around an individual command to provide handling for failures, log emissions, and other conditionals related to job execution

pyfarm-master Operations