-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add RFC: Move to MVC #53
base: master
Are you sure you want to change the base?
Conversation
This will obviously be a big undertaking, my biggest issue is that we have so many moving parts in OBS Studio, that I'd first try to understand what part should actually be the central "controller" or if there should be a central controller to begin with. The questions that pop up in my mind around that are:
So following those ideas, there could be a "Stream Controller" that manages the state and data of streaming functionality. It receives data provided by the "Frontend Controller" which provides APIs for implementations (OBS Studio being just one such implementation), providing frontend events that implementations need to subscribe to, etc. This leads to more interesting questions: Should the UI be aware that there is a Stream Controller? Or should it only be aware that the Frontend Controller allows you to create/update/remove streaming setups (that can be started/stopped/paused/whatever), with it taking care of implementing the Stream Controller. It would have the benefit of allowing internal changes made to each controller without it cascading into the rest of the architecture. Another question is how to handle configurations: Are configurations a UI concern or a There are more areas of blurred lines: "Studio Mode" allows you to see the current composition used for the program as well as a preview composition for interaction in the UI, so for that to work But if both are independent "compositions" (which could fix the issue of some sources being manipulated in preview actually affecting the program), the "Stream Controller" would need to know which composition is "the one" that is supposed to go out or will the compositor need to know which composition is the "program" |
RFC 53: Move to MVC
Summary
Motivation and Context
The actual code is almost a chimera of software architectural patterns, applying the MVC pattern will allow to untangle the code and make it more clear.
Note, I use mermaid-js diagram so use the link to have them rendered.
Link to RFC