Django Chat

Contributing to Django - David Smith

Episode Summary

David is an accountant who has contributed massively to Django in recent years, taking over django-crispy-forms, improving djangobench, and becoming a member of Django’s Triage and Review team.

Episode Notes

Support the Show

This podcast does not have any ads or sponsors. To support the show, please consider visiting, Button, or Django News.

Episode Transcription

Carlton Gibson 0:05
Hi, welcome to another episode of Django chat for nightly podcast on the Django web framework. I'm Carlton Gibson joined by Will Vincent. Hello, Will.

Will Vincent 0:12
Hi, Carlton.

Carlton Gibson 0:13
And today we've got with us David Smith, who's maintainer, crispy forms contributor to Django and all sorts of other packages in the ecosystem. Hello, David. Hi, Colton. Hi, Well, hello, thanks for coming on. Thanks for coming up. So I want to, I want really wanted to get you on because you, sort of, for me, you've kind of appeared over the last year or so and been dived into the contributing world. And I wanted, you know, for you to tell that story because, you know, come and contribute to Django like that's the that's the thing, right? But this, so let's get into that. But let's start. How did you get into Django? How did this we always ask, what's your backstory? And then we can get into how you got into contributing?

David Smith 0:50
Yeah, so I think straight away, my backstory is probably a little different to most people that you have on the on the podcast, by profession. I'm an accountant, I do strategic planning. So nothing to do with coding as part of my day job. A little bit of VBA here and there. But if I can get away from VBA, then yeah, there's got to be a better way. Right?

Carlton Gibson 1:14
Right. So do you are you into this whole Python for financing cuz you can load Excel spreadsheets into finance into Python? And you know, there's books on this?

David Smith 1:23
Absolutely. I, I think that's where the industry's going. And it'll become a bigger part of accountants kind of toolkit to have some Python knowledge, especially, you know, looking ahead, we're starting to hear Microsoft, maybe putting Python into Excel.

Carlton Gibson 1:43
They've got it was this thing that this lambda thing they're doing?

David Smith 1:47
Yeah, I've not used that. I think that's within Excel itself. And you can write small functions that that call itself. But that's not so helpful for writing scripting. A lot of what we do is quite basic, really, it's Yeah, here's some data, I need it in this format, or I need to look at it like this. And VBA is a tool that we've got today. But like I say, There's got to be a better way than go twos. Well, it's

Will Vincent 2:16
it, it reminds me of, I have a MBA and in the MBA, Python is now a core class in most curriculums, and is certainly in the marketing courses. Like I remember taking them 10 years ago, but it's all you know, macros in Excel, when everything can be done in Python. And so it is interesting how it does seem to be programming by extension, Python is a necessary toolkit, even if it's just scripts across the business world.

David Smith 2:45
Absolutely. And I think there is an evolution of fate of teams becoming part of that kind of corporate eco system. And I think accountants have got a weird fit of a lot of what we do is data and analysis and looking at the future. And therefore you need to look at the data on one hand to know what does it mean, what can I inform the business and all part of that story that you're trying to tell him where it fits within an organization across it, data finance, business units, and I think the industries are still trying to figure out how that all kind of joins together. And on one hand, you've got data in enterprise databases, that maybe the IT teams will earn and develop. On the end of the spectrum, you've got tools like Power BI, which are very much Yeah, end user, you go and tell us what it means with this analytical tool?

Carlton Gibson 3:48
and Python. Is the glue, right? Or is it they say, I guess, yeah,

David Smith 3:52
I think so. You can get so far with SQL, but typically, data is not in as good a format. Or you might have text files or Excel files or, you know, pieces of paper people have written in, and you need that global to be able to mash everything together to get that understanding and insight,

Will Vincent 4:15
but so Carlton's gonna do most of the questions today, so I'll just get one in there. And then he to go, I was just gonna say I recall from learning accounting, not at a CPA level is very similar to programming and then it when you first learn it, it seems very binary and, and then as you progress, I think specifically, like managerial accounting, it's just wildly subjective in the same way that programming, there are some things that are sort of black and white, but it's way more subjective than it seems on the surface. So it seems like a pretty natural overlap. Actually, if you have a brain or training in one or the other that they would apply.

David Smith 4:50
I think there's a different spectrum you can get real technical accountants and tax is a good example of this where it's very rules based On the other end of the spectrum, I work for Strategy Team. What's going to happen in the future? Where's the business going? What does the world look like in five years? And that's very much. Yeah, blue sky. Thinking. Yeah,

Carlton Gibson 5:14
I mean, that's gonna be fancy graphics with no real numbers on and stuff like that. Just up into the right. Yeah. Lots of lots of PowerPoint. Okay. So I've we kind of jumped right in, because it's really interesting, because the, it from inside the Python world, it really looks as if Python is gaining massive ground share out, you know, in the, quote, unquote, real world, right? But so you're an accountant. And you're using a Python at work really? Or is it still VBA. And

David Smith 5:47
it's still VBA. I think there's still some reluctance to be able to work in financial services, rules and regulations. It's not something that, you know, teams here, have this thing and go do with it what you want, but we don't really know it, and we can't really control. So it is a big risk for an organization. So I think if kind of touching what we said earlier, if it's an Excel, that's a much more controlled instruction environment for end users, and use computing be able to really use the power that Python has really.

Carlton Gibson 6:26
Okay. And so how did you What is your path into Python that Whoa, because,

David Smith 6:30
yeah, so I guess I've always had an interesting computing and websites helped run a website, maybe early 2000s. Back when it was his FTP server, upload some files, and there

