Transcript: Breaking Django
Hello and welcome to another episode of Django Chat.
I'm Will Vincent, joined by Carlton.
Hi, Carlton.
Hello.
Hi, uh Will.
Hi.
And we were just talking about the fact that Carlton broke Django the other day.
Oh, with us.
And we thought we might share how one does that and give a peek at the insides of Django.
So Carlton, how did you break Django?
And how come I didn't notice it until you told me about it?
Oh well that well, you know, because I recover quickly is the main is the main point.
So I was releasing some builds, Django uh 2.2 beta 1, Django 2.1.6 maybe, 2.0.11 maybe, 2.1.11.17 maybe.
Um and something went wrong with the packaging.
So we run um we use uh setup tools and run setup.py uh which is get um to build the uh source distribution which we then upload to um the python package injects PyPI and for three of those four releases, all but the 2.2 beta, the the files that went into the package weren't correct.
There was some files from Master or from the 2.2 branch which just shouldn't have been there.
And so when people downloaded those, tried to install them and run their unit tests or their CI, they just they weren't
so people trying to download the latest version right after you would have
yeah, right after so they see the release announcement, they they automatically
Yeah, I saw it, I didn't yeah, I saw the release announcement, but I didn't go ahead and download it.
Right, yeah.
And so within about half an hour of the releases being released, there's um two, three tickets opened on the Django issue tracker.
Okay, this is a duplicate of the first one.
This is a duplicate of the first one.
Whoa, I'm on it, fix it.
Um I then spent, I don't know, an hour or two hours trying to reproduce the packaging error.
I couldn't do that.
I have no idea what went wrong.
There's some git weirdness, is all I can um presume.
Um and then I created new versions and I uploaded those to PyPI and all was fixed.
And so the reason you didn't notice is because you weren't right there, there and then trying to upstall.
It was only two, three hours in between the broken builds being uploaded and the new releases replacing them.
Yeah, because I remember when we, you know, we spoke, I think, the day after, and I was like, oh, it's new, and you're like, Oh, I broke Django, it blew up my day.
And I was like most people, I think I was like, Oh, I didn't notice, but glad you fixed it.
Yeah, I mean it totally took up the afternoon.
Yeah.
So how um I think it's a good chance for people to you know, so you're you're one of two Django fellows, so to talk about why you have the authority to break Django.
Uh right, or the hierarchy, right?
Because Django is a community, but you as a Django fellow, you and I mean Tim Graham historically are in charge of releasing the new versions, right?
So part of why part of our role is to is to release Django.
I mean, there are a few other people who in in the community that can do it and have got all the right keys and access permissions and all the rest, but it's Tim and I who did do it as part of our fellow responsibility.
There's two reasons, I guess, for that.
One is it's um it's it's a job, it's laborious, it's it you know, it requires work, and two, it's moderately complicated, so it's not something you have to pay attention.
And if you don't pay attention, things can go wrong.
And you know, I'm not saying I wasn't paying attention when I did this, but you know, things do go wrong and you need to be on hand.
So it's better that it's done by a fellow than a can a volunteer contributor who might be able to do one release and then, but what if it goes wrong, maybe they haven't got the capacity to follow up with a follow-up release or right.
The day job gets in the way.
Because the and I mean how and actually I don't know how long have Django Fellows been around because that's pretty recent.
About four years.
Four years.
So only within the last four years has there been part-time pay for volunteers who've otherwise done this laborious work of just the release part.
Well, no, but it's not just the release park, it's triaging tickets, it's which is that's the main part of the work, is every day there's three, four, five new tickets on Django.
Are these legitimate tickets?
What are we going to do?
Then there's reviewing the patches, which again is hard work, and then merging them in and making sure that they're backported to the right branch.
You know, if there's a if there's a bug fix, then that will get bug um backported to the latest stable release branch.
If there's a security fix, then that gets backported to all the supported branches and these kind of things.
So this is all the glamorous, the glamorous side of it.
Yeah, it's not so I mean it's fine.
It's not, you know, it they they are the bits that wouldn't get done on a project of Django size if it weren't for the fellows.
Um this is where projects fall down.
It's not that people aren't willing to write code, it's that people can't triage the tickets and people can't just keep you can't do it on a volunteer basis.
So you know, there's lots of open source projects that will because of that.
Yeah, yeah.
Well, and that's um, yeah, I I don't know how people do it.
I mean, even just I have a a repo, awesome Django, that I'm still in the process of trying to plug into the awesome repo repository, and um the maintainer, he's been you know very helpful, but it's you know, I've just been busy and um yeah, your the goodwill goes away at some point.
It's nice to have you know a little bit of a paycheck to grind through the things that one has to grind through on the wrong.
I mean it's just un it's absolutely unrealistic to expect people to maintain an open source project indefinitely for free.
You know, want to have one side project that you maintain, no problem.
But to keep a big project going, it's not gonna happen.
People used to describe um Django as the meat grinder.
And because it would get, you know, you new contributors would come along and they'd get eaten up by the meat grinder.
And they'd say, Oh, we need some fresh meat for the meat grinder.
This was a mini Django chat episode.
We plan to do more of these in the future around timely events.
So rest assured if Carlton breaks Django again, you'll hear about it here.
See you next time.