Hello www!
In whetting my teeth on setting up the Commifest Workflow concept I learned quite a bit about the existing architecture of pgarchives, pgcommitfest, and cfbot, and have decided that my years of being a software architect, and a current desire to learn Python, combine well to become involved in improving these tools. Attached are two patches each for pgarchives and pgcommitfest with my first steps down this path. I post them now, in a somewhat early stage, to get some confirmation that I'm on the right path and feedback and background for things to consider when I'm able to come back to work on this later in the month.
There are no patches for cfbot since my goal at this moment is to reimplement it within pgcommitfest - since that is the location of all of the inputs and outputs (except the patch file content) and in doing so we can formally bring cfbot into the infrastructure fold. That said, this is not a quick project and there is definitely the possibility to implement some of these changes piecemeal to improve cfbot in the short-term.
I've produced a 10min demonstration video (UI and some code highlights) to go along with the commit messages.
I've also set up PRs against my personal forks for these.
pgarchives-0001: Jelte's development environment changes with tweaks by me.
pgarchives-0002:
Implement advanced search form (why is this in pgweb?)
Enable display one search result per thread (long-standing desire of mine)
Teach it to classify attachments as patches per cfbot logic
Recent thread viewer with a "create patch from thread" action
pgcommitfest-0001: The API endpoint for the pgarchives-0002 patch; actually create new patches from thread data.
pgcommitfest-0002: Preliminary integration of CFBot into PGCommitfest.
Ring queue implementation for CFBot work acquisition
Class-based Template Pattern for CFBot processing (core template in process(), subcomponent templates like PatchApplierTemplate)
Note, the pgcommitfest patches do not include the open PR for Workflow
Pointers to reference materials for this stuff are welcomed. Suggestions for the "correct" way to do stuff that is still a bit sloppy are also welcomed, otherwise a considerable amount of detail, like paths for the URLs and modularity, are going to change once I can get back to this. Comments or code related to authentication and authorization concerns are most welcomed as that is my least familiar area of knowledge.
Thank you in advance for your time and consideration in these matters. And for all the hard work you've all done in setting this all up in the first place and keeping it running day after day.
Sincerely,
David J.