Carlton Gibson 6:47
are thinking accountability.

David Smith 6:49
And then it goes wrong. And that's the end of that. Yeah, so I did a bit of that. And more recently of what else can I do? What do I have some interest in? Can I pick up a hobby and I started to build a website, my wife was helping with a charity for a while. So I built them a single page application and use bootstrap for the styling of that, at the same time, trying to think about Python and trying to learn that potential benefits at work. And I guess at that point, they're the two kinds of meat right, so you've got web and you've got Python, and there's Django. Okay. And then the step for me was seeing Carlton's talk from maybe three or four years ago. One of your Jango needs contributors talks at the end of that, he said, by the way, Chris, crispy forms. Yeah, good deal with some help. And yeah, here's the thing. It's it's bootstrap, which I know and Python, which I'd like to know. But actually crispy forms is mostly bootstrap. Really, there's there's Python, but that's not where it's at. It's mostly

Carlton Gibson 8:08
the templates.

David Smith 8:08
Yeah, absolutely. Yes, it's a template issue. It's always a template issue. There was a neat fit for me to start taking little steps towards using Python in a real world as you're a beginner, and you can do some courses and some training. And you can learn about all the various functions and classes and all of that. But how would you take that first step of here's a real project that you can work on? Yeah. and crispy forms is where I ended up.

Carlton Gibson 8:42
Yeah. And you've been an absolute you install that? I mean, you've just come in, and now Yeah, now you're the lead maintainer. And you've been, you've added template packs for bootstrap five, which is just just about radium for tail crisper tail wind as well. There's a there's a pack there. I mean, you want to talk about those

David Smith 9:02
today. So bootstrap four, we got to a fairly good state maybe two or three years ago, standing on the shoulders of giants, really of who came before. And then looking what else there is talbin. Here's this new thing that everybody's using. Okay, we can build a template pack for that that would be an interesting project to work on. And what's really interesting about tailwind is it's so different to, to bootstrap, I guess. bootstrap, you've got certain classes, certain styles, use the right name, and you get your phone. With top end, it's much more choose your own adventure. And there's far more flexibility and therefore How would you allow the users to have that flexibility within that environment where templates tend to be very structured and trying to find a few different options, which I think we were getting With here's an opinion nated, tail strip, tailwind layout, I'll get you going up speed quite quickly. But if you want to go fully custom, there's some capability to do that in a slightly easier way than writing lots of classes into into templates yourself.

Carlton Gibson 10:20
Yeah, because I mean, the traditionally with crispy forms, the way you would take it beyond the built in template packs is where you override the template you create. And you basically end up creating your own template pack, which is like your custom in house sub sub template, but it's not a sub class where you've just overwritten the individual ones. But you know, there's 30 year old templates in the template pack, right? You don't necessarily want to override them all. But you just I guess you do one at a time, I don't know.

David Smith 10:46
And bootstrap five is either evolution to bootstrap four, and just keeping it modern, current. And I think that's the big challenge for a lot of packages, isn't it? It's how would you have that sustainability to, to keep up to date with the latest changes being in Django, or Python, or we're using CSS frameworks. And they'll come along, and they'll evolve. And you've always got to keep up to date to keep your package current.

Carlton Gibson 11:23
Yeah, and I think at some point with crispy forms, we've got to start taking things out because I think the new template packs are built as additional add ons are separate packages. So that makes them easier to maintain. But in the core package, we've still got basic bootstrap two template packs, which are probably time to say goodbye to those and bootstrap three, probably time to say goodbye to not necessarily delete them, but move them into a separate package. And then I don't know what if you got thoughts in that direction?

David Smith 11:50
I guess that's where my lack of knowledge comes in, actually will call to provide his insight and guidance to me. Is anybody using bootstrap to

Carlton Gibson 12:01
us? Yeah, it's a good question. If anyone knew the answer still on the postcard, folks.

David Smith 12:07
I guess I don't know what changes are backwards compatible, or are we making a decision that's too strong? I don't have my view. But I guess we don't know until we put it out there. And somebody says, Oh, I'm still using that.

Carlton Gibson 12:23
Or you broke me you buy we will pin to the old version.

Will Vincent 12:26
Yeah, we don't. I mean, that's a that's a Django thing. We don't we don't track really anything. So sometimes these questions. We don't know. I mean, it's relevant, because we had the Django surveys coming out this summer, which was just started doing in part to kind of get these questions. So I wonder, yeah, I wonder if there's specifically on a package? Yeah. How do you? How do you find out? I mean, we could, I don't know, we could put something in the Django news newsletter, but Django itself doesn't really, you know, doesn't track and doesn't have an easy way to do a quick survey. Other than, yeah, you don't want to, you know, change it. And then people raise their hand afterwards.

Carlton Gibson 13:04
I think for the crispy forms, I think we could take the bootstrap too, but the inbuilt package, template packs, and we could say these are now all external from this version, because I think that the people coming forward, they're using external packages already. So those those are on an old version, they can either stay where they are, if they're going to upgrade, they can just add an extra dependency and maybe change a line in the settings file. And if there's a way breakage, well, sorry, but it this, this isn't a big package is maintained by David, I'm still helping out from where I can. And there's one or two other people, you know, popping from from time to time, there's not capacity there to maintain some sort of API stability policy at the likes of Django, you know, we've got crispy forms long term, No, we haven't got crispy, long term support. If you want to use it, you can either pin to the old one, which was working, or you can update and you might have to make a few changes. Sorry, we can't do more. And if you're a company that's relying on it, you can stump up some money and say, Look, can we can we fund some time on it? Which net has never happened in the history of the project? So I don't think we need to be you know, CBO try and we tried to do the right thing and give an easy update. But but we're not under any obligation to you know, there's a nice line Hynek put on that opensource is is like it could have been broken. I don't somebody put on the on their blog. That open source is like putting stuff on your lawn and saying help yourself, right. There's no no obligation beyond that.

