← Back to Show Notes

Transcript: Django’s Evolution - Jacob Kaplan-Moss

Hi, and welcome to another episode of Django Chat, a podcast on the Django Web Framework.

I'm Carlton Gibson, joined as ever by Will Vincent. Hello, Will.

Hi, Carlton.

Hello, Will. Today we've got with us Jacob Kaplan-Moss, who's the current board member

of the DSF, was one of the original contributors to Django, and was a one-time co-benign dictator

for life, BDFL. I can say the acronym, but what does it stand for?

Hi, guys. Thanks for having me.

Benevolent, right.

Thank you for coming on.

So we always ask, and we know we're excited to have you on,

but for listeners who don't know you,

could you give us your backstory?

I mean, we normally ask people how they got involved with Django,

but that's a slightly stranger question.

Yeah.

So in 2004, I was living in New Jersey

and working in New York City for a digital design agency

building websites in php and really hating it um and hacking on uh not php as much as the company

um uh the language was whatever but the company was terrible um uh and i was starting to get

involved in python had been following python people online for a while and i one of the two

of the people who i followed whose blogs i read were these these guys adrian holovaty and simon

Willison. And I hadn't clocked that they worked together until one day, I saw a really interesting

job posting on Simon's blog and read it and went, huh, that sounds like, you know, that matches a

lot of things that I would like to do. And then I clicked a little lower in my RSS reader. And

I saw the same job posting from Adrian and went, wait, these guys work together. This is the same

job. And I got really excited, sent in a resume, got a call back from their boss, a guy named Rob

Curley that afternoon. We talked for a while and he said, okay, great. We've got to get you out to

Kansas for an interview. And that was the first time I realized that this job was actually in

Kansas. I hadn't even paid attention to that part. I'd gotten so excited about the potential of

getting to write web stuff in Python that I just completely ignored where the job was.

So yeah, when I interviewed, I guess they liked me, offered me the job. When I started there,

what I found was that Adrian and Simon had been working for about a year at that point on a

set of tools to build web applications in Python. It didn't have a name yet. We called it the CMS.

And yeah, you know, what more should I tell you about that time?

Well, I guess for me, the interesting bit is the open sourcing. And then, you know,

this so i got into django i had the book that was you'd written you and adrian wrote this book and

it was and i was doing php development as well and it was like it was like written for people

who kind of knew a bit of php and here's django and it was you know oh my so that kind of thread

through there was for me was yeah yeah yeah i mean that was i think as far as i know both adrian and

simon had been working in php before starting to write what became django in python and yeah there

were i think a number of things in the early in the early framework that was sort of like

influenced by design decisions in in php um but trying to um you know build them in a way that

worked with python that sort of fit um you know this this was right around the time of like the

early web standards movement. And so there was this idea starting to percolate at the time of

separation of presentation and content. And that was something that there's sort of a similar idea

in sort of the back end of sort of separation of business logic from display logic or something

like that, which most frameworks at the time didn't really do. And a lot of, I think, the

criticism about PHP as a web development language has less to do with the actual

like language ergonomics and more around sort of the affordances of just kind of mixing everything

together in this one file that makes it really hard, hard to maintain. Well, it was kind of

glorious in a way. You'd be writing your HTML page and then you just, oh, I just need this to,

I need a bit of logic here. Right. Angle bracket, question mark, PHP, and you're off. Right. Well,

it's funny because, okay, so like skipping ahead a little bit, right, we get to this things that

One of the things I'm really excited about right now, Tailwind and HTMX, which are in a way like going back to like, hey, let's put more things into our HTML file.

But now we're doing it in a way that's informed by several decades of web development and isn't, I don't think, creating some of the sort of maintainability nightmares that we had back in the day.

You know, the big challenge that was facing the Lawrence Journal world, the locally owned

newspaper where Django was created was, you know, small local newspaper, not a lot of

resources, just a handful of developers with really lofty ambitions.

You know, we, Adrian especially, was kind of one of the, you know, creators of the sort

of idea of data journalism.

I think he coined that term.

And we had these ambitions of building these sort of interactive news apps that, you know, let readers not just read a story, but actually explore the underlying data.

You know, we did a story about the university's use of private airplanes to fly various people around, most notably coaches and student athletes for like recruiting purposes, which is a cool story.

That's an interesting story, but we did a thing that most newspapers wouldn't have done where we actually ingested all of the flight data and all of the flights that the university's planes had taken in the last few years and created an app that people could click around and see and actually look at those flights for themselves and see the dates.

And we didn't have passenger manifests, but you could infer from like recruiting information. Oh, this is, you know, this is head coach Bill Self flying to Texas to recruit some, you know, hot high school basketball player. And we wanted to be able to build that stuff. But we also didn't have like a big team. And so maintainability was like a really big deal.

You have to be able to sort of, you know, publish these applications on a deadline, but then they have to like, if you find a bug three years later and you come back to a big mess of spaghetti code, you're in a lot of trouble.

So we were trying to really balance this idea of being able to develop something really quickly on, you know, on publication deadlines, but also following our perception of sort of best practices at the time.

yeah that's that's really interesting because the last year i've been bootstrapping an application

single-handedly and it's only now with like the htmxs and the tailwinds and the alpines of the

world around that that's sort of realistic again two years ago would react i just couldn't have

done it because there's too many moving parts but it's like actually it's really possible with

django to build something small and tight with a very small team which i think now that money's

not free anymore it's kind of interesting as well that for me is one of the most like

gratifying and satisfying parts of you know looking back on um what's getting close to 20

years of janko at this point is how through everything that has changed that core of like

let i want to build something really quickly that is still maintainable and still

easy to easy to read the code you know years heck even decades later like that we've we've somehow

managed to stay true to that core principle and that makes me it makes me really happy and it

makes me feel like we were yeah we were actually on to something yeah good good good on the on this

podcast we've often talked about how someone fires up a project from 2011 and they you know they add

