APIs, Sustainable Open Source and The Async Web With Tom Christie - Episode 250

Summary

Tom Christie is probably best known as the creator of Django REST Framework, but his contributions to the state the web in Python extend well beyond that. In this episode he shares his story of getting involved in web development, his work on various projects to power the asynchronous web in Python, and his efforts to make his open source contributions sustainable. This was an excellent conversation about the state of asynchronous frameworks for Python and the challenges of making a career out of open source.

Do you want to try out some of the tools and applications that you heard about on Podcast.__init__? Do you have a side project that you want to share with the world? With Linode’s managed Kubernetes platform it’s now even easier to get started with the latest in cloud technologies. With the combined power of the leading container orchestrator and the speed and reliability of Linode’s object storage, node balancers, block storage, and dedicated CPU or GPU instances, you’ve got everything you need to scale up. Go to pythonpodcast.com/linode today and get a $60 credit to launch a new cluster, run a server, upload some data, or… And don’t forget to thank them for being a long time supporter of Podcast.__init__!



Announcements

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, node balancers, a 40 Gbit/s public network, and a brand new managed Kubernetes platform, all controlled by a convenient API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they’ve got dedicated CPU and GPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!
  • You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Corinium Global Intelligence, ODSC, and Data Council. Upcoming events include the Software Architecture Conference in NYC, Strata Data in San Jose, and PyCon US in Pittsburgh. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.
  • Your host as usual is Tobias Macey and today I’m interviewing Tom Christie about the Encode organization and the work he is doing to drive the state of the art in async for Python

Interview

  • Introductions
  • How did you get introduced to Python?
  • Can you start by describing what the Encode organization is and how it came to be?
    • What are some of the other approaches to funding and sustainability that you have tried in the past?
    • What are the benefits to the developers provided by an organization which you were unable to achieve through those other means?
    • What benefits are realized by your sponsors as compared to other funding arrangements?
  • What projects are part of the Encode organization?
  • How do you determine fund allocation for projects and participants in the organization?
  • What is the process for becoming a member of the Encode organization and what benefits and responsibilities does that entail?
  • A large number of the projects that are part of the organization are focused on various aspects of asynchronous programming in Python. Is that intentional, or just an accident of your own focus and network?
  • For those who are familiar with Python web programming in the context of WSGI, what are some of the practices that they need to unlearn in an async world, and what are some new capabilities that they should be aware of?
  • Beyond Encode and your recent work on projects such as Starlette you are also well known as the creator of Django Rest Framework. How has your experience building and growing that project influenced your current focus on a technical, community, and professional level?
  • Now that Python 2 is officially unsupported and asynchronous capabilities are part of the core language, what future directions do you foresee for the community and ecosystem?
    • What are some areas of potential focus that you think are worth more attention and energy?
  • What do you have planned for the future of Encode, your own projects, and your overall engagement with the Python ecosystem?

Keep In Touch

Picks