David Smith 14:34
You mean there's not 1000s of developers watching all of the open source packages just ready to jump in every time there's a there's an issue. No,

Carlton Gibson 14:43
no, there's no

Will Vincent 14:46
well, Carlton is their case when you wouldn't pin it when you just straight nuke it. Just the larger question that David was bringing up.

Carlton Gibson 14:54
It's really old. You could just say look, this is no no longer maintained. I mean, like, so Now there was one recently is it m Django MP TT? I think that's now been the I think it's that Mateus had to say, look, this is now one maintained and sorry if it's maintained sorry if you're depending on it, but I can't do it anymore. And you should be updating to Django triggers, which is the new, the newer library and it's maintained and pay tribute tribute. Okay. Yeah. And he's, he's just simply not in a position to and he was like I can't, you know, he actually said, I don't know what to do. And I was like, Look, you just have to declare it as this bankrupt, you have to say, look, we can't do this. And if somebody needs it, if a company needs it, a company can fund the developments, really small amount of developer time it would take to keep it on the rails, but not again, no company comes forward with any money to sponsor it. So that point, let it die,

Will Vincent 15:55
Carlton is a great sounding board for me on these things, because he's has many more years doing this stuff. And again, it's the same advice, I just need need to hear that, you know, it's, you know, do what you can, but if it really matters, someone will raise their hand or they won't.

David Smith 16:09
Yeah. And it's not just somebody to do it, it's somebody else to be able to review and merge and do the maintenance of it as well. And to issue a new release and all of that other work that goes along with maintaining packages is much more than just opening here with one line change that fits your needs, right? Yeah,

Will Vincent 16:35
yeah. Well, that's why new blood is so nice, because sometimes someone has to step away, or they just need a break, or they just need help. I mean, like a third party package, you know, like crispy forms. I mean, even the awesome Django repo, which I started, I was pretty much, you know, that's not even used as just a resource, but it has a lot of stars. And I was just like getting overwhelmed. And Jeff Triplett stepped in, which is nice. So that's, you know, that is sort of an equivalent to you coming in on crispy forms, which I believe Daniel and Audrey started it right, or they were initially worked on it, right, because we had him on to talk about that. And then you you kind of took it over, which he didn't really realize, and, you know, there's this recycling of energy in a way.

Carlton Gibson 17:17
Yeah, I mean, there was crispy forms, has been saying for years by Miguel out of Ohio, and he but he had to drop away. And so 1.8 came along, and it was about to be released and crispy forms was about to break. And it was like, I'm depending on this, I'm using this in my real life. So, you know, jumped in, and I got a release out for 1.8. And then the this coder came along, Dimitri, his name is in real life met him years later at Gen Con, but he was just stranger 666. And he just made about 100 prs to fix various issues and bring it up to date. And it's like, Oh, thanks really hope, you know, helping. I did never knew who this guy was. And then he was a nice to meet you that was. So that was really nice many years later. But so I was on, I was maintaining crispy forms for, I don't know, 234 years. And then I was finding I hadn't got time to maintain it was working on rest framework. I was working on Django, I was working on the packages and crispy forms was just, I just needed help. And so again, my I think it must have been a Django con European to a one nine. The feeding the pony Talk, I'm not sure. I think that's right. Yeah, cuz I think that's the one I think we're called out for crispy form of like, Look, if you want to get involved, it's a great learning opportunity. It's a great way of getting involved in the community. It's, you know, feeds feeds back into the cycle. And I could do with the hand. And, you know, they're David watts.

David Smith 18:48
And I think that's a good way for new people to get involved with the Django ecosystem is, here's a package that's fairly small in its scope, that you can understand what it's doing end to end, whereas Django is it's this great big thing, and where do you start, and there's so much of it that's connected and to try and piece it all together as a challenge there but a smaller package. I was able to learn about what the how forms work in Django and a little bit more detail and really under standard. And that was a great learning opportunity for me to have that narrow scope and not get completely sidetracked and able to see the world through the trees on what

Carlton Gibson 19:37
you would have been digging into Django. Right. So

David Smith 19:40
yeah, so looking into Django itself, probably about six to nine months after getting involved with crispy forms. I started to look at the Django issue list. And again, you can go onto the website and you can filter by component platforms obviously and hang on Here's a few tickets that are in areas that I'm sort of familiar with. I know what a bound field is, and I know how it works. And I know which it is. And here's a problem that I can piece together and go away and solve and started to make some prs on Django itself eventually,

Carlton Gibson 20:19
can I, because I remember a few of these, right? And these were, like you did an amazing detective job. And so because some of the issues are like that, you know, Django is 15 years old. And some of them are like, what's the gist? I'm making sort of half making it up and half remembering the issues that David worked on when I say this, but like, when I've got a novel defined on my model field, and then it's, you know, but it's not required at the form level, and then, you know, what should be the correct rendering of the HTML, that issue could have been open for half a dozen years? Simply because it's, it takes a bit of effort to dig down to I mean, can you remember any particular issues?

David Smith 20:58
Yeah, there was certainly one where we were using multi widgets, and the field can have many widgets. So you've got multiple fields and multiple widgets? And what should be the required class, if certain fields within that multi field are

