I don't often set out to do "green field" or anything. I have projects I work on, and I have particular issues I look to solve. I do a lot of research up front and then dive in to implement the solution I chose.
I have a few general requirements for software I'm using to solve whatever problem is at hand. I will only champion projects that are open source, so that is one of the first things I check. I look at the underlying technology to see if it is something I consider dangerous/painful (I refuse to use Java-based programs unless there is no other choice, and I avoid Ruby because I've had tons of problems with it in the past). I give preference to projects that use a language I know or want to learn because I like to fix bugs as I find them (python, golang, shell, rust).
For the StackStorm project, the problems I've been working on solving with pants are (1) flaky ci, (2) dependency management hell, and (3) developer experience. We have waisted so much time on CI infra that is spread across multiple repos written in a variety of different languages (including at least makefile, yaml, python, ruby, shell, rpm spec, deb files, Dockerfile) and multiple CI services (luckily only circle and GHA now that Travis forced us to stop using them). The mess of makefiles, random scripts, and Ruby are mostly incomprehensible. Figuring out how to set up a local developer environment is a nightmare. Something else seems broken nearly every time I try to say up a local sev environment. Now that I've spent many full days (weeks?) Studying all of this mess, I have a better idea of where to look to figure out how to fix the infra so I can actually work on the pieces I wanted to work on. Frequently broken CI has wasted a lot of precious time. I've been so annoyed with it all that I've taken to leaving all testing to CI pushing countless "debug" commits, so much that other Maintainers have complained about all the email generated when I'm debugging something.
I read a lot of the pants docs as part of my intense research to understand how pants works and see if it has the potential to resolve my target issues.
So, I created a StackStorm fork that I periodically update with upstream. In that fork, my goal is to introduce pants with minimal changes to the existing code and the mess of makefiles+etc so that pants can run side by side with existing CI infra until the fork is ready to merge with upstream. Only after pants is merged will I work on ripping out the makefile hell.
I've been slowly enabling one tool at a time in pants. I had to run tailor to populate the many BUILD files. And then I've had to edit the BUILD files over and over to try and capture all of the dependency information that pants can't infer. With each tool, I run pants with the one tool over and over until I've captured all of the dependency info needed to run that tool successfully, then I add another tool and do it again. With the
skip_<tool>
parameters, that process should be even easier because I could enable a tool and run it on just one directory at a time.
Once I was far enough along locally to see some positive results, I started working on getting pants running in GHA. That's kind of where I'm at. I need to get constraints/lockfile that work both locally and in GHA.
Much of the value I see in pants is in replacing the makefile madness with a single point of entry. Though I'm gradually adding pants tooling, I will present it to the StackStorm community in more of a big bang switch over. I don't want to add yet another tool (pants) until we can rip out makefiles, thus clearly simplifying the infra.