A programming system is a set of tools developers use to do their work. Historically, programming systems have evolved relatively slowly; adopting an entirely new toolchain is generally impractical if it doesn't provide significant benefits. As such, the state of research has diverged substantially from the state of practice: The tools that most developers use are decades old. I argue that more granular extensibility mechanisms are needed to close this gap: Users should be able to import new language and tool features as easily (or more easily) as they import new libraries today. In this talk, I describe a new design approach for programming systems – active typing – that allows libraries themselves to extend all elements of the programming system, including the programming language, compiler and development environment, in a safe, flexible and usable way. This talk will outline the theoretical foundations and describe the Ace programming language (formerly called "cl.oquence") and the Graphite editing environment.