GSoC 2023: Flamenco Improvements

Hello! My name is Eveline Anderson and I am very excited to start helping out on the Flamenco project as a “newbie” to the open-source contributing world. I love Blender and was elated at the opportunity to contribute to the community. This post will be intended to hold my weekly reports, and my proposal.
The following is an outline of my proposal, but my full proposal can be found with this link: Eveline’s Flamenco Improvement Proposal

Synopsis

Around a year ago, Flamenco—a rendering-farm Blender addon—was released to improve the workflow for animation artists across the globe. It is extremely successful, but still has many key functionalities that can greatly improve it. The goal of this project is to build upon the foundation of Flamenco, such as designing a web interface for the manager configuration, introducing RNA overrides, and improving stability, to bring it to its full potential.

Benefits

As mentioned previously, the idea of Flamenco is perfect for all animation artists, as it speeds up the rendering workflow (which is something that is desperately needed) in a simple, yet functional way. Building upon the base that Flamenco has already set up will improve the following factors:

  • Ease of Use — To make an application more popular, users must be enticed to use it. Therefore, the more user-friendly interfaces are implemented, the better the odds are that they will want to use it.
  • Removal of Redundant Tasks – A common word that tends to be used in a negative light is the verb “grinding” which is another word for repetitive, redundant actions. The goal is to remove as many redundant tasks from Flamenco as possible. This can be accomplished by removing jobs and tasks that constantly need to be resubmitted instead of just using a function that can set certain properties to make the process more automated.
  • Improved Stability/Predictability – An application could have the most amazing features, but it would be of no use to a client if it is not stable. While Flamenco is NOT an unstable application, the improvements in areas such as the Worker can help eliminate any unexpected crashes or outcomes that could frustrate a user.

Deliverables

The Flamenco project is already a well-built application, but the deliverables of the project are listed below are to improve the groundwork:

  • Create a web interface for Flamenco Manager so that it is possible to configure the manager from its web interface.
  • Design job types for various tasks, such as distributed rendering of single images, and more powerful control over parameters for studios.
  • Introduce per-Worker logs on the Manager, for introspection and debugging.
  • Introduce RNA Overrides.
  • Secondary Tasks – Improve the stability and predictability of the jobs.
  • User Documentation and Notes.

Flamenco Development Branch

The following link is to the specific branch I will be pushing code to. If you’d like to see my progress, please check out the link. Eveline’s Forked Flamenco Branch

Once GSoC has begun, I will post my weekly reports in the comments. Thank you so much again for the opportunity and I’m happy to be here!

21 Likes

GSoC Week 1 Report

Community Bonding Period

During this period, I took some time to learn and familiarize myself with Golang and unit testing. Because I knew JavaScript, it wasn’t all that difficult to pick up on the syntax. However, unit tests are a completely different story and took a much greater time to truly understand.

My mentor (Dr. Sybren Stüvel) and I also devised a plan on how to best to tackle the Google Summer of Code proposals. Flamenco is a far bigger project than I am used to working on, so I needed to get familiar with the Flamenco project’s structure and code. We decided to start with smaller fixes before diving into the heavier parts.

Accomplishments

As mentioned before, we decided to cover some changes that would not be as costly with time, due to my lack of familiarity with Golang. This week, I–with the help of my mentor–was able to accomplish the following:

  • Understand Go/Unit testing to a basic level
  • Discussed with mentor the structure and get a broad overview of the Flamenco project
  • Create and submit a PR request for #99549 When sending Workers offline, remember their previous status
  • Discovered a new issue to fix #104219 Unit tests are timezone-dependent

Struggles / Blockers

  • I think the largest struggle was being in a project that I knew little about (coding-wise). I love using Blender and Flamenco, but never really went into the deep coding structure of the program. It was easy to feel overwhelmed, so I’m grateful that my mentor patiently guided me through the design of Flamenco.
  • A basic struggle, but knowing very little Golang and unit testing made it difficult to understand some parts. Thankfully, the fix that I needed to work on was very small. But, it still took me a great deal of time to actually solve the issue, which can be frustrating.
  • I now truly understand a developer’s struggle in fixing one issue and causing 20 more. The unit test that I created, broke both the TestWorkerSignoffStatusChangeRequest test and the
    TestWorkerSignoffTaskRequeue test. It was terrifying to see those errors, and took more time to solve them than the actual bug.
  • One small issue that my mentor and I discovered is that some of the unit tests were dependent on the timezone. Since I was in a completely different timezone than my mentor (Europe vs America), it took some time to figure out why I was getting some errors and my mentor wasn’t.

Lessons Learned

  • Staying organized. I thought I was very organized when it came to coding projects. But, being actually put IN a huge one has taught me how important it is to follow the steps of first understanding, secondly assessing, and THEN coming up with a game plan.
  • Start small, then grow bigger. I used to be the student who would take the harder classes first, then do the easier ones. It worked in school, but in a big collaborative assignment, it’s far better for me to start small to get used to my surroundings, and then move onto bigger hurdles.
  • Keep up with communication. I really thank my mentor for being so open and willing in communicating with me. Stuff that took me hours to solve, ended up being solved in a matter of minutes thanks to his help.

Notes

  • Documentation. I might end up writing some documentation on the problems I solved and explain what the solution does. It might be helpful for some in the future, but the documentation might be but on the official documentation page anyways.
  • Change of plans. The biggest goal right now is to get Flamenco 3.3 up and running for release. Though some of my items in my proposal will help, it’s not completely focused on Flamenco 3.3. Therefore, as of now, I have been assigned and am focusing on the following tasks to help speed up the release:
      1. Rename Worker Clusters to tags.
      2. Web interface for CRUD operations of worker clusters.
      3. Documentation for the Worker Clusters.
    Any new changes will be updated in my proposal. But, as always, anyone can see the changes I’ve made in the link to the git branch that I forked.

Side Note: I was today years old when I learned there was such a thing as a git GUI. My mentor introduced me to it and it’s a game changer for managing git commands/changes. I recommended anyone to try it out!

5 Likes