Carlton Gibson 21:23
required? Or not? Or not at all? Yeah. Partially? The point is, yeah, I mean, the point is, it's complex, right? And so you end up thinking like in terms of a truth table, and you end up but you, you would do you did a massive amount of on several of these issues, a massive amount of sort of thinking it through and taking the time?

David Smith 21:43
Absolutely. I think some of my best work is actually in those tickets that came to the conclusion, we shouldn't do this or bid for, it's too technically complex, it's not suited to Django or not worth, it's not worth it, or actually, the I think the ticket we're just talking about with this massive truth table. Eventually, we came to a conclusion was that the behavior that we've got today is right. But you've got to go through quite a significant piece of effort to come to that conclusion and understand the reasons why it's working like that.

Carlton Gibson 22:28
Okay, so So what would you say to say someone's listening to this as a prospective contributor? And what what kind of conclusion would you draw about how to approach a ticket? Or you know, what, what's your take on that?

David Smith 22:39
I think john goes big and complex and mature, and the quality of Django is very high. So there are no real. We've got this easy pickings flag, right? And there's hardly any tickets that are trivial. Yeah, that's a five minute job. All of the tickets require some time and some dedication to take an issue and really understand what's going on here. So be prepared to put out side a reasonable amount of time to really understand the issue and be able to explain why it needs to happen in a certain way, or, or way or change needs to take place. Particularly for the older issues. I I've fallen guilty of this of here's a ticket from five years ago. Does anybody know what the answer is? And I've fell into that trap. And it's so easy to do? And that the honest answer is, nobody knows. And that's why you need to take a bit of time to understand it and understand what's going on. And I think it's a phrase that you've used a few times called, and as soon as you've picked up an old ticket for a little bit of time, you're the world expert in that ticket. Because nobody knows the answer. I

Will Vincent 23:56
think it's interesting to do that you're diving into, sorry to interrupt Carlton that. No, no, you're looking at the issue tracker and seeing what you what you can pick up as opposed to people who have as Carlton did initially with 1.8. Like this is a real world problem I have and I need to solve it, or I did solve it. And I want to apply it back to Django. I wonder, Carlton anecdotally, what what do you think the mix is of that of people sort of taking an academic challenge, as opposed to a real world fix?

Carlton Gibson 24:22
I think we see a lot of tickets coming in where it's like, I've got this bug. And it's, it's clearly a bug in Django. And here's the two line change to Django that would make my use case work. And that's, that's okay. But then it's like, okay, but is this really a bargain? Has this got tests and

Will Vincent 24:42
yeah, throws the throw throws the body over the wall to you to?

Carlton Gibson 24:46
Yeah, yeah. And it's, and that's so a lot of the fellow work is triage tickets. He's like, well, I can't be that hard. No, it's really hard. You wake up on a Monday morning, you haven't quite had your coffee and you sit there and you go A test client doesn't redirect correctly if x and you're like, doesn't it? And then an hour later, you're like, I still have no idea what's going on. So triage is actually really hard. And a lot of tickets are I've hit this issue, and a lot of contributions, kind of one time contributions on, I've hit this issue, and someone might make two or three of those over a couple of years. And then, you know, they might come along and make a few more contributions and whatnot. So it's not that they're one time contributors. But that's the kind of one off, you know, thing. And then the other approach is to to look at the open tickets and to take away have to narrow it down by component. That's what David said, and then you've got to focus on one or two and really get a feel for them. And that's other than fixing the issue, what's the payoff?

David Smith 25:49
For me, why don't you do this? Yeah. For me, it's that learning experience of here's how a large project works, here's how it's structured, and the programs running tickets. And what that process is, and tests are really important and why tests are really important, and how to write really great documentation is what I take from it. And I just want to pause on documentation for a second. No, no, no, I said that. Yeah. So documentation, that is one thing that I've taken from my experience of Django, back to the real world, in my in my job. And that's the way that Django structures, its documentation. And there's a theory called Daya, Texas. And it explains that documentation is a variety of things from some things that'll be useful whilst you're doing the job versus studying. So on one extreme, you might have classic procedure notes. Here's a process, you click on this button, and then you click on this. That's great whilst you're doing your work, but doesn't allow you to understand the how or the why you might need some reference documentation of it you What do other fields mean? Or how does this whole system fit together? And to create a sustainable process, you need that knowledge to be able to understand the bigger picture, not just do your, your process that you've got today, because you'll never be able to change and innovate. And what happens if something new comes along? I don't know. I just do it this way. And you need that reference material to be able to understand what's going on. And I think that's really valuable to organizations to think about documentation in a much more holistic manner than just process notes. Yeah. So

Carlton Gibson 27:48
I mean, the didactics framework, those by Danielle, who was part of the Django team, and who really helped put the Django Doc's together into that structure. He's got like, the tutorials or guides, the how tos, and the reference, right. And I like that. I like the take that back to work and if you can wield it into the office, and so we need these kind of Doc's.

David Smith 28:12
Yeah. And that they're not technical documentation. It's much more focused on that end user, but the theory can still apply. And it's not something that I've really thought about until I've been working with gender, I guess you get taught a certain way. And this is how we do things around here. And you do need that wider experience of what's going on in the in the wider world, and what's relevant, and what can I apply to my own situation?

Carlton Gibson 28:44
Yeah. And so you've been you've been massively active, doing reviews, and on other people's prs, as well. And Doc's change our members season of Doc's project, you're active on the PR there to help you improve the contributing contributing guide.