a non-delete clause and it just works and that's kind of thing on on this topic just before i let

We'll jump in with something or other.

But recently there's been discussion about the Django template language again

and comparing it to other Django template languages which let you do more things.

But coming from PHP, it's one of the reasons why I still choose to use the Django template language

is that it's very restrictive in what it lets you do.

You have to create a template tag or you have to do it in the view.

And I don't know if you still have thoughts on that.

Do you still like it or do you prefer other things?

So, yeah, I think we, you know, it's always this tension, right?

Like, I think we were more dogmatic about the sort of restrictive nature.

We've become less dogmatic about that restrictive nature over the years.

I think this idea of like separation of presentation from content was, or presentation from logic

was like a really important one for us early on.

And it matched the way that a lot of web teams were composed at the time.

You had a pretty clear dividing line between sort of designers and developers.

That was a fairly stark line.

And so, you know, when we were building the template language, we were thinking about

people who didn't have sort of experience in traditional programming language.

They knew HTML and CSS, usually better than we did, but JavaScript kind of wasn't a thing.

I mean, it was there, and people used it a little bit, but mostly to do obnoxious things like marquees or whatever.

It wasn't at all anything like it was today, and so we were building a language for non-developers.

I think these days, front-end developers, designers, back-end developers, it's much more of a spectrum of a sort of bleed-through sort of set of skills.

There isn't that clear dividing line.

And I think it makes less sense. I think it's very, very hard to do any sort of web development without at least some foundation in, you know, what we're trying to, you know, a more traditional programming language, usually JavaScript, right?

Like, so what I, if I'm working on a web development team, what I can expect from the more front-end oriented people of my team is a lot closer to what I can expect from the sort of more back-end oriented folks on my team.

So it makes more sense. And so in that context, someone with with sort of a more traditional set of programming skills under their belt is going to feel chafed by, you know, the constraints of the early template programming language.

These days, honestly, I usually recommend that most teams start with Jinja as the template language.

I love that that's an option in Django that you can sort of pick and choose.

I still use the Django template language for myself because, you know, when all I've been using this particular hammer for a really long time, it's very hard to change to change those habits.

But, you know, I I think I think if I was if I was creating a framework from scratch today, I would not be building my own template language.

I would be using Jinja. Jinja is great.

Some of the design decisions are a little bit different than the ones that like I would make the ones we made back then.

but not in a way that's, like, meaningful or important.

Right, but there are always design decisions, right?

Everything you choose, there's something that you wouldn't do

if you did again, but you choose something else.

Yeah, I mean, for me, it's really important to identify

the difference between, like, I would have done it differently,

but it's fine, and, like, no, I actually have a problem with this.

And Jinja is definitely in the former category.

Like, I would have made different decisions,

but not in, like, an actually meaningful way,

just in sort of the sense of, like, we're all different people

and we and we have slightly different tastes um i don't i there's absolutely nothing wrong with it

and there are a number of things that are you know actually significantly better about it

partials being a big one that i know you you think about too yeah no i mean so yeah so the

template partials packages i'm just in love with that and i'm hoping we can um get that into 5.2

i'm gonna put a proposal to put it in oh cool um because it's just literally one tag um yeah and

We did a bit of preparatory work in 5.1, which is under the covers, and then hopefully 5.2.

Oh, cool.

That's awesome.

That's my goal anyway.

I wanted to give a plug.

We'll put it in the show notes.

You gave a PyCon 2017 tutorial called Let's Build a Web Framework, talking about, I think

there were six kind of big design decisions.

And certainly for me, I refer people to that all the time, because I think that's the first

time, that's a way to think about, well, what even is a web framework, and what are the

decisions?

And then, as you said, like some things vary and most things are, you know, what's really

important versus what's designed, but it's a really helpful, once you can get to thinking

of it that way, that's a big leap and understand, you know, thinking about Django or any other

web framework, because when you start out, you know, maybe you're new to Python and you're

new to web and you're new to Django and it's really just, everything is magical, but like

getting to the point where you can be like, oh yeah, templating, we're going to need a

solution there.

ORM, we need a solution there.

that's when you can abstract it away

and I think have a bigger picture of it all.

So anyways, I highly recommend that.

It's three hours long.

You can kind of skip some of the code yourself parts,

but I've watched that multiple times.

That's a fantastic resource for people.

I'd forgotten about that.

That'd be fun to revisit that

and see if I still agree with that 2017 joke.

Yeah, I think you were mentioned

also the bit about Jinja and the templates in that one.

But yeah, well, we want to talk about the current day,

But as a way to get there, one of the things that impressed me so much about Django community is the fact that you and Adrian both didn't feel like it was yours to hang on to forever and ever.

I mean, you set up the Django Software Foundation pretty early on, and it's still a relatively uncommon model for open source projects.

Like most seem to be solo person who monetizes it in some way.

I mean, like Laravel being an example or something that was open sourced inside a company, React Angular.

I guess, could you talk about why did you decide to do that? And what was that process like? And

that'll lead us to today where you're back on the board of the Django Software Foundation.

Yeah. So at the time, Django was not, you know, was not any was not the success that it was that

it is today. And honestly, we, we had we had no idea if you had asked me in 2005, like what,

you know what my sort of like greatest ambition for Django was I would have painted a picture

that's like 10 percent of what of like where it's gone now I mean like multiple not just one space

agency but multiple space agencies use Django like that's if you had told if you had gone back

in time to tell me that in 2005 I would have completely not believed you um we were thinking

at the time about um adoption by other by other news organizations and news organizations are like

weirdly competitive if you think software developers have not invented here syndrome

like wait until you meet reporters the the fact that django was owned by another newspaper

even if it wasn't in any way a competitor was enough to prevent or at least in our minds felt

like enough to prevent people from using it. I think we also kind of read the writing on the wall

for, look, like a small family owned local newspaper. You know, it was a little more

common back then, but it was already on its way out. And indeed, like the Lawrence Journal World

