- 
                Notifications
    
You must be signed in to change notification settings  - Fork 158
 
Docs: flowey: Add developer/contributor guide for working with flowey #2278
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a comprehensive developer guide for working with flowey, the OpenVMM project's automation framework. The guide introduces core concepts, architectural patterns, and best practices to help contributors understand and work with flowey effectively.
Key changes:
- Added detailed documentation explaining flowey's two-phase execution model and backend abstraction
 - Documented core concepts including pipelines, artifacts, nodes, and variables
 - Included practical examples and design patterns for common workflows
 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is already useful, thanks! I learned a few things reading through this.
Overall, my commentary is primarily stylistic, since the content either already matches what I know, or is telling me things I don't know.
My general style feedback is:
- Keep the 
Guideconceptual, and move code and code examples into the rust docs. We publish those as part of the build, so you can even link to them directly from this guide. - Use ```admonish rather than the existing Note (for here and other important places)
 
Besides the semantic questions that I asked, I also wonder:
- Do we have code layout or naming conventions? (e.g. 
_jobsfolder,artifact_*.rsfor artifact definitions) - How much processing should I do in an 
artifact? Is it just a record of files? Or should I ever do a transformation in one? 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@smalis-msft sent this my way, and given that I didn't end up sending in flowey docs before I left msft (tbf, I had a very short runway prior to leaving!), I figured the least I could do is chime in with some comments here.
maybe the most important feedback is that you def want to invert the presentation of a lot of the concepts in the guide. start from the base building blocks (steps), go into how those compose into nodes (with requests), how those get coalesced into jobs, and how those become pipelines (with a discussion on artifacts). As written today - this guide is really hard to follow, unless you are willing to read this whole thing multiple times.
also, having a high-level overview discussing the "why" behind flowey seems important to set the stage for the rest of the discussion. i.e: talk about how traditional back + YAML based pipelines are impossible to maintain, rely heavily on non-local reasoning and global state, can't be run locally / ported between platforms, etc...
Adding more content to our flowey documentation to help ease ramp up for contributors in this area