Transcript: Django Fellow - Tim Graham
Hi, and welcome to another episode of Django Chat.
I'm Carlton Gibson.
I'm joined here today with um, as usual, with Will.
Hi, Carlton.
Hi, Will.
And we've got a special guest today, Tim Graham.
Hey guys.
Hi, Tim.
Tim is uh, well, who what can I say about Tim?
He's Django's number one all-time contributor, and he's been the Django contributing to Django for as long as I've been using it, and he's just um finished four years straight as the um Django Fellow.
So we're so privileged to have Tim in, and we wanted to talk to talk to Tim and get his take and um well hope you enjoy it.
So, Tim, I I know you've spoken about this uh at Django Under the Hood, which we'll link to the video, but I was wondering if you could quickly just talk about your background and how you got involved with Django initially.
Sure.
So um back in college um I had an independent study project and um somehow I got involved with Python and then with Django as part of that, and um just fell in love with the documentation and the tutorial and seeing how much functionality you could get with a few lines of code for the admin and uh yeah, it's been a journey since then.
So what version of Django was this when you were back in college?
That's a good question.
Um I'm thinking maybe around 1.4 or so.
Okay.
So more stable than pre-1.0 for sure.
Yeah.
And then had you how much had you done with other web frameworks and programming before uh Django itself?
Uh I had done a little bit with um Java in school and also PHP was what I did a couple of small sites with.
Um picked that up in school.
So that's cool because I started with PHPs where everyone seems to go from PHP into Django and Python.
It's like for me, I always describe it as that glass of um iced water, you know.
It's like, ah, what a difference.
I know PHP's not like.
Okay, so one thing I wanted to ask about was the um beginnings of the fellowship program and how that came about and you know it's its origin because Django's kind of dependent upon it.
Yeah, so um I worked at Google for a while.
I worked at a startup after I graduated school, and then we were acquired by Google and uh worked there a little while, and then um as our as our software was transitioned over to the Google stack, uh they didn't need our team anymore, so I decided I wanted to stick with Django and so I took some time off after I left Google and then sort of did the fellowship job on a volunteer basis for a number of months, even though it wasn't a formal thing
Uh and that that kind of kickstarted the the Giango Software Foundation board to get the program going finally and uh run a pilot.
So when you say you're doing that on a volunteer basis, was that you were putting in like a l a lot of hours there?
Yeah, probably part-time, um, maybe 20 hours a week or so.
So that's a big commitment.
That's a big, you know, that's a big ask for someone to give voluntarily.
Yeah, it was just fun for me at the time.
Uh but that was a lot, that was a lot of tickets ago.
Yeah.
What was it?
Do you remember the sort of um rough ticket number when you started contributing?
Because we're on about 30,000 now.
Oh, I I found it.
I have the I found the link, right?
I I found the link that you mentioned in your in your talk, actually.
9,347.
So 20, 20,000 or something ago?
That was 10 years ago, yeah.
And so well, I I'll just jump in since you were both Django fellows.
If you could talk about, you know, how how did Django work before there was someone even part-time focusing on the releases and you know, because I think a lot of us are are used to modern Django, which has a regular release cycle, like 2.2 just came out.
What was the process and who was involved before the Django Fellowship program started?
Right.
So I know uh James Bennett and Jacob Kaplan Moss were the releasers, and but they weren't necessarily triaging all the new tickets and merging most of the pull requests like the fellows do today.
So it was more sort of like when the commute when there's a consensus on the mailing list or something that a release is ready, then we'll do it.
Um there wasn't a there wasn't a formal eight-month release schedule like we have now.
It was just sort of you know, when things are ready, then we'll release.
And so it'd be like more feature-based, it'd be like, okay, a year might go past and then okay, we've got a group of features together and we'll put those out.
That's my understanding.
I wasn't super involved with the process in those days, but okay.
And how did the like so you say the board because of your um activity, the board kind of got together and came up with the fellowship program, but was that because they were like, yeah, we've got to keep this going, we've got to find a role, or what do you
Yeah, I th I think they saw the advantage that having a per person full-time or semi-full-time had and really helped move things along and
and then I wondered um something you both are aware of that I only in the last year uh
learned about was sort of Django core things such as the Django Under the Hood conference, which I guess no longer exists but was a gathering in Europe of uh contributors to Django.
I was wondering if we could talk about Yeah, just the community, especially when you started to today, because you know, you're uh best based based in Pennsylvania, it's a global community.
How do you you know that there are these in-person meetings, right?
It's not completely online and digital.
Um yeah, I th I really enjoyed those conferences, the under the under the hood in Amsterdam.
And at that time, I I feel like the last few years the importance of the core team has kind of decreased.
In fact, there there's a proposal floating around to sort of get rid of the core team, and uh that's another topic.
My thought on the core team probably I think it's like a good thing in that there's all these people who are who like I wish we had a Hall of Fame or something where all the contributors that have made massive contributions in the path are past are recognized, but the the this this thought that there's 50 people that are contributing to Django, it's just not the case, right?
There's there's Simon and Claude and you and you know John and half a dozen, but there's not you know, there's not this this massive roster of the great and the good.
Uh and to get rid of that as a as the governing body, I think is probably a good thing.
What exactly we replace it with, I don't know.
Right.
That's what I try to do on the website with the um technical team.
In other words, like these are the people that are actually active, so we can see that as opposed to the core team, which is just you only add people and never remove.
Well, I think I mean again, I can speak as being the newest to Django of the group.
I I think it's important and kind of mind-blowing to find out who's actually doing the work.
Um, because so many people are doing so much work, almost everyone on a volunteer basis, and they're not doing it for pats on the back, but I think it's important for people to know who they are and how much they're contributing because Django seems this amorphous millions of people use it thing.
But then uh I mean Carlton discussed this in his talk at DjangoCon where we first met last fall.
It's it's really just a handful of people doing the majority of the work.
So I think they should be recognized a little bit more.
Yeah, it's my it's my
no disagreement among this group, right?
Well, right, but it it's my one concern about the um the dissolution of core proposal is that the people who are doing the work need they've got to be recognized.
We've got to say, you know, we've got to put our hands together and say, well done, thank you.
And and and that bit is missing from the proposal as it currently is floating around.
So I that's my one concern with it, is all I can say.
Yeah, well, maybe um it'd be great to Tim, if we could have you just talk about the the work of a fellow and how you've evolved that over time, because I think that leads into you've really kind of helped train Carlton, who's now training uh another jingle.
I don't know if I'm training more.
Marius knows more than me already.
Well, the the evolution of the role, maybe and kind of things you've you know, how you spent your time and what you thought about when you started off, Tim, versus you know, now as you're handing it off.
Sure.
Um so I'll just go through some of the tasks that are listed on the uh sort of job description each time the fellowship opens up.
They put out a post on the Django blog.
Um one of them is monitoring the security at Django Project.com mailing list, ensuring security issues are acknowledged and responded to promptly.
Um so there's a security team of about maybe 10 to 15 people who are active in various capacities.
There's a funny story, one of the guys I worked with, he sent a report to this security list and he he's on the he was on the Django team for a while and he's like, I th I thought there would be like this magic group that would just, you know, take care of my issue, and it turns out it was a lot more complicated than that that and nobody really knew how to solve it.
So it's I mean it's a real group of people with limitations and
yeah, and just trying to do the best, right?
You don't necessarily know what you know a security issue comes in.
You're like, well, okay, yeah, I see it's a problem, but how's it to be fixed?
You know, it's not clear that you know I don't know, and people on the list are knowledgeable, and between the group, maybe we can come up with a a a good solution.
I think too as well, Tim, when you started um the full-time role, there were a number of just tickets and security things that were kind of languishing, right?
Because contributors weren't getting the feedback that they wanted.
Um, whereas when you when you were able to come on part-time, that really sped up development, right?
Because to have someone who could really push these things through and do the the hard work of getting consensus on things, is that right?
Yeah, there's a couple of big contributors who had proposed a number of pull requests and they just sat there and didn't get any attention.
So when I started working on them and uh that really kick started those people's uh future involvement with Django.
And then the security team, I assume it works in a similar way as so the way you got involved is you were focusing on documentation and then you were invited.
Is that the same thing?
It's people who are already commu uh contributing to security on Django and then at some point are invited to join the the core team.
Is that how that works?
Yes, that's right.
And then is it does it just keep growing in size or at some point people sort of back away, or is it how how does that work?
Uh I have tried to send out mails to the security team and say, you know, like if you're not involved anymore, maybe you want to remove yourself from the list, and that's worked reasonably well, I think.
Yeah, I think people are happy to step down.
They you know they know they're not active.
I think some people sometimes um people feel bad that they're not active and you shouldn't feel that, but equally, you know, they can step away.
Um so beyond security, I know there's some other things as well that the fellow does.
Sure.
Uh fixing release blockers and helping to ensure timely releases.
So as we talked about uh previous to the Django Fellow program, releases sort of happen whenever they were ready.
Um I did a community survey a number of years back, and uh based on the feedback of that, we adopted the eight-month release schedule.
So there was some people, I think the choices on the survey were six, eight, twelve months, something like that.
And uh I guess we landed on eight months, the sort of middle ground in terms of having to upgrade too often or there being a big lag between features and bug fixes and when they were actually released.
Release blockers or regressions since the previous stable version of Django or bugs in new features.
So the fellows will work on fixing those issues to help ensure the releases are on schedule.
Yeah, because those ones can't just sit there.
Like it's you know, they need to be fixed timely.
Can you explain, Tim, about the um long rate long-term re um long-term support versions and how those fit in with the major releases and the version numbers?
Because Will was asking me about this in another episode, and I I sort of bumbled through it, not knowing exactly, but you probably helped you probably created that policy or helped create that policy.
Could you explain about how the version numbers work?
Let me uh look look that up so I can just talk through it.
So, starting with Django uh 2.0, Django will use a loose form of semantic versioning, such that each version following an LTS will bump to the next.
So starting with 2.0, 2.1, 2.2 will be the LTS, and then following that it'll be 3.0, 31, 32 will be the LTS.
So the idea there is that um in Django 3.0, for example, some deprecated features will be removed, so that upgrading from 2.2 to 3.0 uh may require a little work on on your end.
But you should be able to upgrade from 2.0 to 2.1 and 2.2 without much work.
And there was one bit that I really wasn't sure about.
Something about you should be able to upgrade from say 1.11 to 2.2, i.e.
from one LTS to the next without having to go through the intermediate versions.
Is that right?
Or have I just picked it up from the ether somewhere?
Well, the Django uh upgrade guide recommends upgrading one version at a time.
Uh that's what I would suggest, at least locally, you know, install uh if you're on 1.11, install 2.0 and get your test passing there and then go to 2.1 because there can be some backwards incompatible changes in uh each version, but those should be relatively minor, hopefully.
But in principle you're meant to be able to jump to the LTS or is that not really the case?
Uh well the idea is you could you can jump without having to make changes for deprecation.
Right.
Ah, okay, okay.
If your code is running deprecation free on 1.11, then you can jump to 2.2 and be alright.
In theory.
Yeah.
Okay.
Carlton's sweating because that was the advice he gave as as well.
Yeah, but
in our episode.
And I I literally, before walking in here, someone in my co-working space uses Django.
I was like, hey, 2.2 came out, and he's like, Oh yeah, like I'm on the long-term support thing, so I should do that.
And I was like, Oh, you should listen to the podcast.
You should phew.
At least the at least the the what I said last time ties in with what Tim just said there.
Yeah, yeah, well, you said yeah, you said similar things, Carlton.
So okay.
And so the other big thing for me is the triage work because there's like every morning there'll be, you know, two, three, four, five new tickets opened up, and um so I guess there's there's two aspects.
Can you tell us about that?
And then the follow-up is how do you sort of maintain a rhythm with that?
Because it can sort of this it's a bit incessant.
Yeah.
Uh so triaging involves trying to reproduce bugs.
Uh, a lot of times reports will be against maybe the current stable version, and then maybe the bug has been fixed in master.
So part of that is just making sure the issue's still valid on master.
I try to put the the commit uh hash where I reproduce the issue on the ticket.
That way, if somebody comes along later and says, Oh, this has been fixed since then, then you can easily bisect and find out the commit uh where where the issue was fixed, and then you can check if an appropriate test was added along with that.
Okay, yeah, that's kind of
um commit.
Um another aspect of triage and maybe the ticket is a duplicate of some issue, so um looking at tickets for a number of years, you sort of get to know most of the issues, and I usually use Google to search tracks.
So if you put site colon code.jjango project.com into Google and then put in a few keywords, you can usually f well I can usually find the the ticket that I'm thinking about as as a possible duplicate.
Yeah, and that's where your knowledge of the issue tracker really like just stands out because you know I'll I'll triage a ticket and I'll be old, you know, this, this, this, this, and then Tim's like, ah, then this is a duplicate of this one.
It's like, ah, thank you, Tim, because there's like 13
You can also use the com
There's 1300 open tickets.
If you use the component filter, that can help too, and just quickly look through and see if any keywords are matching.
Yeah, narrows it down a lot, like from 1300 to say 100, or makes it easier.
And I think that's a good good way for new contributors to to look at track too, is just think about an area you want to work on and focus it down by that by a component.
Like maybe you want to do something with migrations, you can look in the migrations component and you'll see maybe 50 tickets instead of a thousand.
Yeah, and what what do you think um about new contributors?
Because it it for me I was maintaining Django filter and Django Risk Framework and Django Crispy Forms outside of Django, but for a long time I wasn't contributing to Django itself, and it was a bit like okay, eventually I got there because I had a bug which affected Crispy Forms.
I was like, oh, I need to do this, and actually it wasn't that bad, but you know, I was a you know a maintainer and yet I was still a bit intimidated.
Um what sort of thoughts might you have, advice for us as to you know how we can make it easier for new contributors, or is it just necessarily how it is?
Yeah, I think how you came to it having a problem that you need to solve is a good way.
Um it seems like a lot of people come along and they don't really have a problem, they just want to get involved.
I think it can be hard there, especially if you've never used Django.
Yeah.
Um because you don't really know what the real problems are.
I mean there's tons of open tickets of small, minor inconveniences that aren't really high priority, and if if they're not a high priority for anyone, then I'm fine leaving the ticket open.
For as long as it takes.
So w uh Tim, I'm wondering w what would you say are the major issues in Django in terms of like what are the sort of areas that you look at and go, hmm, that's maybe new thought is involved or or some sort of breakthrough, or are there specific ones that keep coming up?
I mean uh you know, the admin, right?
That's that's that's one that for legacy reasons, but I'm curious what else as a fellow kind of
I don't have a lot of complaints.
Uh but on the other hand I don't use Django a whole lot these days.
I know we're interviewing Tim, but I've always got an opinion.
The um the admin, like it's great, it's super, but there isn't much room, I think, for adding new features.
And you know, because it's so complicated already, the API is so big on it, it's like, oh, can we just leave it alone?
Like it's good, it's powerful, but until we've until we tidy it up a bit, I'm a bit scared of oh, let's add on another bit of API, another option on the model admin.
It's like, oh, but there's 50 already.
Yeah, no, I feel the exact same way every time there's a new ticket for like, oh, can we add this new hook to customize it?
It's just like we're gonna have so many hooks that it's just gonna be unmaintainable, I feel like.
But so if we if we had a magic bullet or a million dollars, which I think was the cost estimated to to rejig it, like how how would each of you right if you had unlimited time and money, what what would it take to properly redo the admin?
I don't I don't know that it needs to be redone.
Um fair enough.
I mean it's supposed to be for for basic scaffolding of like a simple admin interface.
You're not supposed to build your user-facing UI in it, it's not supposed to be pixel perfect.
And I feel like all the requests are just we want to do every single little thing with the admin.
And I just not sure if that's feasible or
sometimes it might just be easier to build a Django view.
I mean, if we could s we could extend it a slightly so you could um root views so that they appeared within the admin interface more easily, that might be quite handy because then people could and there I mean there are third-party packages that do that, but maybe in addition there.
I agree with Tim.
I don't think it needs to be replaced.
I just like some work, you know, if somebody were given three, six months of good effort and they they knew what they were doing to tackle a lot of the bugs and maybe tidy up some of the more messy parts up to small refactorings just to make it clearer, that would probably be enough.
I think it it's super powerful.
Yeah, well, maybe that's a chance to talk about uh again, you you both are well aware of this, but I'm I I wasn't until recently shocked that I think it's the total budget is $200,000 a year for the is it the Django Software Foundation of of which the fellows is part of that?
Do I have that right?
That's the fundraising goal listed on the website.
I'm not too fairly.
Okay, that's the goal.
But I mean that as we were offline discussing, I mean, that's that's like an entry-level salary at a Fang company.
Um I guess to me, I think, well, what you know, what what what would be done if, for example, it was a million dollars a year?
Or is it just, you know, it's so much of it as volunteer anyways that money isn't really gonna help because you just need super dedicated people who
Yeah, um I'm not really sure.
I can give one data point.
You sort of put in when you apply for the fellowship, you can request your hourly amount.
And um I put in an amount that was not when I think back to it, it's it was roughly one third of my compensation at Google.
Um, and then as a contractor, you don't get any benefits and you don't get any vacation.
So I don't know if how the other fellows are compensated, but at least for based on US standards, it's quite quite a bit lower than if you're being employed at a company.
But also, like you're you're in Pennsylvania, right?
I'm in Spain.
Um, these aren't um Marius is in Poland, these aren't Silicon Valley, this isn't Los Angeles, San Francisco, Boston.
So that was my question.
Like, should the DSF continue that and just take advantage of that geo arbitrage and hire programmers where the dollar is stronger and where the cost of living is low?
From an outside perspective, it seems crazy that that's even a question because it should be the best person.
But uh of course, given the limited budget, uh that's a legit question.
I mean, I used to live in Silicon Valley, I don't anymore for that reason, but given how much of an influence a Django Fellow has, that seems crazy.
Again, you guys won't disagree with me.
I'm just trying to, I mean, but A, I think, you know, historically Tim's just been the best person, um, quite simply.
And I'm not gonna talk about myself.
I'm you know, I'm I do the best I can.
But Maris is just I'm so excited about Maris being hired.
I think you know, I was worried when Tim was stepping down.
I'm like, oh my word, Tim's stepping away, he knows so much.
And then they they chose Maris, and I'm like, oh wow, I can't actually think of somebody better.
That's that's just super.
Um so I'm not sure that the the financial situation means you don't get the best person.
Like it's just the you know
money isn't gonna be the reason why someone would do it.
But you know, they the the DSF sponsors Django girls, they they give money towards the Django cons, they um, you know, the the the conferences in Africa and other places where they're trying to uh grow the community.
So it it's not just the I mean the fellow pro fellowship program is the biggest expense, but Frank said at DjangoCon that you know it he's he he could raise more if there were specific problem projects to to fund.
Yeah, I think it would be interesting to talk talk to uh maybe the president or someone on the DSF board and get their take on this.
Yeah, yeah, yeah.
I did, yeah, I mean I did want to talk ask you Tim about how you handle the the sort of how you don't get burnt out.
Uh you know, to do the fellow role four years full-time, you know, how you handle that incessant nature of it.
And it's not just from because you're okay, as a fellow you're paid, but volunteer open source maintainers, they suffer from burnout all the time.
Yeah.
Um, I think I did get a little burned out, and I think some ideas about how to avoid that uh if I had to do it over, would be to set up a separate email account uh so that notifications about Django stuff didn't come to my personal email, especially on evenings and weekends, and that maybe would have let me disconnect a little bit more.
Yeah, I I wrote that I don't really have the same excitement for the work as when I started, and that could just be part of that is just doing the same thing over and over.
It gets kind of monotonous, and um but Django development was less structured back then, and it was really fun to set up a continuous integration.
So before I started, we actually didn't have a continuous integration, so the committers would just apply patches and then run the test locally as best they could, maybe not on all the all the databases, and so then we ended up with someone would commit a patch and then say, Oh, it's broken on MySQL or something, and so the build would be broken for a number of days until somebody got around to fix that.
So I set up a Jenkins integration with um with a GitHub pull request so you can see the status of the checks there, and so that really helped.
And at this point, I feel like I've done enough where the development is structured and things can continue to plot along without me.
So there's two parts of it.
One that you're stepping down right now, you know, you finished uh two days ago officially, and so for one question is how you how do you tend plan to turn off now?
Because presumably you need a period to clear your brain of this of the responsibility, and then the other the other part after that would be we're gonna see you again.
Yeah, um, so I mean I plan to remain sort of involved at least once in a while and um like yesterday helping you with the release a little bit and just tidying up loose ends.
I have some other interests.
I coach high school baseball, uh so that's going on right now, so that takes up a fair amount of time, especially in the afternoons, evenings.
Cool.
Um enjoy vegetable gardening, playing clarinet and saxophone, and um one of the big things that's sort of increased in the last year or so is caring from my mom who has dementia.
Okay.
Okay.
So do you think it's is it Django in specific that um you need a break from, or do you think it's tech in general?
Because I often sometimes to myself think, is it am I just tired of Django or I just really need to not look at a computer for a while?
Uh yeah, I think not looking at a computer is definitely something I'm looking for too.
Yeah.
I I wonder if you both can speak about, again, because as a little bit of an outsider, what it what is it, what was the process of of mastering Django?
Because you know, the Django fellow, it's easy to think, oh that's to the extent anyone really knows Django, that's someone who does.
What what were the if you can remember the milestones in terms of when things clicked together?
And I guess each of you came from PHP, so you already had a a background in web frameworks, right?
Because for me personally, Django was the first web framework I really worked with.
So a lot of the pain around just how the web works, I assigned to Django.
And it was only when I worked with a couple other web frameworks that I got some perspective on it.
Um so I'm curious, just what sort of what does it feel like to know Django in and out and what was that process like if you can recall all those years back?
Yeah, so when I worked at the startup company, we were uh using Django as our framework, and and I was contributing a documentation, and as best I remember, I pretty much did all that without looking at the source code, which is kind of nuts in retrospect.
Um The Great Dulks.
You mean so you were you were writing uh high well because I think you were writing the documentation for source code stuff, right?
Or maybe Well it was mostly about fi fixing the documentation.
Uh maybe not writing new new documentation so much, but Okay.
And I guess I had to look at the source code at least a little bit to do that.
Um but I don't remember having uh intimate knowledge of Django as much as I do now until I actually started diving in and reviewing pull requests for code.
And at that point, yeah, it definitely helped with learning Django.
Yeah, no, entirely.
I was so I started off building APIs, um building apps and a or websites and APIs with Django and Django Rest framework.
And kind of to use Django Rest framework, I kind of read the docs, but got into the source code and then started contributing, and that's how I knew got to know that.
And then it's only doing the fellow role and having to triage this the the bugs that come in.
It's like, oh, okay, I better really open this bit of code right in the middle of Django that I've always avoided that makes me do that.
And so now a year in, I'm like, okay, I you know, I can open up say compiler.py in the middle of the ORM and I'm like kind of comfortable with it now.
But when I started the fellow role, I wasn't there.
You know, it's it's literally the job of triaging and reviewing the patches that teaches has taught me, you know, I use I could use Django, you know, quite happily, very well, as well as anybody.
But that level that working on the source code every day really that's that was the the the next step up.
Yeah, I agree.
So how does that I mean how does that feel for you guys?
Because I've noticed just personally, it's in the last year that I feel like I finally I finally can take a 30,000 foot view of of Django.
Like after what how many years?
Six years of using it, I finally feel like I sort of get a sense of how it all fits together.
And I'm aware of areas where I don't have total depth, but it finally clicks for me.
I'm wondering if did did you guys have that sort of, oh, now I see how the pieces fit together, or was it more of just a gradual thing for each of you working, you know, on all the tickets?
Probably a gradual thing.
I mean, there's still areas where I'm not really comfortable uh the ORM would be being one, so
that's crazy that you say that, but
that's that's that's gotta be true for everybody, right?
Yeah.
Yeah.
I mean, like if I get a patch for the ORM, it's basically unless I see something really obviously wrong, it's sort of like do the tests pass and does the code look reasonable and is it covered by tests, and if so, then it's good to go.
But also there are there are there are a number of um contributors, regular contributors who really know the ORM in inside out.
And without those, for me, it just wouldn't be possible.
Like it just couldn't do it.
Yeah, that's true.
Yeah, well that's I mean, that's the thing about programming is we you know, I don't think about what I know, I think about what I don't know, and so I guess that leads into the you know imposter syndrome.
No matter what level you're at, you're just looking forward, you're not looking, looking back, which makes it fun, but sometimes leads to burnout.
So did we fully discuss the handoff process to Carlton or is there anything, any lessons you have from slowly stepping away?
I mean, that's hard in any position, and here there's such an uh immense amount of responsibility you've really had just yourself.
Um yeah, I guess I would say it's it's been somewhat difficult for me to give up control on something that I've shepherded so closely for a number of years.
Um, but ultimately I think we have to remember that we're all replaceable and uh that can be humbling and also a relief.
What about you, Carlton?
What how is it what was the onboarding kind of process?
Oh super, like t like you know, I I so first of all I'm like, oh well, where do I begin, Tim?
Tim gave me some starting points, and then so I did that for a week or two, and then I'm like, Tim, I need a bit more help, and you know, and then Tim's very good.
Like when I'll do something, if I haven't done it right, you give me a little tip, and you know, a year later I feel okay, I got kind of got the hang of it.
I still like I I just still don't have Tim's amazing eye for the for the you know the really fine details which he catches every time and I miss, but I'm getting better and I'll continue to improve and I I just aspire to you know be uh to that level of just proficiency.
I I I you know Tim's really he has guided the project, he he has taken it from um you know without CI and all these other things too, it's it's really very well structured now, and you know, if anybody is responsible for that, then Tim is.
Um so for the you know, I have to just say thank you from the whole of the Django community for that because we really do owe you and we love you for all the time.
And I hope more people know who you are, because I I didn't know your name until a year ago.
So maybe that reinforces the replacement, but also I think just the the sort of veil of Django just sort of works, and you know, uh it was only for me, it was only really going to Django Con being like, oh, this these are people who wrote the docs.
It just feels intimidating.
And um, a lot of uh what Carlton and I are trying to do this podcast is sort of humanize Django and make it seem less intimidating and um yeah, and the and the people and companies behind it because it's such a big group.
So anyway, thank thanks again for joining us, Tim.
It's been wonderful to have you on the show.
And thank you for listening, everybody.
We'll see you next time.
Bye bye.