pyblish / pyblish-base

Pyblish base library - see https://github.com/pyblish/pyblish for details.
Other
127 stars 59 forks source link

Integrations #55

Closed mottosso closed 10 years ago

mottosso commented 10 years ago

Hi all,

I'd like to propose a few integrations, along with formalising the one we've been working on for Maya, in accordance with the current Pull-Request about preparing for GUI development.

I've written up a WIki page for each integration, stating the problem domain and a potential architecture, but here's a summary.

asana-publish

Publish for Asana - Essentially in the form of a few plugins, conform plugins. Each plugin could be responsible for a particular update, such as commenting on tasks associated with the particular asset being published, or updating the project status as a whole. Users subscribed to tasks would then be able to retrieve updates via mail or directly in Asana.

Publish for Git - Sort of a "eating your own dogfood" whilst developing. :) This integration is about running validations upon each commit, push, pull or merge, either directly after or before.

Publish for Maya - Finally, what we've been doing so far, but in alignment with other integrations.

The way I'm imagining this to work is for each of these to have their own corresponding GitHub repositories and for each to be installable via pip.

$ pip install publish
$ pip install publish-asana
$ pip install publish-git

Further

We spoke briefly about how we can safely assume any particular conventions employed within any production; like assuming everyone uses references or namespaces for rigs in Maya or whether they use Shotgun for asset tracking.

I think that with integrations separated this way, we could potentially provide a full suite of configuration options, with GUI's, per integration.

For example, to use the Asana integration, we could assume that users tag their selections (be it object sets or transforms etc.) with the appropriate task reference within Asana and that this tag is called "asanaRef".

We could also provide an individual configuration setup for Asana, with this as an option, possibly with its own GUI to go with it.

# config.json
{
    "asanaReference": "my_custom_name"
}

On that note, we could start providing much more specific integrations, that make assumptions about how people rig or model or texture and simply provide configuration for when things differ.

class ValidateCharacterControls(Validator):
     def process(self, context):
         """Stress test controllers

         The test will ensure that no ik-flipping occurs and that the
         mesh isn't experiencing stretch beyond 140%

         """

This particular example assumes that controls are readily available, and that there is some means of conforming the amount of stretch taking place upon a mesh, such as via SOuP or Fabric.

Even further

With this in mind, it would allow third-party developers the ability to provide suites of "best practices" or "production techniques" as an individual bundle, installable via pip, that captures how a particular studio or product does things.

$ pip install publish-ilm-rigging
$ pip install publish-glassworks-conform
$ pip install publish-shotgun-review

Ultimately facilitating conventions on a global scale that can be reused and perfected by anyone.

tokejepsen commented 10 years ago

Sounds pretty good to me:)

mottosso commented 10 years ago

Okay, this is in progress, the first actual, isolated integration is Maya and is hosted here:

https://github.com/abstractfactory/pyblish-maya

It'll get it's own Wiki and installation instructions, along with its own issue-tracking.