David Smith 28:59
Yeah, I think that's somewhere where I can add some value isn't Yep, I'm never gonna be able to go solver, RM RM ticket, but if there's a our RM ticket, and it's got dogs changes, actually, okay, I can read that and spot typos and know that it doesn't read quite right. And it's another step to get in that PR merge and keeping the quality high. It's so hard to review your own work.

Carlton Gibson 29:27
It's just noise symbols. Is

David Smith 29:29
it just impossible, isn't it? And nothing like coding shines a massive light on that.

Carlton Gibson 29:36
So one thing, one thing I do have to say here is that as part of the depth 10 changes and change with Django governance and the change of Django core, we've created a triage and review team which have regular regular participants on the on the GitHub repo, they just they get a few extra permissions on GitHub, like manage help manage the tickets, get cuts got this tree I'll draw, but hopefully, we can help give people a bit of recognition for some of the effort that they put in. And David was invited onto the triage and review team for his, for his

Will Vincent 30:10
Well, congratulations

Carlton Gibson 30:12
not not contributing at all, to running a third party package to contributing to Django itself to being on the triage and review team in a few years talking about on the technical board, David,

David Smith 30:22
and I think that's Harvey now, if I can do it, I'm not a professional in this area. A bit of time and attention in the futures you roster, really. I guess what might be interesting is Yeah, if I was a lot younger,

Carlton Gibson 30:41
that'd be interesting.

David Smith 30:44
Yeah, is that a way that, you know, younger folk can, you know, get into coding and make that a professional career I, for me, my personal circumstances would be useful to apply to my own job, but it would be too much of a job for my career to kind of jump into that as a full time

Carlton Gibson 31:04
role. I think if you're a junior, it's a really, it's a really good way of building up a few points on the on the profile or on the CV that can really make the difference in hiring concept. Why should we give you How can you demonstrate these abilities? Well, you know what, I'm a regular contributor to this smaller package in the in the Django ecosystem. And I've got one or two prs on Django itself. And you know, if you can say that,

Will Vincent 31:27
yeah, you're top of the queue automatically. Yeah. Because it's Yeah, as we've talked about, there's selfish reasons to contribute to open source. And if you're able to do all those things, you've proven your technical ability, you've proven your ability to communicate, you've demonstrated interest. It's just a absolute, top of the queue. And as as you said, David, it's not it's there to be done. So one of the, you know, Carlton, does these talks trying to say to people, hey, like, what's the next step for you folks? It's like, you know, find a way to contribute. So it's, I wanted to ask you, David, about you mentioned that leap from, to looking at these issues where there aren't these easy pickings? I sometimes think, well, maybe, you know, docks should be the easy pickings, because that feels kinda like an easy pickings. But that leap that you made, I think a lot of people don't. And that's something Carlton's been working a lot on trying to have a path like, is there a way to have like a to do a PR, that doesn't count, but kind of gets you in the process? Like, how do we open it up? So it doesn't require this extra level of commitment that you've done? And now you're on the other side of it?

David Smith 32:36
I think that's just gonna be your point about easy documentation tickets. I think. That sounds easy. But yeah. Sorry, like explaining myself very well. So I think some of the documentation issues it might be, I don't know that. I fell into this trap recently. But let's talk about it. CFC SF documentation needs a bit of review is a documentation ticket. But actually, it's a security issue. wrongly, I flagged that as a easy pickings recently. And the reason I did that was actually there's a patch already there. That's been written by somebody who's probably fairly knowledgeable, how to copy reviews, but as then got stalled. So I was thinking, maybe that's easier. Because it's partway there. It just needs that last little Polish stick to get it over. Now, you're not starting from rewrite the whole documentation.

Will Vincent 33:37
You almost need like a hype man or woman to sort of tee it up and say, Hey, this is actually relatively easy picking. But that requires extra work as opposed to just doing it yourself. I mean, well, because they have this they have the Sprint's at Django cons. I like that's a pretty that's as good as we're at. Right, Carlton in terms of getting new people into contributing.

Carlton Gibson 34:00
So yeah, I think that the Sprint's are the best we have at the moment is that, you know, at least then you've got a group of people together and we haven't well, pre pandemic, you have a group of people together. We had we had a great workshop at Django con us 2019, where we did a contributing to Django Django workshop we had like four tables of people everyone's helping each other and all going through the getting started getting set up with it with the unit testable and and then that great difficulty of finding the ticket of browsing but you know that we can make that better we can make that flow better. But yeah, Sprint's Sprint's is a good opportunity to get started, I think.

Will Vincent 34:41
Yeah, I often think to like, how could that be extended to regular Django meetups. So here in Boston, there has been and hopefully will be, again, a monthly meetup and all the time I meet people who use Django, professionally, who solved some bug and they say, I'm like, that's great. Would you submit a PR to Django and that was I don't know how to do that. So, there if there was, I don't know, every quarter or something, some sort of way to do that. That would help. But

David Smith 35:11
I guess that's my question. Maybe both of you. Why do you think what what stops people contributing more? Is it? I don't know how to do it? or part of me wonders if it's a bit like a bus drivers how that Yeah, I contribute, because it's not my day job. It's something different. It's like, you know, doing Sudoku or what have you. Yeah. You hear a lot of people go and doing woodworking. That's something that's not their day job. What do you think?

Carlton Gibson 35:41
Yeah, I think there's something in that, like, I've been on the computer all day, why would I spend all evening on the computer? That's, that's insane. To do something else,

