Background
Concepts
Spil builds upon general concepts, as well as production proven CG pipeline concepts.
General concepts
Unique Identifier - Human readable Identifier - “Natural Key”
dzone.com/articles/7-strategies-for-assigning-ids-to-microservices
medium.com/blue-sky-tech-blog/a-rose-by-any-other-name-4b569309b575Python File system path
www.python.org/dev/peps/pep-0428Query by Example
A query technique where “example” entities, with search values, are used to retrieve “matching” results.
en.wikipedia.org/wiki/Query_by_ExampleNode tree & hierarchy
Pipeline concepts
Unique Identifier & Resource Locator
Examples: “SPREF” (Sony Pictures), or the “Pipeline Resource Identifier - PRI” (Blue Sky)
medium.com/blue-sky-tech-blog/conduit-pipeline-resource-identifiers
Also OpenAssetIO’s Entity ReferenceResource description and “Context” (Shotgrid Toolkit)
developer.shotgridsoftware.com/tk-core/core.html#contextthe “TypedContext”, an entity for hierarchical types in Ftrack
Template based path resolving
As implemented in Shotgrid Toolkit:
github.com/shotgunsoftware/tk-config-default/blob/master/core/templates.yml
By CGWire’s kitsu zou.cg-wire.com/file_trees
By Lucidity or resolvaMiddleware between Asset consumers or producers
OpenAssetIO
Katana Asset APIAsset Resolution - ArResolver - in USD
https://openusd.org/release/api/ar_page_front.htmlThe Sid itself
The Sid has been used in general and fx pipelines since 2011, in various implementations and at various degrees.
Philosophy
Spil aims to be : flexible, pragmatic, simple - and reliable.
flexible
Spil is a library, and not a framework.
It can be plugged to existing pipelines. It easily blends in, to be used only where it is needed.
It can also be planned at a pipelines core - and be a central part of it.
pragmatic
It all starts as files. So does Spil.
YAGNI meets WYSIWYG.
simple
Complexity costs money, at all levels of a pipeline.
Spil aims at simplicity, even at the price of some universality or adaptability.
Usage is intuitive: it is obvious thathamlet/a/char
is an asset category, andhamlet/a/char/ophelia/modeling
is a modeling task.
Producers have an overview, artists see clearly, TDs are empowered.
That is the goal of Spil.
reliable
This part is yet to prove.
“In the face of ambiguity, refuse the temptation to guess.”
But who are you to have read this far anyway?
Limitations
The configuration is tricky
For complex projects, creating the config is not simple, and is lacking tools to help.
Complex configurations may not work out of the boxBeta stage
The core concepts have been around for a while, and different versions of the Sid are and have been used in production pipelines for some time now.
But this version of “Spil” is a rewrite. It is currently used in production, but is still young.Needs optimisation
The resolver is fast (using caches and memoization), but would benefit from a faster rust implementation.
File sequence support (eg. image sequences using fileseq) is still very slow.
Performance
Spil thrives to be used interactively.
It’s performance depends on the data sources that are used.
Spil uses a
FindInConstants
class to handle configurable data that mostly doesn’t change (types, asset types)Spil ships with a configurable
FindInCache
class to handle data that changes rarely (projects, sequences, assets, etc.). (not production ready in current release)String / Sid Resolves are internally stored in a custom lru_cache
Finders
use generators
Plans and ongoing development
The priority is to make the current feature set more robust, efficient, and easy to deploy.
tools to help create and verify the configuration files
more testing and profiling
rust implementation of resolva
To take profit from the Sids universality, we plan on building reusable open source bricks and pipeline tools.
For example:
protocol for pipeline actions, for example
sid://play?hamlet/s/sq030/**/>/p/movie
connectors to Shotgrid, CGWire Kitsu, Ftrack and Databases
using the sid as a USD Asset Resolver / In a USD pipeline
GraphQL and/or rest API
file system style navigation and context handling
For examplecd hamlet/s/sq010