The Expression Problem, famously coined by Phil Wadler, poses a challenge to programming language designers: How can a language enable extension of both data types, and operations over those data types, without requiring recompilation (cue the Open-Closed Principle)? No existing language supports this in full, in a way that is modular, easy and intuitive. In this talk, I will give an overview of the problem and its consequences; discuss a number of solutions proposed over the past 20 years; and present some recent thesis projects where students have tackled this challenge in different ways.