From d751b46308d2b65563020959291ed6723ebb7faf Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Wed, 5 Jun 2024 09:48:04 +0100 Subject: [PATCH] Tweak script, yet again --- slides.md | 63 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/slides.md b/slides.md index 261697d..fc83248 100644 --- a/slides.md +++ b/slides.md @@ -66,7 +66,7 @@ flowchart LR - Django is a web framework - It's a magic box which turns HTTP requests into HTTP responses - What you do inside that box is up to you - - For something like a blog, that's probably as far as it needs to go +- For something like a blog, that's probably as far as it needs to go --> --- @@ -150,11 +150,11 @@ flowchart TD --- @@ -209,7 +210,7 @@ background: https://images.unsplash.com/photo-1518729371765-043e54eb5674?q=80&w= --- @@ -338,7 +339,7 @@ image: https://images.unsplash.com/photo-1444703686981-a3abbc4d4fe3?q=80&w=1740& @@ -565,7 +567,8 @@ backgroundSize: 49% - A single API to help developers use a library - Without tieing their hands - First-party - - Allowing library developers to depend on it instead of supporting every separate API + - Allowing library developers to depend on it + - Instead of supporting every separate API - Scale easily as your needs change - Be easy to get started with for small projects - But feature-packed for larger deployments @@ -597,7 +600,7 @@ class: flex items-center text-xl - API contract between library and application developers - Swappable backends through `settings.py` -- Built in backends: +- Built in implementations: - ORM - "Immediate" - "Dummy" @@ -608,8 +611,8 @@ class: flex items-center text-xl - An API contract between worker library maintainers and application developers - Compatibility layer between Django and their native APIs - Hopefully the promise of "Write once, run anywhere" -- Built-in worker queues - - ORM based (production grade) +- Built-in implementations + - ORM based (production grade, building on the power of the ORM) - "Immediate" (ie doesn't background anything) loaded by default - Dummy (for testing) - Hopefully landing in Django 5.2 @@ -680,13 +683,14 @@ for user in page.subscribers.iterator(): - Let's look at the same code example as before - This is tied to Celery - If want to support RQ too, I'd have to duplicate some parts -- Instead, let's rewrite this once to use `django.tasks`[click] +- Instead, let's write this once to use `django.tasks`[click] - Still simple, clear, approachable and easy to use - If I say so myself - If we swapped to RQ: 0 lines need to change - If a new library comes out, 0 lines need to change - If this is in a library, not my own code, I'm not constrained by their preferences - And the maintainer doesn't have extra work to support my preferences + - They can use what they like, I can use what I like - For testing, I can use an in-memory backend - With 0 lines changed --> @@ -726,9 +730,9 @@ EMAIL_BACKEND = "django.core.mail.backends.tasks.SMTPEmailBackend" @@ -753,6 +757,7 @@ class: flex justify-center text-2xl flex-col - The built-in version will hopefully become great - But must be done with careful planning and consideration - Django needs to remain the stable and reliable base it always has been + - Don't want to burn-out the Django maintainers --> --- @@ -778,9 +783,10 @@ class: flex justify-center text-xl flex-col - Scale with your needs - A developer can join a new project and already be productive - A common API also helps library maintainers - - Maintaining a large library is work enough + - Maintaining a library is work enough - Without needing to think about how to move code to the background - If Django can take complexity off you, great + - Use the tools provided to you - Currently, it's not really an option - The burden is too great - No additional dependencies for your library @@ -890,6 +896,11 @@ layout: section - Tell me about all the bugs in my code - The more testing we can do now, the better - There's still work to do + - Features + - Improvements + - Performance + - Scalability + - etc etc --> --- @@ -943,7 +954,7 @@ image: https://images.unsplash.com/photo-1451187580459-43490279c0fa?q=80&w=1744& class: flex justify-center flex-col text-xl --- -# Out of scope +# Out of scope (_for now_) - Completion / failed hooks - Bulk queueing @@ -964,6 +975,7 @@ class: flex justify-center flex-col text-xl - But I hope we can slowly catch them up - Bringing the stability and longevity guarantees that come with Django - Doesn't mean they'll never come +- With your help, we can make these happen --> --- @@ -981,11 +993,12 @@ background: https://images.unsplash.com/photo-1519187903022-c0055ec4036a?q=80&w= - Improve throughput - Reduce latency - Improve reliability - - Gone are the days of needing additional research and testing to find the tooling you need - - You can use the ones built-in to Django - - And as you scale, it's easy to change - - _without_ rewriting half your application - - With all the knowledge to make an informed decision +- Gone are the days of needing additional research and testing to find the tooling you need + - You can use the ones built-in to Django + - And as you scale, it's easy to change + - _without_ rewriting half your application + - With all the knowledge to make an informed decision + - A lower barrier helps everyone! --> --- @@ -1005,10 +1018,12 @@ layout: section - Test it out - Report back your issues - Suggest improvements + - Issues / Discussions are open - If you want to get involved, please do! - There's plenty of work to do - And I can't do it alone! - If you maintain a worker library + - Have interesting use cases - Or have been burned by one... -->