Closing Announcements

  • Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management.
  • Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes.
  • If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story.
  • To help other people find the show please leave a review on iTunes and tell your friends and co-workers
  • Join the community in the new Zulip chat workspace at pythonpodcast.com/chat

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Click here to read the raw transcript...
Tobias Macey
0:00:12
Hello, and welcome to podcast, the podcast about Python and the people who make it great. When you're ready to launch your next app or want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at linode. With 200 gigabit private networking, scalable shared block storage, node balancers, and a 40 gigabit public network all controlled by a brand new API, you've got everything you need to scale up. For your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. They also have a new object storage service to make storing data for your apps even easier. Go to Python podcast.com slash linode. That's l i n o d today to get a $20 credit and launch a new server and under a minute, and don't forget to thank them for their continued support. This show you listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen and learn from your peers you don't want to miss out on this year's conference season. We have partnered with organizations such as O'Reilly Media chronium Global intelligence, od sc and data Council. Upcoming events include the software architecture conference, the strata data conference, and pi con us. Go to Python podcasts comm slash conferences to learn more about these and other events and take advantage of our partner discounts to save money when you register today. Your host, as usual is Tobias Macey, and today I'm interviewing Tom Christie about his work, Django rest framework starlet async, and Python in code and all the other areas that he's been involved with over the past few years. So Tom, can you start by introducing yourself?
Tom Christie
0:01:54
Hi, yeah, sure. My name is Tom. I'm currently working Working on open source software full time. I'm running a small at the moment one person business called and code and working on all manner of things Python web related.
Tobias Macey
0:02:15
And do you remember how you first got introduced to Python?
Tom Christie
0:02:18
Sure. So well, I say sure. I'm not sure that I completely do because I've been in the game long enough that it's gotten slightly Willie. At some point along the line.
0:02:30
It went from,
0:02:32
oh, this language. See, this new thing seems nice. This looks like a much better way to do the stuff that I'm currently doing with Paul and bash scripts. I was I think it was probably when I was working for a content distribution network. And all of a sudden, having been used to working with Paul and bash scripts or with See there was suddenly this This new language just appeared on the scene for me. And it was it was just so productive and so nice to work with. Yeah, like that.
0:03:10
But as I say, long enough ago now that not entirely sure,
Tobias Macey
0:03:15
quite when it was. Yeah, it's definitely interesting to try and catalog back of how did that get started? I know I started in Python pretty early in my career, but I don't remember exactly how I first came across it. So I don't blame you for not remembering the specifics,
Tom Christie
0:03:29
what got you into programming in the first place.
Tobias Macey
0:03:33
So actually ended up getting my degree in Computer Engineering. And so that was my first introduction to actually writing code. And my first class was in c++. So by the time I got to Java, and the next semester, I said, Oh, my goodness, this is so concise and easy to write. And then as I got more dynamic, like, Yeah, but actually it was I first got introduced to Ruby because I was working at a place that did Ruby on Rails, and it just never worked. sunk in and ever stuck. And somehow or other I ended up with Python, I think because I was working as a sysadmin. And just trying to figure out like, What are all these things doing? Once I actually figured it out, that was the one that really fit my brain and stuck. And that's the one I've been working with for the past 10 years or so. Yeah,
Tom Christie
0:04:16
yeah. Yeah. I mean, I, when I was first going, it was all lots and lots of backend stuff, working in C and c++. And I kind of I moved into the web space as I progressed, because I wanted to get more of that. Yeah, but I want to be able to build things that I can see. And I want to be able to, you know, like, actually build services and when you're working in very, very back end centered stuff, you know, like I did a lot of speech recognition, and then lots of core networking stuff, and you're always part of this much, much bigger company, and you're always building stuff that feels so far away from the customer, that they're moving into Python and The web space just felt so much more enabling, you know, I can actually build stuff and put it out there and show people.
Tobias Macey
0:05:08
Yeah, definitely useful to be able to have something that you can point to particularly if you're talking to somebody of what is it that you do. I build that. Because otherwise it's Oh, I build things that do this other thing that you might use, you know, three or four steps removed.
Tom Christie
0:05:26
Although it's still difficult describing the moment because most people,
0:05:29
you know, people will say, Well, what is it that you build? Or what do you do? Well, I build software for people who build software. Yeah, that's about as close as I can.
Tobias Macey
0:05:40
And in talking to people in the Python community, there are a few different areas, particularly in the web that people have come in on so some people will have cut their teeth on zope. Other people will have come in more in the Django era, where were you in that overall journey of Python and the web when you first started getting involved in it?
Tom Christie
0:06:00
Django was pretty much my first web framework that I started working on Python with. Yeah, and it wasn't really that long since I've been working with Django before I had the idea for is this neat API framework that I'd like to build?
0:06:25
Yeah,
0:06:26
I, I got some contracting position for a little Django job somewhere first. And I just moved to Brighton and I was just noodling away on that, and then started working on the side project.
Tobias Macey
0:06:39
And so that has become Django rest framework, which is now sort of the de facto standard for people who want to build well structured rest API's in Django. So I'm wondering if you can talk a bit about some of the history there of how it came to be and how it came to be so popular?
Tom Christie
0:06:56
Yeah, sure. Well, it's been quite a long time now. So it's been going for more than I think, more than 10 years. The original impetus for the project was
0:07:11
the thought of why is it that we're building all of these web API's, but they're not.
0:07:20
You can't interact with them natively in a web browser. Why are these web API's not web browsable? And I had a few few little thoughts about, well, how would we approach this? And I looked at a couple of the existing projects in Django, I think it was piston was the big one that was around at the time way back and thought, Oh, no, I can't quite make it work with this. I'll just start my own thing in order to show how you would do this. And I was so keen on the idea of web browsable web API's that it was was this big motivation to kind of keep improving the projects to try to get the idea out there. And it yeah, it kind of carried on and it carried on. And tasty pie was really for a long time kind of more feature complete than the rest framework, but just kept plugging away on it. And then got a little bit lucky with the timing because at some point, I kind of thought, okay, I can see how I'd like the next version of this to look. And the timing just happened to be right that there was kind of a big enough need for it in the community. So when we ran a very first Kickstarter for it, that ended up being pretty successful. We raised like 30,000 pounds. I was working with a small company called dev ops who were really keen on The idea of doing this so we kind of we organized the Kickstarter together. And they said, okay, you know, if you make this much money, you'll be able to allocate that much of your working time on it. So even though I was working in a full time job, we managed to figure out a nice way to make a Kickstarter work and be able to free up a bunch of time. And that really progressed the project massively. From there. Then a few years later, I thought, Okay, well, I can see what I'd like to do for the next tranche of work on this. And I was thinking about, how am I going to approach this am I going to do another Kickstarter or so I didn't really want to do that. Because really, what I wanted was a revenue model that was ongoing rather than one great big lump sum of right. There's a chunk of money go into a bunch of work. And again, kind of got lucky with the timing because Mozilla had just released their Big open source grants program. And Mozilla happened to use Django rest framework. So I applied to Mozilla for one of these grants.
Tobias Macey
Tom Christie
0:10:10
at the same time was thinking, Okay, well, I'd really like to launch a recurring model. And when we were successful in the Mozilla grant came in, that gave me enough runway to be able to say, Okay, I'm going to give this a shot. Let's launch an ongoing funding program for it. So I stepped away from my job. And I knew that I had six to nine months of safety cushion and launched the recurring sponsorship model with encode. And I've been working funded by that for the last three years also a three and a half years.
Tobias Macey
0:10:57
From your work on Django rest framework. I know that that is still an ongoing project and one that's still supported. But with the introduction of asynchronous capabilities in the core Python runtime, I know that you also decided to revisit what API's mean in that landscape. And that took the form of starlet so I'm wondering if you can talk a bit about what the starlet project is and how your work Django rest framework influenced your thinking with this new project and how the two sort of play off of each other or relate to each other or not?
Tom Christie
0:11:32
Yeah, sure. So I could see that there were lots of new async web frameworks coming up. And Andrew Godwin was also working in this area and then introduced or was just starting to talk about introducing as gay. So you have whiskey, which is the interface layer between The servers such as ganic, on the web frameworks, and it provides this really nice separation. That means you don't have to really be concerned at all with any of the gnarly stuff that the web server has to do when you're in application space. And whiskey is designed to work with thread concurrency pro standard standard threaded concurrency programs. And when async came along, there was this new need for something similar, but in the async space that was able to Additionally you know, as well as handling HTTP, also be able to handle web sockets and various other stuff like long running HTTP requests that are streaming data back down. And and other stuff. Like, dealing with background task more gracefully. Yeah, so Andrew Goldwyn, it started working on as gay In order to bring async some amazing capabilities into Django, through Django channels. And what I wanted to do was build on the work that he was doing with ASCII and bring that into the wider space of Python web frameworks more generally. So rather than ASCII being just centered on, its this Django initiative, how do we build up a whole web ecosystem, a whole Python async web ecosystem based on ASCII, and Starla is right. Here's the foundational set of tooling that will need in order to be able to do that. And there's a few other projects now where people have then started building higher level web frameworks on top of that high fast API, which is fantastic.
Tobias Macey
0:13:51
Yeah, the it's definitely interesting how much of an explosion there is now in new web frameworks that are exploring the A capabilities of Python where it seemed like for a while, it had sort of stabilized around Django and pyramid and flask as being sort of the main core of the web ecosystem in Python with a few different special cases here and there. But now that async is rolled out, and particularly with the new ASCII specification as a standardization that people can orient themselves around, there's a lot more activity happening, and new framework seem like they're coming out maybe every few weeks. So it's definitely interesting to revisit the web space in this new landscape of asynchronous capabilities and how that plays into the performance characteristics and the language choices that people are making. Because for a little while, there was a bit of an exodus to things like go or node because of the native async capabilities. And now that that's built back into Python, people are starting to maybe come back into the fold and rethink about what it means to right away application in Python?
Tom Christie
0:15:01
Yeah, I don't really know how much that message has gotten out. But I think it's, you know, it's been the landscape, the async web landscape in Python is being coming around really, really quickly. And it you know, for me, one of the big things that I try to promote with it is that it's all about trying to hit a sweet spot between for Python for both productivity and performance, as well. As you know, I'm starting to look at Well, what cool stuff can we build that's making use of web sockets? And how can we make better use of neat real time, stuff that we can plug into our web applications as well, which is going to be really interesting too,
Tobias Macey
0:15:52
and digging more into the funding and sustainability model of the work that you're doing on starlet and work within ASCII ecosystem. You mentioned before that you had a couple of experiences of things like Kickstarter or this grant application for getting lump sums to support your development as well as doing freelance work. I'm wondering what your current thinking is on the overall sustainability of open source as a business model and as an individual contributor, and what your current hopes and goals are with the ENCODE organization as a umbrella for doing all of this work.
Tom Christie
0:16:31
bit hard to say, Why die I can talk about my experience, you know, at the moment encodes just about manages. So, we have a pretty simple model. There's three different tiers that companies can sign up to. And the monthly recurring revenue that we get from that is just about enough to cover a salary for my
0:17:01
I think I you know, ideally
0:17:05
I would like encode to find a way to bring in another another revenue stream as well on top of the sponsorships I've got some thoughts about something that we could bring into the product space there perhaps that bill that is still an open source product so for example in the way that century managed to both remain an open source product and yet massively succeed as a company think those are the the obvious kind of if you can do the same sort of thing that they've done that for Obviously, I'm not expecting anything on that magnitude Franco. But I would like to follow their kind of model sometime or, you know, the other thing would be just keeping to press for what a solid return on investment the sponsorships offer and try to get the communities a whole pushing for more of these kinds of models, but with larger amounts involved, because the pitch that I generally make, if I'm on the stage and there's a whole bunch of people out there is I want to work for your company full time for $100 a month, or $150 per month. And I'll be working full time on building out all of the stuff that you're using day after day after day. The, you know, the stuff that's been built out as a result of enco being sponsored. You know, over the last three years, there's been starlets being an ASCII web framework. There's unicorn being a web server. There's a whole stack of work on Django rest framework. There's been HTTP x. So a new, a new HTTP clients that you know, so much stuff has come out as a result of the funding. And yet, any one individual company, their outlay on that has been minimal compared to the price of paying for a full time developer. So yeah, maybe trying to push for some higher sponsorship tears as well might be an option. But what I think one of the one of the difficulties for people trying to get into it is it's a lot easier to make the case for sponsorships if you're able to actually free up the time to put in the work as a result, right. So I kind of was very fortunate to be able to get over this hurdle of right I've got enough coming in that I can afford to work on this full time. It's much more difficult if you're actually in a full time job to go, What? How am I going to launch? You know? How am I going to make the case for, I'd like your company to give me this amount of money in order for me to keep working on this, when you're only able to ever work on it as a side project and your time is constrained anyway. So getting over that kind of initial jump, I think is, is one of the really difficult things as well.
Tobias Macey
0:20:30
And I find it interesting too, that you've decided to go about this independently and build your own organization and try and establish these direct relationships with sponsors. And I'm wondering what your thinking is on the benefits of that at least for yourself versus going with something like the tide lift model or the open collective model of using the sort of broader reach of these organizations as a means of establishing relationships that you are Maybe one step removed from but still being able to use that as a means of gaining funding.
Tom Christie
0:21:04
I mean, first off, I don't think either of I don't think open collective existed when we launched the model and might have done tide lifts certainly did. And I'm a bit lukewarm on the tide left model because basically it, you know, it brings in an extra intermediary. And there's already so little cash in the system that I don't particularly want to be paying somebody else to sit between me and the sponsors. But open collective, I think, is actually as it happened, and seems to be organized much, much more similarly to the way that we do our sponsorships and you know, stripers stripe, and also now that GitHub have their own mechanism for getting sponsors to sign up, you know that there isn't actually that much more To do in terms of what infrastructure Do you need if you just want to bed to start taking payments from folks? So yeah, having that direct relationship certainly works for me at the moment. There's other things that I would consider as well, like, you know, for for HTTP x. And some of the, you know, there's a whole load of vital HTTP infrastructure for Python that is really underfunded. And I'd be really interested to see a model where it's not going directly to encode, but instead, we got a whole bunch of people together and try to launch the same sort of funding model but maybe have the funds go directly to the PSF who could then contract out for work, you know, awesome. Like that. So yeah, I'd be I'd be interested in alternatives one day, but certainly having a direct relationship to the sponsors as being quite freeing over the last four years, although there's I suppose there's one thing that has been a bit of an unknown to me is they were originally launched as Django rest framework sponsorships, and that's still what they're building. And that's still how the kind of the package is presented. But that's not where all of my time is dedicated, though. These days. There's Django rest framework, but there's all the other stuff that I'm doing as well. And the should I start calling these encode OSS sponsorships, and is that a good sell for most of my sponsors or not? is still a bit of an unknown for me. So, but I mean, realistically, that's where it actually is at the moment. So
Tobias Macey
0:23:58
yeah, marketing and sales are Hard.
Tom Christie
0:24:01
Yes. Yeah, I'm branding to.
Tobias Macey
0:24:05
Absolutely. And in terms of the particular market that you're focusing on, you mentioned earlier that you're spending a lot of your time and energy on the web and the Python ecosystem there in. And we've also mentioned how a lot of your current focus is on some of these different aspects of async within the web context. And for people who are familiar with Python web programming, in the context of whiskey and this threaded model where everything is synchronous, what are some of the practices that they need to unlearn or some of the communal knowledge that is no longer accurate and this new land of async
Tom Christie
0:24:46
I wouldn't exactly say that. I mean, you know, I would bring as much as possible chango it you know, Django is such a solid It's kind of best working Practices Guide that I would say, you know, look to how Django does stuff and try to do stuff as similarly as possible to that the difference is more that because in a lot of cases, you're having to build everything up from scratch again, and you can revisit some of the finer details of how you're approaching these things. Right? So for example, you know, starlet that's built all the way through to try and be a very low complexity stack while still being super capable. The but the one the one thing that I have tried to approach a little bit differently there is trying to build more components that are reusable across different frameworks rather than being tied to a particular framework. So for example, trying to promote ASCII, ASCII middleware rather than framework specific middleware and trying to promote like pluggable ASCII applications, rather than everything being coupled to the framework. So for example, in starlet there's a component, which is a static files app, but and you can plug this static files app into any ASCII web framework. And also, you know, like the middleware is all just ASCII middleware. So you can plug it into any ASCII framework. They say with the test client, the test client is built to interact with the ASCII interface. So you can use the test client with any ASCII web framework. So trying to improve the interoperability by having components designed kind of add that level
Tobias Macey
0:26:57
and another major Recent occurrence is the final deprecation of Python two. And I'm wondering what your thoughts are on how that's going to impact the overall growth and direction of the asynchronous web and Python now that there are fewer people who are going to be trying to maintain backwards compatibility with Python two, and will free them up to be able to be more forward looking and their usage of the language and its capabilities.
Tom Christie
0:27:30
Not sure really, although it's been nice moving on from actually like, being able to drop support for 3.5. And before that, I think, you know, originally was stolen. I can't remember where we work in 3.4 as well not but really, it's only from, you know, the more recent releases, so certainly 3.6 onwards. I've had enough of that. There were a few Few async primitives that weren't there before, I'm gonna forget right now, but something like you know, aceing generators, also, some bits and pieces that will be really fiddly to do in earlier versions of three. So it's been nice seeing Python three really start to mature and all the new versions there starts to come along.
Tobias Macey
0:28:21
As you continue down the road of working in these different libraries and the current set of frameworks that you're supporting and continuing on building your career around open source, what are some of the areas of potential focus that you think are worth more attention and energy for yourself and also just for the broader community?
Tom Christie
0:28:43
For myself, where I would, where I would really like to be is somewhere is focusing on how do we bridge the gap between frameworks by product space. So what I mean when I'm talking about that is, if you've got a team who wants to start working on a new, say web back end, at the moment, they've kind of got two options. You can go for a hosted service, something like Firebase, where you're then kind of completely in on that product, and you're not really ever going to be able to migrate to anything else. And if there's something that the product doesn't do, then you're kind of out of luck. Or you go for something like rails or Django and you build everything up from scratch. And I think there's this huge space in the middle for how do we start to build more and more evolve frameworks that start off, you know, they you can get started with them, like a product. So here's the page where you want to start fleshing out your new API and be able to start plugging a front end into it because there's already a service there that's live and going. But, okay, you want to take complete control over that and actually get the source code for the thing that's running at the moment and change it and start hosting it yourself. Well, here's this big button over here that will let you do that. So that we're giving developers this really nice, easy on ramp to get productive really, really quickly, but without locking them in to a particular product space as well. So that's kind of where I'd really like to focus. And I think, you know, like the opportunities there that I would like to try and tackle, you know, stuff in the API space in the real time API's in particular
0:30:56
and
0:30:59
you know, Both graph qL and addressed as well, because I still see so much potential for improvement in the standard rest web API's that are being built out and improving that space.
Tobias Macey
0:31:15
And another area that seems to have been one of the slowest to develop, particularly in the asynchronous environment is the database connection and being able to handle that in an asynchronous fashion. I know that you've got the ORM library that's looking to tackle that problem. So I'm wondering what your thoughts are on some of the inherent challenges in that space, and then just some of the direction that you think that that can go and some of the directions that you'd like to see it go as far as being more widely adopted and more ubiquitous to remove some of these different layers of synchronicity in the overall process flow for these web applications.
Tom Christie
0:31:59
I guess there's a couple of Different things right?
0:32:03
When
0:32:06
when I first started looking at the existing asynchronous database drivers, there wasn't really a standardized interface for those. So where when you're working with Django, if you want to switch to a different database, you just need to switch the database URL in your settings. And in a whole bunch of cases, that's going to be the only thing that you need to do. Otherwise, everything's transparent. And you know, you might be running your tests against SQL light, but in production, the staging your Postgres, although the application code looks exactly the same in both cases. So trying to build layers of internal interfacing with this stuff in the way that you're not locked into right? This is the one particular async database drive that I'm using. But instead, let's have a sensible level for interacting with the database that doesn't need to know about those and just be able to plug in whichever database driver we want underneath that or swap out to a different one if there's some particular gnarly problems with it, and we want to use something else. So that and then trying to introduce really nice modularity in the different laser concern. So I've got two different projects as databases, which is the kind of lower level we just want to execute SQL alchemy core statements, and then there's RM on top of that, which is how do we then build a kind of a fully featured or I'm on top of that, so Trying to look at nice layering. And also, again, how do we approach this in a way? That's not framework specific. Right? So the Django ORM, if I was working in the sink space, would be kind of my preferred choice, because I just find it like the easiest thing to work with. But I find it a bit of a shame or, you know, I, I think it would be lovely to have a project that's as mature as that but isn't specifically tied to one particular framework. And that's not even always because I want to choose to use it with a different framework, but sometimes it's because, well, if I want to go and understand how this component works, if I know that it's properly bounded, then I've got this kind of one set of stuff that I need to look at and I don't need to think about, oh, is there something magic? Django settings this changing this thing? Or do I need to look at how this other module interacts with that? It's just about kind of keeping the complexity nicely bounded at each different level.
Tobias Macey
0:35:14
Yeah, it's definitely nice being able to treat different layers in isolation without having to try and figure out what are all the additional layers sitting on top of it, that are actually manipulating the request along the way or adding different context to that I have to try and figure out how to fit into my head, be able to comprehend the overall flow of what's happening.
Tom Christie
0:35:34
And it doesn't make sense to do these things with Django or Django xrm because they're so mature and that they're in their space. But, you know, when you happen to have a great big new green space that needs building up anyway, that's the time to kind of that's the time to do it.
Tobias Macey
0:35:57
And are there any other aspects You're work with the ENCODE organization, or your work in the web space and async in general, or any of the other aspects of the Python language or community or your career that you're focusing on that we didn't discuss yet that you'd like to cover before we close out the show?
Tom Christie
0:36:18
Well, I guess there's HTTP x is the newest project that I've been working on. haven't talked a lot about that today. So that's a new HTTP client, where we're aiming for feature parity with requests, but also adding support for both sync and async API's with it. And also bringing support for both HTTP 1.1 and HTTP two. So that's the big thing that I'm working on at the moment. And other than that, we'll see what comes next.
Tobias Macey
0:36:50
Yeah, the HTTPS project is definitely pretty ambitious, given the ubiquity of requests across the entire community. So wondering what Your thoughts are on the API design of requests as far as Is it a benefit to you? Because you don't have to think about that interface? And you can think about just the plumbing of things, or is it acting as a constraint? Because maybe there are different things that you want to be able to do, because of the async capabilities that you're adding. It is it's it's a man, its massive, massive benefit. You know,
Tom Christie
0:37:22
it's easy to kind of take for granted, but
0:37:25
it just, it takes away so many places where you would otherwise have an open API design question and you go, Okay, well, I don't really have to, I mean, it was quite involved, trying to figure out the right way to approach
0:37:44
bring both an async and a synchronous API to that and there are a few places where it diverges from requests because of that, but not having to kind of think about all of the rest of that space has been Very helpful.
Tobias Macey
0:38:01
And are you keeping an eye on what's going on with the HTTP three standard that they're trying to introduce right now? And what are your thoughts on the just sort of direction that the web is moving?
Tom Christie
0:38:12
Yeah, so Jeremy line is doing a whole bunch of work on that. And we've been chatting and yes, I can see HTTP three support coming to the HTTP x library at some points. I don't know whether there's necessarily as much benefit in Python or other dynamic languages as there might be in other different contexts. Like, you know, you need to actually look at the, the because it's more compute intensive, right. So there might not be as much benefit for Python as there were in some very, very low lower level languages, but he Yes, I can definitely see it coming to a CSP x at some point. And it'll be a case of looking at the evidence for saying, Well, how much difference does this make? And it's more likely that it would be, look, here's this optional thing that we have, at some point in the future, that if you want, you can try it out and give it a go and see, does this make a difference in your case? And it's likely to just be some more specific kinds of use cases where actually makes a difference for users?
Tobias Macey
0:39:33
Yeah, it's definitely interesting to see how the web has sort of accelerated its evolution where we had HTTP 1.1 for decades, and then all of a sudden, there's HTTP two and then only a few short years later, they're trying to add a new protocol on top of everything else.
Tom Christie
0:39:48
Yeah. And I think it's worth folks as well. Taking quite a Balanced View onto it as well. The even going from HTTP 1.1 to eight cgp to I think, you know, this site, there's so much extra complexity that that brings. And it should definitely be treated as a. Okay, let's try using this. Does it? Does it actually improve things or not? You know, don't just blindly go Oh, wow, HTTP to that sounds snazzy. That's got to definitely be the thing that we ought to be using, right. So yeah, I kind of have slightly mixed feelings about the the ever growing complexity of HTTP, and http 1.1. That's enough gnarly educators in it anyway.
Tobias Macey
0:40:40
Well, for anybody who wants to follow along with your work or get in touch, I'll have you add your preferred contact information to the show notes. And so with that, I'll move into the pics and this week I'm going to choose a couple of movies that I watched with my kids recently. First was a movie called abominable. That was just very well done. visually appealing and humorous about a group of kids who are trying to get an abominable snowman across China back to his home in the Himalayas. Oh, and the other one is magnificent mysteries of evil, which is a sequel to the original maleficence movie, which is taking a different view of the The Sleeping Beauty story, giving it a bit of a spin. So just very well done visually good storyline had a lot of fun watching that as well with the kids. So if you're looking for something to watch, definitely worth checking out either of those. And so with that, I'll pass it to you, Tom, do you have any pics this week?
Tom Christie
0:41:36
All right, sure. So out of nowhere, let's go for the lobster, which is just a very strange film. That's all strange and sometimes funnies quite dark. Yeah, I won't say anything about it. It's just odds and something that I've just about finished reading Recently a book The the master and his emissary, I found really, really interesting. It's about the two different hemispheres of the brain and the author's particular take on the kind of the cultural implications of what the two different hemispheres each focus on what they're kind of the world view that each of the hemispheres. So that's the master in his emissary I in McGilchrist,
Tobias Macey
0:42:33
I'm definitely have to take a look at that. Well, thank you very much for taking the time today to join me and share your experience of working in the web context with Python and delving into a saying and your experience of approaching sustainability of open source. Definitely a lot of complex and interesting topics. So I'm glad that you are making progress and having success with those and I hope you enjoy the rest of your day. Cheers. Thank you so much to buy it. Thank you for listening. Don't forget to check out our other show the data engineering podcast at data engineering podcast com for the latest on modern data management and visit the site at Python podcasts calm to subscribe to the show, sign up for the mailing list and read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email host at podcast in a.com with your story to help other people find the show please leave a review on iTunes and tell your friends and coworkers
Liked it? Take a second to support Podcast.__init__ on Patreon!