Will Vincent 35:50
I think if you if you don't have the community aspect, it's a lot harder. I think once you kind of get into the community in some way, then it becomes a lot easier. But yeah, I mean, I look at a computer all day. It's it is the last thing I want to do. In my spare time, though, to your point, though, in terms of like, Carlton asked you, why do you contribute? I loved your answer about learning, because I think that's that's kind of like the highest goal that's self sustaining around why why do anything? I mean, for me, being on the board doing this podcast, all these things, the biggest takeaway is it's interesting, and I learned, and so that's self sustaining in a way that something more transactional wouldn't be. So I love that answer that you gave.

David Smith 36:36
Yeah, I think the interest thing is important. You know, I'm an accountant. But I don't go out finding people's tax returns to do in the evening. Because it's not interesting to me.

Carlton Gibson 36:52
I think code coding expert people, like why do you code it's like, I code because it's like, literally crafting reality out of people thought at its best, you know, sometimes, yeah, I've got to type out these fields of this form. Again, like, surely I shouldn't have to do this. But those, those mundane bits in everything, but when you're when you're not, when you're really structuring the software, it's like, yeah, this is

Will Vincent 37:14
just pure magic in a way.

Carlton Gibson 37:16
Yeah. And that's what program is about at its best. And so like, yeah, that's why I think people people do it. I don't know, I want to ask you, David, about how you find time for it. Because you've got, you've got a full time job, right? You've got kids,

David Smith 37:32
yeah, full time job to kids. Which is just, yeah, a bigger job than the job. So it's just time when you've got little pockets of time here and there. I can't just say I'm going to spend the day looking at the computer, that just doesn't happen. But you know, half an hour here and an hour there in the evenings. And those little bits of time, add up if you do it regularly, I find that a little bit like exercise, I've been trying to get into running a little bit this year and couch to 5k 10 minutes, 20 minutes, a few times a week. And then certainly after a few months, if you're earning 5k, and you can't believe you got there. And it wasn't that it was a massive time commitment, it was just a little bit regular. And that really makes it that the difference. And I guess it's the same for the contributions I've made over I guess we're coming up to a few years. Now a couple of years, probably q3 2019 I started contributing. And over that length of time, it starts to build up to something substantial that you can start to point out but to just sit there and do all of that work in a day a week months isn't sustainable.

Carlton Gibson 38:57
No wouldn't you wouldn't happen wouldn't have.

Will Vincent 38:59
I liked how you said pockets of time because I think I sometimes get in the trap of thinking, if I don't have two to three hours uninterrupted, which I haven't for a year. I can't do anything. When you know, if you do find these moments, it does you know it is percolating in your brain. And in some ways, it's an excuse for me anyways, around stuff. But any amount of time does add up on an issue.

David Smith 39:24
I've started to find myself recently. I don't know if this helped helpful or not probably Carlton fuse is almost half commenting. So a patch might be a reasonable change. But actually, if I just review a little bit, I talked about the doctor a bit maybe it's a test or a bit of a code. And just making a few comments here and there is another step forward. You don't have to review the whole thing. It could be

Carlton Gibson 39:54
intuitive. Yeah, no, I mean small. I was made the joke like some people play Pokemon. Gotta go I played Get up, it was like, you know, to what to answer, you know, presupposing we're not starting on rest framework, it would be, you know, how do I get the serialized? Oh, I can I can tell you how to do that, as you know, and that it was just a little bit instead of playing Candy Crush on the loot like, Gabby,

Will Vincent 40:16
she just do prs? And I'll do right? Well, no,

Carlton Gibson 40:19
I unfortunately, I still got the editor on the phone to do the autocomplete. And I, you know, I can never remember the method names otherwise. And

David Smith 40:26
so a good example of this is, there's a PR open for DRF to move the website, the API, browser bar like browsable API, or via to bootstrap five, it's currently on bootstrap three. That's a piece of work that I've completed over the last year or so. And there's still work to be done on it, but a few templates here and there over a period of time, and you start to get there, which something's starting to take its and shaping is heading towards being ready for review.

Carlton Gibson 41:05
I mean, yeah, it's, I've we've marked on that for the hopefully for the next sort of DRF feature release to get fully reviewed. Now. There'll be an amazing contribution. But see, this is the thing, David, it does add up, see, I can sync you've been on crispy forms maintaining that DRF, you've definitely contributed to, I think I've seen you on channels as well. And Django filter, and you know, various things about the the jazz, you're everywhere, like, are you building a secret super app using all these packages?

David Smith 41:35
I think that's probably the that amuses me the most is I don't really know how Django works.

Will Vincent 41:42
Now, you know, you're an expert, when you can say that and mean it. But everyone looks to you for the answer. That's like the highest level, I think you're there

David Smith 41:51
made small contributions here and there. But it's not like I've sat down there and built a functioning web app. So yeah, I'm not an expert in our own databases. But this small changes that you can make to a number of packages. Django comes along and deprecates, a feature that changed with a need to make be made to packages across the whole ecosystem. So for example, a year or two ago, we deprecated the URL, function, move to a path or a path. And there's dozens of packages that are still using the old function, it just needs somebody to go and make that relatively small PR to keep that package up to date. And when it's quite found in terms of scope, and then warnings and documentation for Django quite clear what what the change is. That's something that I can add value to. It's not a massive task, it just takes a little bit of time. It's fair, I can add some value there.