is no longer owned by the Simons family, by the local family that owned it. It's owned by,

is it gannett now it's owned by one of the big conglomerates i think we i think we not saw that

coming but like knew that that was a predictable outcome for um you know for the paper and we

wanted to sort of ensure that um wanted to ensure that there was sort of a neutral a neutral owner

of the of the intellectual property that was really our concern we didn't we weren't thinking

about support, we weren't thinking about all the sort of sustainability stuff that's like

a big deal today, we weren't thinking about fundraising, we were purely thinking about

IP ownership. And at the time, the PSF did exist, but they weren't doing any sort of

fiscal sponsorship. I can't remember if we approached the PSF about possibly donating the

to them but i think i think it would have been a non-starter i don't think there was like a model

for that the only software foundation at least that i was aware of at the time was the apache

software foundation and they have a list of rules to join the asf that's about a million miles long

it's really intended for like it's really intended for like large companies that want to sort of like

not just like donate ip and have like a stable owner but like really like run a project under

the auspices of of the asf it's not i don't think there's anything wrong with the rules they have

but it's not intended for like what at the time was like a, you know,

a small project, right. Um, uh, um,

a handful of folks in a literal basement, our office was in fact,

the basement of the new center. Um, so yeah, so the, you know,

forming our own nonprofit kind of seemed like the only viable path forward,

uh, at the time it was sort of something, um, uh, you know,

we did reluctantly and kind of perfunctorily. Um, I made so many mistakes as the, as the first

president of the DSF, it's like pretty embarrassing to look back at. Um, uh, but, uh, somehow,

somehow it worked out. Well, I think the fact that you had that organization, you know, that both you

and Adrian were community focused from the beginning and that you had the organization

meant that it wasn't the case that if the two of you lost interest or had to step away, the project

would die right whereas that seems to be the case with most other ones where if it's one person you

know how do you maintain that 20 years yeah we were heavily influenced by a guy named carl fogel

who wrote a book called producing open source software um uh we we we knew him a little bit

personally and also both read his book and were um really sort of influenced by

i don't know like even though we didn't have grandiose ambitions it felt important to have

um you know have have good governance and like i've learned a huge amount about

open source and community governance since then like i said i made a lot of mistakes but

you know they they weren't you know they weren't mistakes out of uh like lack of care lack of

attention they were they were just they were beginner mistakes if i you know those those are

allowed right beginner mistakes were yeah yeah totally you know and i don't you know in the same

in the same way that like if you look at code that you wrote five years ago and aren't embarrassed

it means you're not learning anything if i look at like you know leadership decisions i made five

years ago and i'm not embarrassed it means i haven't learned anything i don't feel i don't

feel like bad or guilty about it but like i think there's a lot of like myth making that happens

around these type these types of things i think it's important to like acknowledge that we like

we barely knew what we were doing yeah right it's easy to look back and like draw this like really

clear story and like say like oh yeah of course we knew that you know it you know the the the

federal election committee would be using django and and the 2000s no we didn't we had no clue

yes yeah no no entirely i'm sorry i just want to ask one sort of opinion question which is

if you had to say, you know, why Django grew the way it did, there's the Django being awesome

component. And then there's also the rise of Python itself. I guess, how much do you,

where do you put that balance, right? Because there were some other ways to build a website

in Python back then. But I think it's hard for people to understand that there were very few

tools, like this is like Ruby on Rails was just getting started. Like this is before this idea

of a batteries included framework even existed, it was so much more manual. Um, so I guess to put

it to you, um, what's the question? I mean, you know, both Python and Django have really gone up

into the right. And, um, do you see anything specifically that Django did that some of the

other projects from back then didn't that, um, besides just being around that contributed to a

success yeah i mean like i've obviously thought about this a lot like like why like why why did

we succeed to the level that we did um and like you know a lot of it is luck to be sure um you

know timing what timing was everything to to large degree right like you met you mentioned

um you mentioned ruby on rails and i think that's a good that's a good sort of starting point to

think about it, because it incorporates both the luck and some of the deliberate decisions.

We were lucky in that we were able to release Django relatively shortly after Rails came out,

maybe about a year. And we made deliberate decisions that were influenced by Rails. Rails

was really the first backend web tool, at least that I was aware of, that focused on what today

we would call developer experience you know i don't think we had a

strong idea of like an opinionated sort of on rails um the name was chosen for a reason

like the sort of development path um web development was really hard at the time

especially in python um uh and um there was a lot of like what is python's answer to rails

python developers were leaving python in 2004 2005 to go to rails um because again like back

to the different design decisions ruby and python are totally one of those things they're different

design decisions but neither is like better or worse and so to a python developer looking at

hard web development in python or easy web development in a language that's like close

enough to python to basically be like good and good enough a lot of people chose to make to

make that leap so so yeah certainly like a thing we did differently from a lot of other frameworks

at the time was focusing on sort of like ease of use and and developer experience we also made a

really deliberate decision to focus on documentation which is still unusual um and still to this day

sets us sets us apart um uh you know which is which is pretty wild um but to your point about

python i do think there was like a there was a sort of like trying not to use the word synergy

because i hate that word but that's that's the right word there was a synergy there there was

you know python was growing but didn't have a web story and then django comes along and now

there's a web story and so that you know the fact that python was sort of starting to evolve into

the everything language everything includes web development and so you know you have this sort of

like positive feedback loop of like people people learn python for you know some other reason they

They learned Python in college for doing statistics, and then they get a job, and they're still doing statistics, but suddenly they need to do a web app as well.

And hey, look, there's Django.

And so they stay with Python, and so then Python continues to grow.

And so I think that there was sort of like a really, I think, not to get too grandiose about it, but I think Django deserves some credit for the growth of Python.

And I think the growth of Python into every domain deserves a lot of credit for the growth of Django.

Yeah, I mean, with machine learning and data science and all of that coming so big now, Django picks up a lot of traffic that way, I think, as well as the other web frameworks.

