How to design and implement extensible software with plugins with Simon Willison
summary
Live coding demonstrates a working plugin lifecycle: building small packages, running tests, pushing releases, and deploying to PyPI via GitHub Actions to add features without touching core. Details include using Pluggy and Python entrypoints, a new Django plugin system called djp, real examples (dataset with 158 plugins, llm supporting ~200 models, llm plugins adding local and API models, demo blog/header/database-url plugins), cookiecutter templates, and a gzip plugin shipped as proof it works.
AI-written summary · about
chapters (18)
- 0:00Extensible software with plugins
- 1:02Plugins as architectural concept
- 3:07Plugins in Data Set project
- 4:11Plugins for experimentation
- 6:16Live demo: LLM plugin system
- 10:27Python for building plugins
- 11:33Introducing pluggy library
- 11:53Live coding: Add LLM models
- 14:23Deploying plugins with GitHub Actions
- 15:50Plugin lifestyle advantages
- 17:14Django plugin system design
- 18:38Live demo: Install Django plugins
- 23:17Data Set Cloud plugins
- 25:44Live coding: Django gzip plugin
- 32:33Designing plugin hooks
- 35:43Forward compatibility in hooks
- 37:29Async in plugin implementations
- 38:32Q&A on plugin systems
related talks
27mPlugin ecosystems for Python web-applications
18mDesigning a plugin architecture in Python
19mPatterns for Extensibility
01h 11mKeynote: How to Write a Popular Python Library by Accident
01h 06mSaturday: Lightning Talks
59mLightning Talks
01h 10mKeynote 2: Robust Python and Why It Matters
38mLightning Talks and Closing Address - Sunday.