Carlton Gibson 42:59
And, and and, yeah, one more thing I really wanted to talk to you about was your work on Django bench, which is the the benchmarking framework, you've got this, you've been doing some super things at creating benchmarks left, right and center, and you've got some some interactive dashboard that was showing regressions in this particular commitment. What's going on that what do you what do you work on that?

David Smith 43:21
Yeah, maybe my approach is a little bit scattered going a bit here and a bit of error. And I've been not completing everything. But yeah, the Django patch is really interesting. So there's an existing Django bench repository that's part of the Django organization. And you can run that and it will tell you whether there's a regression asserting correct against a set of benchmarks that already exist. That's great. But you have to work quite hard to understand where the committee's are in weather regressions for. So I looked at the problem in a couple of ways. The first one was, how can we automate this? So step one was to get it running in GitHub action and save it into a SQL database. That worked quite well for a little while until the database got so big that it stopped working. We hit the size limit eventually. And actually, what that exercise proved is, there's a lot of noise when trying to run benchmarks in a CI system. They go up and down all over the place, and every other commit is marked as regression. So I looked at what else I could do and Victor Steiner

Carlton Gibson 44:37
commits gold pokes.

David Smith 44:40
Yeah, he's got a series of blog posts on benchmarking Python. We'll get a link for those in the show notes. And he's got I think he built pipe Earth. I think I'm right in saying that which is a little tall, right. So And benchmarks and run them much more reliably, with CPU isolation as well. So I started to have a look at that and actually made some progress on that. And along the expedition came along the package called ASV. Which is actually supposedly, yeah, yeah. And there's a few packages, which use this to benchmark their, their projects. And it's a fantastic tool. You can point it at your repository and write some benchmarks. And you can run those sort of tests to see regressions over time. And at the back of it, it automatically generates a website that tracks the performance of those tests over time. And then you can zoom in, and there's a big support up here, what, what's going on there, and you click on it, and then it takes you to the commits on GitHub that cause that regression. It's kind of cool. It's fantastic. So we've built that we've migrated most of the existing Django bench benchmarks over to that, and it did highlight a few regressions are able to catch and fix. And there's probably quite a couple that are much more high 30. But the point is, we know that we know it's there. I think what is next that package is what should a Django benchmark be? And what do we need to make fast? So I could write a benchmark for I think there's a function in the utilities that takes a word and translates it into a telephone number, you could write a benchmark for that. But that's not really going to make your Django faster, which are the functions that get called the most times and how do we get the most bang for the buck? Because there's, there's things we can do to make Django faster. But make make the code more unreadable and less maintained all them? Where are you willing to make those judgments versus versus not?

Carlton Gibson 47:17
There is inside the call request response handler then,

David Smith 47:20
exactly. And do we have good benchmark for each bit of that? I'm not so sure. And that's my lack of knowledge of not understanding how chango works. Yeah.

Will Vincent 47:33
I just got. Sorry. If you're inclined to give a Django con talk, which you should, if you're open to it, just just what you've said, would be an amazing 20 minute talk.

David Smith 47:45
I Well, you're not the first person to have said that to me.

Will Vincent 47:50
We'll just we'll just chip away at it. We'll just chip away.

Carlton Gibson 47:53
We'll get you up on the on the stage. And so do you need it? Because that like it's there. But do we need to be hosting the dango bench somewhere we need to be out because you set it up on a Roku or something on your own account. We need to be stepping in there. And it wasn't that provisioning advance. I was running a Raspberry Pi. That's the sub theme of this podcast is that Raspberry Pi's a great

David Smith 48:17
idea. All of my development work my Raspberry Pi. Yeah. You don't need a fancy, whatever it is. devices. Yeah. Raspberry Pi's work. Well, great.

Will Vincent 48:30
That's a pretty deep statement, though. That's that's like saying, you know, Jimi Hendrix could make any guitar? Play? Well, I mean, it's true. But yeah, I like the statement. But you know, I'm still struggling with Windows, like, I dive more into Windows recently. And I'm just like, really frustrating. So, but I suppose once you you know, once you go pure Linux, it's, it's here that you're there. It doesn't change around as much as Mac or Windows would. So

David Smith 48:59
yeah, I think for ritual, a little bit, but just just in the Raspberry Pi thing. I think that's part of the journey of being a beginner. It's right. So you want to learn Django, but you need to learn happen virtually. And then what sort of this other stuff and get and how do I fix my Git history that I've completely broken and there's so many problems that beginners can face and just that can take a long time to

Will Vincent 49:34
overcome. I think that's my next talk, by the way, like I've I have sketched it out, like what just just to say like, here's the pathway that we all find our way through one way or another, but to just say, this is what it takes to do a simple Django site. And there's quite a lot of things. And that's actually the larger goal of I have this learn Django site which I'm is a long long term project for me of trying to have some sort of solution. Press and hold someone's hand through that instead of googling around where it can feel like endless depot's of get and then SQL and then, you know JavaScript and but just to say like, you know, here's the, here's the path, broadly speaking. I think that would add value. Also to, you know, someone who's someone approach, you know, if you're, if you're a Django developer, someone will come to you and say, How do I learn Django? And you don't always have a good answer, because you haven't thought about it as a beginner, and things have changed. So anyways, that chips or wood chips away at me doing that doing that talk.

Carlton Gibson 50:38
I say today, well, we've got to talk to each of you lined up, I'm just gonna end the podcast quickly for you. Come on for me as well.

David Smith 50:46
So just jumping back to ASP. I think the bits that take that project forward are looking at those benchmarks. And do we have the right coverage of the core pieces of Jango? I'll be covering that. And are there any regressions that we've missed in years gone by? And then also, how do we make that project sustainable? I can run it on my Raspberry Pi at home, and that's okay. But