Yeah, exactly.

Let's pull forward, too, because you've been away from the board and then a couple of years ago you came back onto the board.

This is your second year now on the board.

And I guess listening to the last few minutes where you've been talking about the development and the growth, the one thing that kind of sticks with me is that Django is kind of that Python 2 to 3 thing.

We've kind of avoided that.

There's been no kind of equivalent in Django, at least since the 1.8 days, 1.9, 1.10.

It's increasingly stable.

And so as a sort of old hand, I'm really like, oh, for me, that's kind of Django's killer feature is its stability.

But it's also a really exciting time in web development.

And so how do we now balance those kind of two, those two really important things?

One is, you know, Django stability and its, you know, API stability policy and all the

rest of it, the long-term release, long-term support LTSs.

But we want to keep growing and we want Django to keep pushing forward at the front of web

development.

You know, we use this phrase boring from that talk about use boring technology because it's

safe but we don't want django to be boring it's not boring it's super exciting how do we balance

what's your you know why did you come back to the board like what's those it's funny those two

things were not related in sort of those opportunities facing django sort of from a

technical standpoint and the reasons that i returned to the board were not related in my

head at the time although i'm wondering if there was something kind of knocking around connecting

the two um uh i think so i'll talk about the board stuff i'll talk about why i can't make

the board in a minute but like you know yeah that that tension between um you know stability

being being conservative about introducing new features and still wanting to be um you know

trying to sort of like be maybe not cutting edge i don't think we've ever wanted to be cutting edge

but i think we've always wanted to be um you know on like the leading edge of the adoption curve of

of web of web technologies right um that's been like that's been a tension in in django development

the the entire time i mean like as early as the first couple of years after django was out i

remember having conversations about whether django was moving too slow right like oh yeah i mean it's

been it's just you know it's been it's been all along and like you know there there are there are

upsides and downsides right like there was a lot of talk oh i want to say you know as as sort of

like react primarily but other similar frameworks um view etc were starting to become super popular

there was a lot of talk about like maybe django should just just drop temp the template engine

drop any html generation become just a pure pure api driven um web framework i'm glad we didn't do

that you know i'm we're starting to we're starting to see a lot of the limitations of you know

these these sort of really heavyweight front-end frameworks um in performance uh well in performance

of the website and in performance of the people developing the website, both, we both were seeing

some real, some real struggles there. And that's not to say that's not like a useful niche, right?

Like, you know, fast API, for example, like shows off what you can do when you start with a sort of

API first or kind of API only, um, not API only, but I would say API first kind of approach to

building a framework. Um, and I'm super glad something like that exists, but I'm also really

glad that that's not the direction that django went in you know going back even before there

there was like remember there was a brief moment when object-oriented databases were like this huge

thing there was a discussion about like should django you know change to support object-oriented

databases i'm glad we stuck with the boring old sequel because turns out works super well

um or non-relational databases after that you know like like it is very very hard

in the middle of a bubble to tell the difference between a fad and something

that's actually going to stick around um uh for all the talk of you know h htmx and alpine

i'm not convinced it's not a fad maybe i don't think it is like my my feeling and my judgment

is that, no, this is actually a solution to a problem we've had for a really long time

and not sort of like a flash in the pan.

But, dude, I've been wrong about that before.

So I'm not convinced.

So, yeah, we are at this – we are at an inflection point.

And I think we're at a point where the – we've swung a little too much towards

the conservatism angle over the last few years.

And I think some of that is related to a lot of people who have been deeply involved in Django development have been stepping back over the last few years for all sorts of reasons, in small ways and in big ways.

I mean, Carlton, you're one of them.

You used to be a Django fellow, and now you're not, although you're still doing a bunch of – arguably, you're doing more work on Django now than you were when you were a fellow.

I actually get to work on Django now.

Right, right. But but anyway, but but my point is that, like, I think I think we're at it. We're at an interesting inflection point. One of the reasons I wanted to come on the podcast is because we're at this point where things have slowed somewhat. A lot of longtime people who have been involved are, you know, stepping back, being being less involved.

And there's a lot of excitement in the community.

DjangoCon US this year had so many new faces and so much energy and so much just like raw,

like I want to do stuff, but it's always been hard to get from, you know, I'm excited,

I've written a little patch or I've done a third party package to like really being

involved in in the in the core community and so i think the challenge facing django's leadership

right now is like how do we get that new blood into you know into the community because with

that new blood are going to come the types of things that are going to sort of revitalize and

make and make you know the move the technology forward the the technology always follows the

people there's not we're not jango's not going to you know my my pet feature is i want jango to

have first class htm htmx support i want that to be built into core but like that's probably not

gonna that's not gonna just sort of magically happen someone's gonna do that yeah and that

someone is probably gonna be someone hopefully is gonna be someone relatively new to jango

development um so yeah we're at we're at a moment where there's a lot of opportunity but also a lot

of sort of uncertainty and like a bit of a leadership vacuum um and that's the thing that's

like the deepest on my mind these days okay so you the words you use there were leadership

vacuum and i want to uh it's a question i have for you it's about the the contrast between the

bdfl model the dictatorship the dictated life model and then the sort of community consensus

model because both have benefits right in a so why you know what's wrong with the bdfl model

and then what what is it that we can how do we inject a bit of the kind of direction giving that

that can bring back so my experience of leadership over you know the 20 years that i've been in any

sort of like leadership role is that every time i step back and give and sort of give power to to

someone else it's a net positive yeah right okay which says some interesting things about my

sort of direct leadership ability no but it's not about you no i'm not not to be self-deprecating

about it I think I think what it says to me is that I'm a better I'm a better coach sponsor

mentor than I am sort of a more directive style leader um and and and like that is the thing that

I've realized about about myself and like has helped me be a lot more effective over the last

you know over the last few years is one of the reasons why I felt sort of ready to take a

leadership role on the board is like I know I understand my own leadership style my own leadership

successes now and i think that's i think the bdfl model only works as long as you have

