This is great writing: It's concise unbiased no-nonsense, yet not overly dry well structured references galore clear introduction to the problems faced (love the up-front summaries) and showing workarounds (with just enough code to demonstrate both) superb conclusion section To think that I almost gave up my research before stumbling upon this article.. Thank you! (Thank you also for saving us at least a month! Inherited a legacy (undocumented) Django 2 project running in production, and bringing it up to date took almost 2 weeks, so we were thinking about adding static type checking. After reading your thorough write-up though, I think we should be happy that the upgrade and subsequent migration went well..:)