WIP: 103268-job-task-progress #104185

Draft
Nitin-Rawat-1 wants to merge 19 commits from Nitin-Rawat-1/flamenco:103268-job-task-progress into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
4 changed files with 65 additions and 40 deletions
Showing only changes of commit 64fc7bb5ba - Show all commits

View File

@ -126,3 +126,33 @@ enable the race condition checker, and all other kinds of useful things.
If you're interested in helping out with Flamenco development, please read [Get Involved][get-involved]!
[get-involved]: {{<ref "development/get-involved" >}}
## Software Design
The Flamenco software follows an **API-first** approach. All the functionality
of Flamenco Manager is exposed via [the OpenAPI interface][openapi] ([more
info](openapi-info)). The web interface is no exception; anything you can do
with the web interface, you can do with any other OpenAPI client.
- The API can be browsed by following the 'API' link in the top-right corner of
the Flamenco Manager web interface. That's a link to
`http://your.manager.address/api/v3/swagger-ui/`
- The web interface, Flamenco Worker, and the Blender add-on are all using that
same API.
[openapi]: https://projects.blender.org/studio/flamenco/src/branch/main/pkg/api/flamenco-openapi.yaml
[openapi-info]: https://www.openapis.org/
## New Features
To add a new feature to Flamenco, these steps are recommended:
1. Define which changes to the API are necessary, and update the [flamenco-openapi.yaml][openapi] file for this.
1. Run `go generate ./pkg/...` to generate the OpenAPI Go code.
1. Implement any new operations in a minimal way, so that the code compiles (but doesn't do anything else).
1. Run `make generate` to regenerate all the code (so also the JavaScript and Python client, and Go mocks).
1. Write unit tests that test the new functionality.
1. Write the code necessary to make the unit tests pass.
1. Now that you know how it can work, refactor to clean it up.
1. Send in a pull request!

View File

@ -1,5 +1,6 @@
---
title: Download
weight: 2
---
Download Flamenco for your platform here. Each download contains both Flamenco

View File

@ -1,9 +1,17 @@
---
title: Design Principles
weight: 25
title: Mission & Design
weight: 1
aliases:
- /design-principles/
resources:
- name: components
src: flamenco_components.png
title: Flamenco Components
---
This page describes some of the design ideas & principles behind Flamenco.
Flamenco is a lightweight, cross-platform framework to dispatch and schedule rendering jobs for smaller animation studios and individuals at home.
## Target Audience
@ -13,6 +21,12 @@ the farm to execute tasks. [Blender Studio][studio] uses a handful of servers,
and combines those with various desktop machines when they're not used by the
artists.
There is no need to compile or build anything. The Flamenco project distributes
executables and a Blender add-on for you to install and run ([downloads][downloads]).
[studio]: https://studio.blender.org/
[downloads]: {{< ref "/download/" >}}
## Design Principles
The following principles guide the design of Flamenco:
@ -66,46 +80,26 @@ Flamenco uses [SQLite][sqlite] for this.
[sqlite]: https://pkg.go.dev/modernc.org/sqlite
## Infrastructure & Supported Platforms
## Supported Platforms
As the Blender.org project is built on free and Open Source software, Linux is
the main platform Flamenco is developed against. Windows and MacOS will also be
supported, but on a best-effort basis with help from the community.
## Infrastructure
Setting up a render farm is not as simple as pushing a button, but Flamenco aims
to keep things as simple as possible. What you need to run Flamenco is:
to keep things as simple as possible.
- One or more computers to do the work, i.e. running Flamenco Worker.
- A computer to run the central software, Flamenco Manager. This could be one of
the above computers, or a dedicated one.
- A local network with file sharing already set up, so that the above computers
can all reach the same set of files.
What you need to run Flamenco is:
Since Blender Studio fully runs on Open Source software, Linux is the main
platform Flamenco is developed for. Windows and macOS will also be supported,
but will need help from the community to get tested & developed well.
- One or more computers to do the work, i.e. running **Flamenco Worker**. You'll
probably also want to install [Blender][blender] there.
- A computer to run the central software, **Flamenco Manager**. This could be
one of the above computers, or a dedicated one.
- A local network with **file sharing** already set up, so that the above
computers can all reach the same set of files.
## Software Design
[blender]: https://www.blender.org/
The Flamenco software follows an **API-first** approach. All the functionality
of Flamenco Manager is exposed via [the OpenAPI interface][openapi] ([more
info](openapi-info)). The web interface is no exception; anything you can do
with the web interface, you can do with any other OpenAPI client.
- The API can be browsed by following the 'API' link in the top-right corner of
the Flamenco Manager web interface. That's a link to
`http://your.manager.address/api/v3/swagger-ui/`
- The web interface, Flamenco Worker, and the Blender add-on are all using that
same API.
[openapi]: https://projects.blender.org/studio/flamenco/src/branch/main/pkg/api/flamenco-openapi.yaml
[openapi-info]: https://www.openapis.org/
## New Features
To add a new feature to Flamenco, these steps are recommended:
1. Define which changes to the API are necessary, and update the [flamenco-openapi.yaml][openapi] file for this.
1. Run `go generate ./pkg/...` to generate the OpenAPI Go code.
1. Implement any new operations in a minimal way, so that the code compiles (but doesn't do anything else).
1. Run `make generate` to regenerate all the code (so also the JavaScript and Python client, and Go mocks).
1. Write unit tests that test the new functionality.
1. Write the code necessary to make the unit tests pass.
1. Now that you know how it can work, refactor to clean it up.
1. Send in a pull request!
{{< img name="components" size="small" lazy=false >}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 300 KiB