Carlton Gibson 51:13
we can equally we've got servers available, we can get on one of those. And it just, I think an email to Django developers? would, you know, there's been a lot of interest in your PR there on Django branch and an email to Django developer saying, hey, these are the to do's here. I think that would be a great discussion to have.

David Smith 51:32
I think we've tried it in ci, like I said, and that that was noisy, but it needs some, like I say, a server that doesn't have any noise on it to get those reliable benchmarks to have those run regularly. And then you could have it run with each PR, or here's a PR that we're a little bit concerned about, does it impact performance and ask the automation system to benchmark that specific PR for you?

Carlton Gibson 52:02
Yeah, I mean, we could certainly run it on the main branch daily, and then for specific commits, or prs would be you know, I mean, the issue, you could we could run it on every commit to every PR, but there's a lot of trees. So we try, you know, these heavy things. We try to limit the number of ci runs. We have such a big matrix yet, but to do it on Main, once a day is not a problem.

Will Vincent 52:23
Seems like a nice feature for button dot dev for your own deployments, Carlton?

Carlton Gibson 52:27
I know that's not quite in the ballpark. But you know, we'll see. We'll see. Anyway, right. So David, brilliant. Thank you. I think we're at time. Is there anything else you wanted to? You wanted to flag out or talk about while you're here?

David Smith 52:42
I think we've covered everything that I was thinking of, I just want to say thank you to you both for having me on. Yeah, it's been a great chat. Actually, I've got one question for Colton, and we've kind of touched on it a little bit earlier is how do you as fellows manage the uncertainty that comes with that? That role? Yeah, I wake up in the morning. I know broadly, what's going to happen this week, next week, with a fellow roll. Wake up and how do you know where to start?

Carlton Gibson 53:18
Well, that's good question. It's like a firehouse. It's on it's, it's, it's beautifully unending. So in to that extent, it is predictable. Every day, you'll wake up, you'll go to the dashboard, there'll be three unreviewed tickets, there'll be there'll be a release blocker, and there'll be an email to security at Django with, you know, some thing going on that slide on. And you just sort of have to breathe in, take it slowly. You can't there isn't any there is no get it done. There is no you know, it's how are we going at the moment? Yeah, we're doing okay, at the moment. Oh, there's a bit there's a review queues up a bit more at the moment. We Okay, so we need to try and prioritize that. But there's these release blockers and, you know, data pretty Oh, there's a security release that takes priority over there's, you know, the Jenkins servers needs rebuilding because something that it's, you just take it on.

David Smith 54:12
But but but not only that it's in public, right? You know, if when I do something at work, you have a job with you, manager in Yeah, that's between you and them in this role that you have, you know, anybody in the world can come along and comment anything on anything. And that's just incredible that you managed to manage that

Carlton Gibson 54:32
people are generally nice, and that's good, and marason. I work hard to support each other when people aren't nice. And we're very conscious of what the other one is doing. And if we need help, we reach out to each other to ask for, generally speaking, the fact that it's in public is totally fine. And it's very rare that we have what I would call trolling. Sometimes we get someone who's a little bit cross Sometimes there are because you know, it's a multi language community, sometimes there's a slight lack of communication that a tone doesn't isn't quite understood or and that can be a lack of fluency or whatever it's like, and it's very good. You know, monitoring itself, the community, the community is fantastic. And fortunately, with Django, goes, older, mature enough, and unexciting enough not to draw the worst elements of the tech community towards it. That's a big thing. You know, if you're, if you're in the exciting new hotness, you get a lot more flak than we get in Django, without, you know, but Django has worked long and hard to build a community, an environment like that. So no, how much is chicken and how much is egg? It's hard to say,

Will Vincent 55:52
Yeah, I would echo that. It's it's a very nice community. And it's a very small community. So on occasions when there's a bad actors, there's a chance to confirm, you know, am I taking this the wrong way? Or is it really just someone like that, but it, it sorts itself out quite well, in practice, even at the organizational level, because there's still some of that, and it's very rare. And when it happens, it's handled pretty well, I think. But I but I love your question about how do you talk? How do you bite off an elephant because Carlton is very Zen about this, I have the same thing. I get overwhelmed with all the things to do as opposed to discrete you have to have more

Carlton Gibson 56:35
children, you just need to have more children. That's the solution.

Will Vincent 56:39
So the answer to seeking control is just totally give up on control.

Carlton Gibson 56:44
There is no spoon.

Will Vincent 56:49
You're on? You're on Twitter. Is that the best way? Or or I guess on the on the Django track? If anyone wants to reach out or help with something? What was the best way for someone to do that?

David Smith 56:59
Yeah, I guess I'm Twitter. Smith, DC one. Okay. So check that.

Will Vincent 57:06
David underscore Smith. 86. Right.

Carlton Gibson 57:10
Yeah, no Smithy. She

Will Vincent 57:11
wanted to get up. Yeah, yeah. Okay. Yeah. Well, David is very nice to to meet you. You know, that's Django is such a large community that I didn't I'd seen some of your prs. But I'd never had a chance to meet you. So it's been very nice to hear your story.

Carlton Gibson 57:27
That's Robin, thank you for having me on. Thanks for coming on. And thank thanks for all your contributions to the you know, Django itself and the wider ecosystem and of course, crispy forms, which you're still awful. Thank you very much. Okay. Well, that's it folks. Thanks for joining us with jack decision Django chat with chat Django on Twitter. Join us next time. Bye.