Open-sourcing the Barista Agent is something I've planned for some time now, but a lot is required before doing so. Before going into the "why", many of you may not even be aware of what the Barista Agent even is, so let me explain.
You may have read that Barista is a rendering platform. The reason for this classification is due to the various components that make Barista what it is. Anyone familiar with Barista mostly knows Barista for the client interface. Where the client is basically the controller for the user, the Barista Agent is what handles everything on the instance.
The Barista Agent's Job
When starting a render on the client, it passes all of the information to the Barista Agent on each instance. The Agent takes that information from the client to determine how to setup the environment. For instance, it downloads all of the files needed for rendering, and places them in the render folder. It also checks for needed add-ons and custom builds, downloads their files, installs them, and then tests them prior to the render.
Once all files are placed in the environment, the agent takes the render settings from the client, and creates the startup script for Blender. This script handles a lot of the automated tasks for the scene, and making sure performance is optimal for the instance. First is sets the render device for Blender, sets the tile size based on these devices, registers installed add-ons, bakes all available simulations in the scene, and then sets File Output nodes to output to the agent's output folder. Once this is all done, the agent starts a logging server for progress, a file monitoring service, and then starts the render. The progress server returns the instance progress and logs back to the client, whereas the file monitor service watches for any files being output from Blender, and uploads any new files to AWS. Lastly, if anything fails at all, the agent determines if its critical, and if it is, automatically shuts down the server.
Open-Sourcing the Agent
Since the agent is basically the heart of Barista, I've always wanted to open-source it, so the community could develop other cloud rendering platforms easily. There are a few reasons it hasn't already been open-sourced.
- The first being a lack of documentation. For a project like the Barista Agent, documentation is incredibly important. It's already shown that I have a lack of time for development, adding unneeded support to the pile, all because of bad documentation is not a good plan.
- There are still some features that need to re-written before open-sourcing. While I could release it as-is, these are features that would break existing installations, and cause all sorts of issues for other developers.
- While the agent is written with a dynamic language, it does use static typing. If you aren't familiar with this technology, it's incredibly important to avoid future issues. Unfortunately not all of the code is typed, because of the remaining features in development. Having this in place as well, is key to making sure the platform is always working correctly.
For the most part, that is everything needed before open-sourcing. While many may believe this is a perfect opportunity for the community to help with development, I personally believe its best to put the project in a better position before introducing to the community, not only to provide a better experience, but to also fix any stability issues it currently relies on the client to provide.
Either way, the process has been started, it's just a matter of time of getting it ready to share.