Upgrading Django - from legacy to latest
2023-07-21 , Terrace 2B

Django is a framework that's been around for more than 15 years, which makes for enough legacy projects to deal with.

In this talk we'll show practical tips and tricks for how to get Django from legacy to latest & greatest.


As developers, we love working with the latest version of our favorite tools & frameworks.

But sometimes, we have to deal with legacy projects & since Django has been around for more than 15 years - there are plenty of legacy Django projects to work with.

We either inherit one, or, somehow, we start with good intentions, but things deteriorate and we end up running Django that’s 2 or 3 major versions behind.

No matter how we end up in that legacy situation, we usually have 2 choices:

  1. Stay within the boundaries of the existing project.
  2. Try upgrading Django & the rest of the dependencies.

This talk will cover point 2, giving practical advice, derived from experience of migrating large legacy Django projects from versions 1 & 2, all the way to latest & greatest.

We will approach the problem in a structured way, going through different scenarios and showing practical steps, tips & tricks, so a human can deal with the challenges of upgrading a legacy Django project.

We will talk about starting from scratch vs. gradually upgrading.

The talk will cover the following topics:

  1. We will start with the most important question - How reckless can we be?
    • Is this in production?
    • Is this mission critical?
    • Is backwards compatibility important?
    • Are there tests? Automated? Test cases? Documentation?
    • Are we building from scratch or are we gradually upgrading?
  2. Next, we will go through various scenarios.
    • We are dealing with Django 2. What now?
    • We are dealing with Django 1 & Python 2. What now?
    • There are core dependencies that are no longer supported. What now?
  3. Finally, after we managed to get to Django 4, we will talk about how not to end up in the same situation again.

The end goal of the talk is to show that keeping up to date is possible, even if we start with a big legacy project.

The talk should serve as inspiration & example for those, who want to push their legacy Django projects forward.


Expected audience expertise

intermediate

Generalist. A multi-disciplinary problem solver & a technical team lead.

Currently leading & growing teams at HackSoft.

Software developer with 10+ years of experience, studied Computer Science in the Faculty of Mathematics and Informatics, Sofia University.

Founder and CEO of HackSoft (Sofia based software company with main focus in Python, Django and Scala) and HackBulgaria (Programming courses, based in Sofia / Bulgaria with main focus of getting the students ready for their first job - either as an intern or a junior developer. Mainly focused in Python and Java)

Former teacher - Functional Programming classes (Racket / Haskell) @Faculty of Mathematics and Informatics , Programming with Python and Django @HackBulgaria.

An open source contributer to Django Styleguide - https://github.com/HackSoftware/Django-Styleguide

GitHub - https://github.com/RadoRado/

Pragmatic problem solver, Technical team lead, Fullstack Senior developer and VP of Engineering @HackSoft.

Software Developer with more than 10 years of professional experience including 8 years of experience with Django, Python, Java Script, React. Keen on functional programming, with an eye for CSS. Graduated Computer Science in the Faculty of Mathematics and Informatics, Sofia University.

Former teacher - Computer Science classes (C / C++) @Faculty of Mathematics and Informatics , Programming with Java @HackBulgaria academy.

GitHub - https://github.com/kdkocev/