a more direct a more directive and opinionated style leader and only as long as that person has

the attention and the time and the like lack of burnout to to give to give that attention

right and adrian and i didn't

I mean, there was a long period of stagnation in Django development because everyone was waiting on Adrian and I to make decisions and neither of them, we didn't want to. We weren't interested in that. And it wasn't until we stepped back and abdicated that power that things really took off, honestly.

Yeah, there was a gag I saw on Foster Donner somewhere the other day. It was a while back. But the idea is that the reason that a project needs a BDFL is the very reason BDFL stepped down.

Yeah, I mean, it is very, very rare to find someone who is a good leader in a dictatorial model and is not doing it because of their ego or doing it because they're a jerk.

I mean, like, gosh, Guido is truly a special person to have been the BDFL for Python for so long with a long track record of, like, being nice.

Like, usually BDFLs are either ineffective or assholes.

And, you know, like, I was pretty ineffective.

I'd rather fail in that way than in the other way.

But like, yeah, it is super rare for that model to actually survive for a long time.

I want to pick up on one thing you said, though, because you used the word consensus.

And this is the other reason why I wanted to sort of return to a leadership position.

My understanding of consensus has changed a lot over the last decade or so, having done a lot more like, you know, community, community building, community governance, community leadership, honestly, mostly in ways outside of outside of technology, other nonprofit work, other other sort of like intentional community type stuff.

I think most people have this naive idea of consensus meaning sort of like everyone agrees, and that's not what consensus means as practiced by organizations that truly have like a mature and sort of well-developed consensus-driven process.

Consensus is not everyone agrees. Consensus is a group of people who are more aligned with the process than they are with any particular outcome, and they've all agreed on how decisions will be made.

The goal is to make a decision that makes everyone happy or at least content. But when there are situations where not everyone does agree, you've laid the groundwork ahead of time that everyone is more invested in the community health than they are in getting their own way.

And so you have all sorts of mechanisms like standing aside, which is a way of saying, like, I don't agree, but I'm not going to block this. You have various mechanisms for sort of hard and soft blocks and what needs to happen to overcome the blocks.

And I think those sorts of things are the type of work that Django needs to invest in.

We sort of replaced the BDFL model with this rotating technical board, now called the Steering Committee, which is an improvement over a BDFL model, but it's still not more largely community-driven.

And I think, in my mind, the next iteration of Django's governance model involves a broader slice of the community involved in decision-making processes.

Another board member, Thibaut, just held a Django roadmap sort of brainstorming session, which is awesome.

So great.

I'm so glad that he did that.

I hope that something like that becomes a more consistent and even like, like binding part of Django's governance model, not binding in the sense of like, we're all volunteers, we're mostly volunteers, we can't force anyone to do to do anything. But having a well defined roadmap and a process for developing that roadmap that listens to as many voices from the community as possible, I think is sort of the the big missing piece from Django's government.

governance right now yeah i mean so i went to that session and the the 10 there's a post on

the forum about it which gives the details but there were 10 15 ideas came out and all of them

are like you know positive there's there's yeah you know whether you agree with every single one

or not it's like you know what if django had all of these that would be a massive win that would

be a massive move forward even if it you know the cost of it was the ones i didn't want as well but

I take that in a blink, you know, it's, so having a way of driving that, because what's

happened in the recent past is people have felt very frustrated that we can't get this

agreement of exactly how to proceed on a feature.

And so it just kind of hits into the long grass.

And in some ways that's served Jenga well in that we haven't gone down various dead

ends, but in other ways it does risk atrophy.

Yes, precisely.

yeah and and like i think that um i i think that you know we like look we've made mistakes before

we've we've put things in we've put things in django that turned out to not be a great idea

from you know in in with 2020 hindsight and in retrospect and um uh i'm not going to mention

any specifics because i don't want to like call anyone out and i might be and i might be wrong

but like I feel like we've made some mistakes and it's all and it's all mostly been fine and so like

I think we need to like ratchet up our risk tolerance like just a little bit you know

like you know of those 15 ideas is it is one or two of them going to prove to be a bad idea in

the future maybe absolutely like whatever we can recover from that it's just code yeah so I wanted

to ask you about so there's deciding and then there's doing and we just had um last week we

interviewed Deb Nicholson, who's the executive director of the PSF, and she was talking about

things that an executive director does where, or the PSF more broadly, the board there, which I

know you've been on, decides and others largely implement. Sometimes it's board members on a

working group. When I was on the Django board, I felt like the board kind of had to do both.

And as for volunteers, that's a lot to ask. I mean, I know you're now the treasurer again,

which is the role I had. And, you know, that, that's a lot of work. So I, that's a long winded

way of saying, how do you feel about, do you feel like there's a disconnect there between the

deciding and doing? Cause me personally, I came away, part of the reason I stepped down is I felt

like it's more, more than a volunteer can do to go to the next level of these organizational things,

fundraising that people keep talking about absent an executive director, but I've been away from

the board two years and I'm curious what your feelings are on that. Yeah. This was the main,

this was my main motivation for returning to the board. So there are two models of two sort of

big buckets you can put nonprofit boards into. You can have an activist board where the board

does the work of the nonprofit. If someone needs to file taxes, the treasurer fills out the tax

form. If someone needs to talk to a major donor, a board member calls that major donor and has a

conversation with them right the board does the board does the work the other model is a directive

board the board the board directs the board sets high-level goals the board allocates money the

board makes large strategic decisions um but the most of the work is actually is actually delegated

the board delegates most of its power to individuals to employees to working groups

etc etc i'm this is not this is not a consensus opinion of all non-profit people but my opinion

is that the directive board is more effective and then as a long-term better model for a stable

functional you know um effective non-profit organization django the dsf has historically

been an activist board and has made a couple of steps towards being a directive board you know

you mentioned that being the treasurer is a lot of work it's actually not my experience because

we've hired an assistant who does the vast majority of of that of that work well i guess

