DiscoverTalk Python To Me#399: Monorepos in Python
#399: Monorepos in Python

#399: Monorepos in Python

Update: 2023-01-18
Share

Description

Monorepos are contrary to how many of us have been taught to use source control. To start a project or app, the first thing we do is create a git repo for it. This leads to many focused and small repositories. A quick check of my GitHub account shows there are 179 non-fork repositories. That's a lot but I think many of us work that way.





But it's not like this with monorepos. There you create one (or a couple) repositories for your entire company. This might have 100s or 1,000s of employees working on multiple projects within the single repo. Famously, Google, Meta, Microsoft, and Airbnb all employ very large monorepos with varying strategies of coordination.





On this episode, we have David Vujic here to give us his perspective on monorepos as well as highlight an architectural pattern and set of tools for accomplishing this in Python.



Links from the show



David on Twitter: @davidvujic

David on Mastodon: @davidvujic@mastodon.nu

Monorepo definition: wikipedia.org

git-sizer tool for large repos: github.com

git partial clones: docs.gitlab.com

git sparse checkout: git-scm.com

Polylith architecture: polylith.gitbook.io

Article: A simple & scalable Python project structure: davidvujic.blogspot.com

The last Python Architecture you will ever need?: davidvujic.blogspot.com

python-polylith plugin for poetry: github.com

Watch this episode on YouTube: youtube.com

Episode transcripts: talkpython.fm



--- Stay in touch with us ---

Subscribe to us on YouTube: youtube.com

Follow Talk Python on Mastodon: talkpython

Follow Michael on Mastodon: mkennedy


Sponsors

Microsoft Founders Hub 2023

Brilliant 2023

Talk Python Training
Comments 
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

#399: Monorepos in Python

#399: Monorepos in Python

Michael Kennedy (@mkennedy)