I ended up kicking off a conversation on Twitter about people’s packaging pain points after Hynek lamented how the new annual release cadence has a major burden for package maintainers due purely from the fact that setting up, maintaining, and pushing new releases to PyPI is such a major time sink.
Threads you can read
Thea pointed out that even though she helped write the docs it still took her a long time get a project set up:
Ethan pointed out a bunch of papercut scenarios involving setuptools:
Hugo said getting CI running on newer versions of Python can be a problem:
And then Anthony pointed out that he thinks conda-press could help, but was too busy getting ready to give a talk on that exact topic to chat :
The conclusions I drew
- Setuptools confuses the heck out of people and they can never remember all the intricate details required to do it properly (I realize there is a lot of historical baggage, but that baggage has stuck around, e.g. how many files do you have that are packaging-related in your project?)
- Tools like cargo and such for other languages have spoiled people to the point that they want a single tool to drive the whole process (i.e. saying “use Flit” didn’t satisfy as that’s yet a different tool to have to learn compared to everyone else, and thus you don’t have documentation and community support to use it compared to if we had a single tool)
- Some hope conda-press can help
Basically people wanted a KISS solution. I know this isn’t really anything new for people who participate here, but it seems people really want an opinionated, simple solution for the common packaging cases. After that I would assume they want composable tools for those times when the general opinion on how to do something doesn’t work for their special case.
Now I don’t know if this means putting more configuration details in pyproject.toml
so they are shared more across build tools so the common case is consistent and you only kick out to tool-specific details when they go beyond the simple case, going down the pip build
/pip publish
route so the details on how to build your sdist and wheel and get them up on to PyPI is universal and documented the same everywhere, putting in the effort to simplify setuptools configuration (which may tie back into the “more settings in pyproject.toml” idea), or what.