well when i joined it then people she hadn't she wasn't uh part-time doing that role so it was i

could feel why. And yeah, the fact that Catherine has an accounting degree and is amazing, makes it

doable for anyone, for me or anyone else. Yeah. And that's like a small scale model of like what

I mean by like, like, why should we be so shocked that hiring someone with an accounting background

to do accounting is more effective than having a software engineer with no accounting experience

do the work like that's not surprising that's that's the least surprising piece of information

we could we could possibly have so um and that's a small scale model for where i'm hoping to hoping

to take the the dsf and and like the board's pretty the board's pretty aligned on this this

is not this is not a like a me um me fighting the board thing this is pretty much all of us have

have this same idea that like the dsf will be more effective django itself will be more healthy

if the board can sort of transition to a more to a more um uh um sort of community driven and more

broader base of people working on dsf stuff so we've done um i want to plug a couple things

that we've done over the last you know six months to sort of like to to that end the first is that

we've made becoming a dsf member um uh easier we've it used to be that in order to be a dsf

member you had dsf membership recognized contribution of intellectual property so you

had to write code or write documentation or sometimes we sort of would stretch to like

include conference organizing as like i guess you're creating videos so that's ip like but

you know that that was a very narrow and restrictive version of what being a dsf member

was the new definition is basically contributing to django's mission which is supporting the

framework which is advancing web development um which is protecting the intellectual property of

django that's a pretty broad that's a pretty broad set of activities and it uh and it enables us to

really like admit people as members with all sorts of different, you know, backgrounds.

Like by the new definition, if pretty much anyone who works on an open source Python

package is now eligible to be a DSF member, because can you use that package with Django?

Well, yes, you can.

You've contributed to sort of advancing the state of the framework.

Done.

Anyone who, you know, writes a series of blog posts about Django is eligible.

Anyone who records a podcast about Django is eligible.

We've sort of much broadened that definition in the hopes of getting a lot more people

and a lot more voices sort of into the community and giving them a direct vote and a voice.

The other thing that we've done is we've created a structure for creating working groups.

And this hasn't moved as fast as I would have liked, but it is moving along a little bit.

We've created a mechanism, basically, for people to spin up working groups and to ask for delegated powers from the board.

And it's pretty broad.

That can really be anything, right?

The board can approve a budget, and then the working group can go directly spend that budget without individual approval from the board, right?

the working group can ask for, you know, we've just formed a sort of a social media working

group to sort of own Django's sort of social media presence. And if you look at that group's

charter, we've sort of enumerated a list of things that that working group can do without

explicit approval from the board. The board does not need to approve every tweet. The board does

not need to approve who you know who we follow or what social you know or like what platforms we

post things to etc etc there are a couple of lines that we've reserved for the board like the board

is reserving the right to review any sort of like sponsored post type activity because we're not

sure if that's something that we necessarily want to want to be doing um or and if and if we do how

we want to be doing that so we've sort of delineated some lines but that's kind of the model for where

i'm hoping a lot of um a lot of sort of leadership at the sort of dsf level will happen i'm sort of

hoping that a lot of the sort of informal groups that we've spun up around around django the

the ops team the security team the um uh you know those sort of groups will kind of eventually

reform as working groups so that we can more like we ought we ought to just give the ops team

a designated budget.

We shouldn't have to approve

spending on hosting.

They should just have a credit card

and buy the things they need to buy

to host the Django site, right?

There's no need for that

to be a board decision

and so on and so forth.

So I'm hoping that

we're at this point where we've,

I think, created the sort of

formal mechanisms we need

to sort of transition the board

into a directive model.

But we're kind of not there yet.

And we need people who are

interested and willing in getting involved in, in, in, in any way, large or small.

Um, and we now have the capability and the sort of mechanisms to make that happen.

Um, and sort of, we just need to kind of keep plugging away.

That's why I ran for another term.

Like my, my first term sort of culminated in getting, getting these two things done,

but lay, you know, those are just the, that's just the foundation.

Like now, now we're trying to build the house.

Yeah.

Perfect.

Perfect.

So call out to people, like call out to, um, like if, if you're in the general community

and you want to get involved and you want to, that was a good time.

That was a really good time.

I mean, like I said, there's like this sort of, there is a little bit of a, of a, of a

power vacuum, not, not an entire, not an entire one, but like a lot of the old heads are,

are, are less involved or, or stepping away.

And that's, that's scary because it means that people who, you know, have a lot of

experience are no longer contributing but it's also like a super big opportunity because it means

that it like you know it means that you know new people bring bring new ideas and often like

honestly better ideas and so like you know have it like there's there's a there is a a really

there's a moment right now where it's a really good time to get involved and i don't want to like

i don't want to sugar sugarcoat it too much it's still it's still harder than it needs to be

there's still um there's still a number of barriers you know there's still some sort of

difficulty um but um you know i'll make i'll make a general offer that anyone who wants to get

involved in in django in some way should feel free to reach out to me and and ask for help like i

can't promise i'll be able to but i can at least try to point people in the right direction and

possibly more than that yeah cool um it's not the first time though like the i kind of think that

Django's kind of at least on its third or fourth and coming up to its fifth generation of active

leaders, really. It's not the first time that people have dropped away and a new generation

has come in. Yeah. I'm not, um, I'm not worried about it exactly. Um, it's just like something

that needs to be focused on because you're right. Like every, every time we've had sort of like a

um leadership challenge we've emerged from it stronger after you know at afterwards and i and

i don't see any reason to suspect that this that this will be this will be different okay

i have a question will if you've got one or yeah but go ahead okay so um

one thing that we've talked about um a few times on the show and perhaps with haim and

others but is the gap it still still feels to me there's a kind of gap between the narrow

Django community

I thought the

active contributors

those are on the

forum and you

know maybe the

discord and around

and about and

then the wider

community which is

the user base and

do you have any

thoughts on how we

can sort of I

mean the social

media working group

