1. Agree on the name but not sure whats better. i don't think it should be edk2-tools because the idea of this is to be a library of support code but not the tools themselves. This limits dependencies and keeps the library free of business specific logic. The second RFC will be for a new repo that is more like edk2-tools. So maybe this could be edk2-tools-library?
2. Future direction (edk2 having a dependency on this package). I don't think this library will achieve my goals if it doesn't start to pull in support libraries from basetools. The simplest example is the parsers. It would seem foolish to have two copies. It would be great to have one set of parsers that could be used by tool developers as well as the edk2 build process. Opening up those tools would make writing edk2 analysis tools much easier/faster/better.
3. Pip/distribution/versioning. I would definitely not want my version of this pip module dependent on my OS distro and version. This will be something tied to the edk2 platform i am building. These are things that are somewhat stable but i would expect more churn than an OS and different platforms will have different needs. i also don't want to sign up for working with OS vendors to get this into their package management. With python 3.5 and newer there is a built in concept of virtual environments (venv). This is how i would handle this problem. The Pip modules and their dependencies do not impact the global packages. Only the virtual environment gets updated and a virtual environment can be trivially created/deleted. This is also expected if you are building platforms that might be running different versions of edk2 so its a good idea to create a venv for each code tree on your system and activate that venv when doing builds in that code tree.
4. Squash merge/PR process. We discussed this at length at plugfest and unfortunately i don't think there was any silver bullet. Patchsets and the edk2 process today are a relic of emailing patches. When you move to pull requests managed by a server with policy and automation i think the only feasible solution is squash merge. Now i don't understand why squash merge means bad commit messages and lost info. The idea is that a single PR should be a single feature. When it gets squashed the commit message should reflect the feature and be of high quality. If the PR was too big and contained numerous features then the PR should be split up. Squash merge allows your automation to easily guarantee bisect-ability, build-ability, and that each commit will pass the requirements. Having one continuous PR optimizes your review process/comment tracking, etc. I would be strongly opposed to opening new PRs for every new "version".
Thanks
Sean