Working with python is fun.
Managing python packaging, linters, tests, CI, etc. is not as fun.
Every maintainer needs to worry about consistent styling, quality, speed of tests, etc as the project grows.
Monorepos have been successful in other communities - how does it work in Python ?
As a python project grows (within 2-3 years), you will go down either of these 2 paths:
- Create a monolith
- Modularize your code into smaller packages
In the current world, you will be affected by multiple other libraries you use. And modularity is a requirement for any good project.
But managing multiple modular packages becomes tough over time.
1. How do you ensure coding standards (quality, styling, etc) is consistent across them ?
1. How would we ensure all the pakages work correctly without spending hours and hours of CI time ?
1. How can common logical pieces be modularized further and still be DRY ?
These are common issues I have faced by the 2-3 year mark in any active project. And if not solved quickly can easily cause your project to get messy very quickly.
This talk aims to discuss these common issues and how a monorepo structure which is widely popular in other communities like NodeJS can also be applied to python.
We also discuss how the crux of the issue:
- Making your code structure machine understandable
- How this structured information can then be used to optimize workloads
- How this structured information can be used to automate tasks
And also go into discussing how **monorepo tools** like pants, bazel, nx, etc. leverage this code structure information to simplify your life as a maintainer