is one great way I

think but how we

can kind of

get the bridge out a bit better to feels like there's a big gap sometimes i mean i think to

some degree that's just true of um that's just true of like software development and open source

communities in in general right like you know for every one person on the forum or listening to this

podcast or coming to DjangoCon, there's probably 100, 1,000 who punch in, write Django code for

eight hours, punch out and go home. And that's fine. In fact, that makes me super happy, right?

I don't think that just because you write code in your day job, you need to think about it

outside of your outside of your day job. I'm completely fine with that. And I don't I would

love to be able to reach those people to find out what we could do to make their their like jobs

easier, their lives better. You know, like, I'm not really sure how, but I don't think it's a

problem that they're sort of not engaged in the in the community aspects. Okay, the part that I

do think about a lot is how do you take the person like okay so let's talk about django con us i think

about half the attendees of django con us it was their first time going going to a django con

um and most of them had not sort of contributed to at least like the the core of django or like

a major sort of popular third-party app in any sort of like concerted way they all have they

all have the interest they are the vast majority of the people at that conference you know several

hundred people are sitting in a room are relatively new to the community have the excitement came to

the conference, set aside their time, you know, all of that stuff. How do we, how do we convert

them? How do we help them take the next step? That's, that's something I don't think we've

ever done particularly well. And that's the place where I want to really like, I really want to

extend the effort. And I don't, I don't have answers here. I just have questions, but like,

it's, it is the foremost thing on, on my mind right now is like, I've been, I've been using

the term on-ramps like how do we build on-ramps into into the community you know like we we

consistently get people who kind of like come out of nowhere and build something you know something

really big and cool and and new and exciting um uh but it's a pretty you know it's a pretty big

effort it's a pretty big lift and it takes like an almost unreasonable degree of confidence to

be like, I'm going to write thousands of lines of code and I'm going to get it into Django by

force of will, you know, like that should not be required to sort of like get more directly

involved. Likewise, you shouldn't have to run for the board of a nonprofit organization to,

you know, help out with community leadership or fundraising or governance. You shouldn't have to,

you know, plan a conference to get involved in conference organizing, right? Like, you know,

how do we sort of, how do we build on ramp so that people can dip their toe in contributing to Django,

can dip their toe into working on conferences, right? And we have some of those, but we don't

have enough and we don't have, like, clearly defined, like, progression paths for various

different forms of contribution and that so i've been thinking about i've been thinking a lot about

like building those on ramps yeah and like people who are good at making contributions to the orn

and writing the docs that they need to do to do that and writing the tests they may not be good

at these other tasks as well so we need you know we need i'll give you i'll give you an analogy so

like a a hobby i've started to to pick up over the last couple years is is uh packrafting this

is combining backpacking and river kayaking.

There are these inflatable boats.

They're small.

They're lightweight.

You can fold up, put it in your pack, hike for a while, unfold it, float down a river.

It's very hard to get into.

It requires a lot of backpacking skill.

It requires a lot of river skill.

Whitewater is dangerous and requires a lot of technical ability in order to stay out

of trouble.

This blogger and longtime packrafter, Dave Chennault, wrote a blog post that he titled something like Packrafting Progression, which is basically like, so you're interested in packrafting.

Here's what it looks like to go from this sounds fun to I am executing high difficulty level trips.

And he had just sort of these series of like, you know, I mean, step one was like, get obsessed, watch a bunch of YouTube videos, read a lot of books.

You know, step two is get a boat, get out on a lake, get in and out of the boat, paddle around, you know, figure out how to blow it up, et cetera, et cetera.

Like we need like a contributing to Django progression guide.

Yeah. Right. You know, and and like that's that's the type of thing that I'm that I'm that I'm thinking about.

Marvelous. So, Will, have you got any questions?

So we're coming up on time, Jacob. But what are the things in Jake?

What are the things in Django that you're currently excited about that are in the works?

You know, solutions to longstanding problems. Is anything come to mind?

I mean, I mentioned HTMX a little bit earlier. I'm, I am, um, I'm just so excited about it. Like for, for, for, for close to 20 years, it's been like, what is Django's front end story? Django doesn't have a front end story. It's gonna, it's gonna, you know, the sky is falling. You can't do front end development in Django. Django is dead because you can't do front end development in Django.

and like almost the first time i saw htmx maybe the second time i think the first time i didn't

get it but probably the second time and certainly the first site i built in it it was like oh no

this this is it this is this is what the front end story for django looks like like it was like

oh wait we got we have an answer now um uh it's just it's just so easy and it fits with django's

philosophy it's not a silver bullet if you're trying to build something like i don't know

figma like an actual like appy app that runs in the browser i can't imagine doing that in htmx

that seems that seems ridiculous but for the vast majority of what people are building with django

which is still like database driven crud apps that's like we still those are still incredibly

important you know even in 2024 htmx really just feels like the missing piece um can i just say i

think you, you told me at Django con that I think you had built basically Excel with Django and

HTMX like quickly. Do I have that right? Yeah. I, I, I essentially replaced a workflow that

revolved around an Excel spreadsheet with a, um, with a Django app that had, um,

you know, yeah, I mean, it was essentially, it was essentially like cap capturing a bunch of data

about um our clients security maturity uh at at work so there's a bunch of you know there's a

bunch of um practices and we record you know yes no partial and a bunch of notes you know that that

sort of stuff and we've been capturing that in a spreadsheet and yeah i built a built a django app

that you know lets people capture that data um includes you know i prototyped what we call like

multiplayer functionality, letting multiple people update it simultaneously with push sent

through server-side events. And it, you know, having that level of interactivity was 10% more

work than building a sort of old school, you know, form submit workflow. Like, it's just easy. And

it just fits with it fits with django's philosophy in a way that feels like it was designed for

for for building django apps um that that was my take when i first started using it was the way it

just literally like you just do django and then you use the h and it's like it yeah i haven't

changed anything basically in my django and it just works it goes with the gray and there and

