Skip to content

pyblish/developer-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

A maintainers and feature developers guide to Pyblish.

See also

Found a bug?




Prerequisites

You are expected to have a general familiarity with Git and the GitHub community. We use GitHub to both host source code and to coordinate efforts, via issues and pull-requests. As such you are expected to both read and write your own issues and to fork and create pull-requests with your changes, changes which will be subjected to both automated and peer based code-review.




Goal

Once finished reading this article, you should feel confident in maintaining and/or extending Pyblish at any of the following levels of granularity.

  • A) Source code optimisations - Such as spelling errors, removing unused code etc.
  • B) Bug fixes - Including familiarity with Git and continuous integration for stable code.
  • C) Minor and major features - To increment the (semantic) version.



Overview

Pyblish is an analytics and automation framework developed in Python for the visual effects and games industries in order to detect and resolve problems as early in the pipeline as possible.

It was designed to combat issues encountered in the day-to-day development of content involving chains of artists working on disparate parts of the same end result. Where a minor fault early on can have a significant impact later and be that much more expensive to fix.

Modularity

The framework is built as a series of "modules".

image

Each module independently developed and represented by a repository hosted on the online collaboration platform GitHub. There, each module maintains their own documentation, version, issues tracking, stars and wiki.

Modules either define, extend or integrate Pyblish at some level.

At the time of this writing, there are 40 actively developed repositories in the Pyblish Organisation on GitHub.

Packages

The inherent flexibility of modules maintaining their own version comes at a cost; maintaining a working state between all possible combinations of versions.

40 modules ^ 50 versions each = 1.26e80

That's 1.26 with 80 zeroes behind it. A.k.a. "Not Easy To Maintain™".

To combat this, some modules form so-called "packages".

image

Packages group a number of other modules into a combination of versions known to work together. For example, version 0.2.0 of pyblish consists of the following modules and versions.

The packages then provide both the user with a foundation for communicating which combination a problem of feature request is with and the developer with an ability able to surgically dedicate more resources into supporting only a few select versions of a single module, as opposed to the otherwise exponential amount of combinations.

"I'm using Pyblish X version 0.2 and I'm having this problem."

Integrations

Pyblish tackles the human "problem" of not being adequately precise or consistent with respect to what is required during the production of computer graphics. As such it can't be limited by the specific software you run.

To facilitate this, the Pyblish core is a software-agnostic Python library capable of running in any software with support for Python 2.6 or 2.7 (soon also Python 3), such as Autodesk Maya 2008 and upwards, Nuke, Modo, Fusion and Photoshop to name a few. Including those with no support for Python, via standalone publishing.

Some examples include..

Integrations are simple and typically boils down to a few lines of code with optional extras. Developers are encouraged to integrate hosts on their own via the dedicated Pyblish Integration module.

See also

  • Integration Guide (coming soon)

Extensions

Because the problems you face during production are likely unique, Pyblish cannot make too many assumptions about how you will attempt to solve them.

Instead, Pyblish delivers the "shell" within which you define your problem domain via the power of Python and the supplied functionality of the Pyblish framework. To jumpstart your journey into breaking down and defining your pipeline, a number of modules are provided that gather common problems found in a particular domain; such as full computer graphics advertisements developed at a mid-sized company or a blend between live-action and visual effects produced at a larger facility.

These modules make assumptions about the way you work that you can either employ or be inspired by.

Some examples include..

Developers are encouraged to define, document and deploy their own unique workflows in the form of extensions, and share them with the world. This way, the efforts made by one can benefit all which ultimately makes our industry a better place to be.




Continue Reading



{{ file.mtime }}

Releases

No releases published

Packages

No packages published

Languages