there are and there are some there are some missing pieces like the reason like i mentioned

template partials earlier like template partials plus htmx unlocks the ability to do part partial

rendering so that you can have the same view either render a full page or with an htmx request

just render the sort of small snippet that you need to update that's like a really that's that's

a thing that's harder than it needs to be right now um in in in django so you know there's like

little there's little little bits and pieces that people are sort of reinventing on their own

projects and and need to be sort of like consolidated a little bit but by and large

um you know it just sort of it just sort of magically works and it's super it's super

exciting and how are you how are you getting your things online these days that's we always

like to dig into people yeah you know i mean so i i think i think many people know that i used to

work at heroku and uh i still it makes me really sad that um heroku is still around but i don't

i don't trust it that much anymore i think i think it has been unfortunately kind of

slowly circling the drain for for a long time um they had a major security breach about a year ago

that really shook my confidence in um in in the in the platform um uh and there are a bunch of

new things coming out that are kind of like exciting i'm personally pretty excited about

about fly.io um deployment is still like way harder than it needs to be it's still super like

you know we started we started django in in us in in in no small part to like replace php

But we still have never come anywhere close to the ease of deployment with PHP.

You still can't just throw a Python file on a server and have it work.

Um, and like so many people are, you know, like, you know, deploying like most deployment

stories, at least at companies now are like Kubernetes or like the sort of managed managed

services like EC, like ECS, like Amazon ECS or deploying to Lambda and all of these things

are like cool technologies, but boy, they are heavyweight.

I still think there's a big gap in the Python community around deployment.

People who are interested in this place should play with Denno, denno.land.

Denno is a JavaScript variant, kind of, with a deployment environment really baked in the language from the core.

it's kind of incredible and it makes me sad that there's nothing like that for python now denno is

proprietary and you're sort of tied into their cloud platform and it's you know it's vc backed

so it's gonna turn into crap sooner or later etc etc there's a bunch of reasons why i'm not

just gonna like say everyone should drop everything and switch to denno but like

it does make me sad that we have you know 25 years of complaining about how hard it is to

deploy python apps and it's basically the same as hard as it's always been good do you have any

recommendations for what well i'll just personally ask you so i've i've taught both heroku and fly

in my books and i i like fly a lot seeing it but it is also having growing pains trying to

recreate heroku which you know makes sense it's a lot of work specifically though the lack of a

managed um postgres option like a truly managed one um you know in heroku they do have they do

have one now the super base is that no fly has like a first party postgres option now they do

yeah it's relatively new three to six months yeah okay um okay two services that i that i am keeping

a really close eye on are fly we mentioned and render uh render.com i think right now rent i

think right now render is uh if you're new if you're new to web deployment render is probably

your best choice fly is a little more as a little more complex a lot more powerful um but it's more

of like a more of like a set of building blocks than it is sort of like a super slick clean easy

to use experience render is much closer to sort of the the heroku experience down to sort of like

first party managed services like postgres and redis and and um and um a really render also has

um a uh sort of non non docker deployment option i i do i do like docker and i do think containers

are a good good idea generally but i hate teaching them to newcomers i don't want to have to explain

what a docker file is until someone's been writing python code for a year one thousand one thousand

percent that was really the biggest thing is for the 4.2 update for one of it for my beginner's

book i switched to fly but i had to talk about docker and it's like oh man it's just i and i

fly will now fly will now detect a django app without a docker file and generate one for you

which is which is nice but then you have this if you're teaching someone i've been here you're

teaching someone and they go, what is this? And you have to be like, don't look at the man behind

the curtain. That's exactly what it is, right? It's just like, I just, yeah. Yeah. And I don't

think that's a good experience for newcomers, right? Like telling someone, oh, that's too

advanced for you. It's like so patronizing and so frustrating, but also it's, unfortunately,

it's also true. Like I actually can't explain this to you right now. Right. Well, it's like

visible enough that they're like, oh, I don't know that. Whereas like, oh, there's so much other

stuff you don't know either, but you're not worried about it. But that was, I mean, for me,

my, my beginner's book, I wrote it in large part because there was the rails book, which I don't

know if that's still there, where it was like, hello world. And then, you know, Heroku was built

for rails. So it was just like, boom. And I was like back 10 years ago, like, why can't we do

that in Django? Like Django is awesome. Why can't we do that? And so I have continually been trying

to get as close as we can to that. Yeah. But there's, there's another project to plug, which

is uh django simple deploy um which is trying to sort of solve this problem for um for eric's right

app for deploying django apps um i haven't used it myself because like i have docker stockholm

syndrome so i so i'm like tied into that platform and like it's easy for me now and i've forgotten

that it sucks um but um i think like i should spend some time playing with it i've heard good

things i think it's probably a promising a promising idea and hey maybe this is one of the

exciting new things that someone could take to being built into Django someday.

Manage.py deploy would be a pretty amazing thing, wouldn't it?

Yeah. I mean, it's like, well, we could go on and on.

Is there any... Yeah, I was going to ask you, though, what would you change about Django

question, but I think you've kind of answered it. So that's the... Is there anything... So you do

have a day job. We'll put links to it working on security at Latakora. Am I saying that right?

Yeah, correct.

But people can reach out to you if they have more questions about everything.

Yep, I'm easy to find.

Please, please feel free to reach out to me.

My email is fairly obvious.

You can you can DM me on Mastodon, etc.

I'm like, I don't get I don't get so much random email that it's overwhelming.

So please feel free to reach out.

Like, I can't promise to respond.

I can't promise my response will be helpful.

but i can't but i can promise that i won't be annoyed or frustrated or or any sort of negative

emotion so like anyone who's listening who wants to reach out about anything please like please

feel free brilliant that's a lovely that's incredibly generous jacob thank you so much

for coming i'm really just such a good chat i've enjoyed it so much yeah thanks guys i really

appreciated it so we're jango chat.com and we will see everyone next time bye-bye bye-bye