#448: Full-Time Open Source Devs Panel Transcript
00:21 Well on this episode I put together an amazing panel of guests who all have done exactly this
00:27 Turn their project into full-time work and even companies in some cases. We have Samuel Colvin Gina Huska Sebastian Ramirez
00:35 Charlie Marsh, Will McGugan and Eric Holscher on to share their stories. This is talk Python to me episode
00:42 448 recorded December 7th 2023, You Welcome to talk Python to me a weekly podcast on Python
01:03 This is your host Michael Kennedy Follow me on Mastodon where I'm @mkennedy and follow the podcast using @talkpython both on
01:12 fosstodon.org keep up with the show and listen to over seven years of past episodes at talkpython.FM
01:18 We've started streaming most of our episodes live on YouTube Subscribe to our YouTube channel over at talkpython.FM/youTube to get notified about upcoming shows and be part of that episode
01:29 This episode is sponsored by Basedash Basedash uses AI to build a dashboard for your database
01:37 Get a custom admin view in your Postgres Microsoft SQL Server, MySQL, Maria DB or Redshift database
01:45 Get started for free at talkpython.fm/base dash and it's brought to you by Sentry
01:51 Don't let those errors go unnoticed use century get started at talkpython.fm/sentry. Hello everyone
01:58 Charlie, Will, Eric, Sebastian, Gina and Samuel what a big group of people we have here today an awesome awesome group
02:05 Thanks for being here everyone. It's gonna be super fun to have you on the show
02:09 You know I know there's so many people out there that are dreaming of an open-source project or even working on open source and contributing to it
02:17 But it's something they squeeze in the last hour of their day and at some point all of you have made this
02:24 Amazing transition to where there's enough support There's enough interest in what you all built that becomes your full-time thing
02:31 Right, which is I know for many out there live in the dream. So you all are living the dream. I'm
02:36 Hopefully you feel that way But it's gonna be really great to kind of just explore your projects
02:42 How do you make that transition and you know what you're up to?
02:45 So we have Samuel Colvin on from Pydantic and he has the tightest schedule
02:52 He's squeezing us in on a far-flung trip work trip. So let's go to you first Samuel
02:58 Just you know, tell people a bit about who you are and what your project is to get started. Yeah, I'm Samuel
03:04 I maintain Pydantic which is a data validation library for Python that uses pipelinks
03:08 So those weird things you've seen after the colon in Python that mostly do nothing unless you run mypy or pyright
03:15 Pydantic basically enforces them. Almost exactly a year ago I was I was sort of working on Pydantic full-time by then
03:22 but really spending my own money to do so and a big American VC got in touch and
03:27 Fast forward I raised some money and started a company Yeah, beginning of this year. I hired now 10 people and I'm actually as you mentioned
03:35 I'm in Istanbul at the moment with the whole team It turns out if you have a team with Americans, Iranians and Russians
03:41 That Istanbul is one of the few places that you can actually meet officially
03:45 So yeah, we're having a really fun week in Istanbul mostly working together and then going out for dinner
03:49 Which is where we are at the moment. I hope that's a good fix. Absolutely
03:53 And what a cool experience that you get to hang out with all these people talking about your project in Istanbul
04:00 I just had by the way, I just had I mean just think the other thing I would add is one of the best bits of it has been being able to hire
04:06 friends of mine from open source people who had I think all but two of the people here have
04:11 contributed to Pydantic before we started the company which is how I Yeah
04:14 hired the first I think six people and then a few more so one of the best bits has been hiring other people to come
04:20 and work on open source with me while still being able to like, yeah, pay them properly. It's been really fun
04:25 Yeah, awesome. I see a lot of people shaking their head out there as well
04:28 I just coincidentally I recently had Sydney Runkle on Who works with you and she's such an inspiration that show is not out yet
04:37 But has already been done yet through the weird time shifting of podcasting
04:41 So it'll be out before this but it's not out yet. So anyway, very very cool team you got there
04:46 I guess we'll go around the order of the the video Pretty bunch pictures here. So Charlie, you're up next
04:53 Hey, so I'm Charlie I am the author of Ruff which is a Python linter code formatter and code transformation tool written in rust
05:04 I started started working on Ruff about a year ago. Like maybe like October last year similar time frame to Samuel
05:11 Yeah, yeah, and I worked on it full-time for a while Similar to Samuel although probably not for quite quite as long
05:17 I was working on it full-time without any funding and then Similarly, I started a company around around Ruff and really around the vision of trying to build high-performance Python tools
05:27 So take some of the things that make Ruff nice to use and popular and well liked and try to apply those
05:33 Principles to other parts of the the Python toolchain. Yeah, we're a team of six and
05:38 We're fully remote. So no two of us live in the same in the same place I guess a couple of us live in the same country, but
05:46 Those those live in different countries. Yeah, and we span basically us central time - I don't know
05:52 What we have one we have one person in in India and one person in Minneapolis
05:57 And that kind of stretches like the full-time says the team that's a good stretch. It's good stretch there
06:02 Well, yeah, absolutely. Congratulations on Ruff. It is really really taken off and I know the guy right below you and
06:10 Where's Sebastian was I saw him saying nice things about it with FastAPI and so on. Yeah. Yeah, I know. Thanks a lot
06:17 It's just funny because I think I was saying before I started recording I think when I came on talk Python last time
06:23 I think that might have been my first time ever on a podcast So and it was to talk about ruff and so I was like, oh wow people care about what I'm doing
06:28 That's super cool and pydantic and FastAPI were some of the earliest Adopters that people had heard of so they were like very early on in the in the life cycle and helped a lot with
06:40 You know getting people to see ruff and sort of care about ruff and and know that smart people are using it
06:46 That's awesome. Well when you visit talk Python or the courses website or others, it's it's all ruff fide
06:54 I don't know what the the adjective of ruff is but it's been ruff It's been ruffed up and it works great it's really amazing that makes the code sound really bad
07:05 It's like saying it's sick like oh that was a sick trick they did it mean
07:11 Yeah, that code is a rough man. All right. Well, it's your code rough. Who are you? It's got some rough edges certainly
07:18 Welcome. Yeah, I'm well I'm probably best known for a library called rich and rich is a library for writing
07:25 Formatted content in terminal and you can write put tables and progress bars and syntax how I did code all sorts of things
07:32 And then that became quite popular in the Python the world I think there was a there was a need for it and two years ago. I founded text allies
07:40 Which the company which builds on rich to produce a library called textualize which allows you to build user interfaces
07:48 Inside terminal and these are kind of more like web interfaces and less like courses application
07:54 Yeah, I was just think almost like flexbox you can dock stuff to the side and that's part of a UI
07:59 But it's it's pretty amazing what you've built. Yeah, I think it's pushed the terminal far beyond what many people thought the terminal should be doing
08:06 It's been very cool. It's been a process of discovery. It's kind of strange
08:09 You've got technology that's been around for for decades and still discovering things like they can do which and people haven't tried before
08:17 So yeah, it's been a lot of fun and it's been great to work with a small team of developers
08:22 We've got a small core here in Edinburgh Scotland and we got one developer in Portugal
08:26 So yeah, it's it's it's been great and I love the reception and love what people are building with it. Yeah, it's so many people are
08:34 Interested in using rich and there's a ton of plugins, right?
08:38 There's like rich click and there's py test rich and all these things like well, whatever we're doing
08:43 It should also have what you built, you know, yeah, I love to see that I love to see the ecosystem building our our adjective is richified which is not richified. Okay
08:51 Yeah, just you know, that's rich. My code is rich. Okay, richified. Got it. I love it
08:57 We all have adjectives. We got to put on things. Yeah, I'm a big fan of your your you and your team's work
09:02 By the way, I mean, I'm sure you hear all the time that you built awesome stuff. Cheers. Appreciate it
09:07 Yeah, indeed. We all are Eric. Welcome. You and I are Coming in somewhat local here out of Portland not Istanbul. I'm actually out in Bend at the moment
09:15 So yeah, I absolutely love Ben's lots of mountains and whatnot But yeah, so my background mariculture folks probably know me from kind of the read the docs ecosystem
09:24 I feel like I've been doing this for a while compared to everyone else here
09:27 The project actually started in 2010, which is kind of amazing and then we actually built the started the company around it in 2014
09:34 So coming up next year, that'll be 10 years. And so yeah, and we're all bootstrapped. So we haven't done any venture capital
09:40 It's all been kind of just build it built up the open source and then kind of turned it into a company on top
09:44 Of that we kind of have a business model of doing paid for private hosting
09:48 You know companies as well as advertising on open source And we spun out a kind of a separate business called ethical ads that we built kind of to basically make you know
09:56 Better advertising on the internet not doing any of the creepy tracking stuff
10:00 So read the docs is so critical to the open source space not just Python, but especially Python. Yeah
10:06 Yeah, I mean so awesome work on that and then just you know, good job on the ad stuff as well
10:10 It's the tendency of the whole ad space is to be super creepy and just like how much can we resell and how much can?
10:18 We buy to mix in to like create these shadow profiles and it's not a good social trend
10:23 It's it's not good for people and it's not really necessary Right, like if I want to you know
10:27 I've sponsored ads on read the docs or had run ads on read the docs before and we had a flask course and let's just
10:33 you know run that ad on Flask instead of like let's see we can track somebody through Instagram over to Facebook who knew
10:40 We call it a newspaper advertising and it's been really cool with the advances of ML like the content targeting has gotten pretty good
10:48 Right, so it it's definitely a lot easier technically these days to to kind of do that content matching
10:53 But yeah, I think in terms of the kind of open source Maybe the way that I'm a little different than other folks here is we're actually running something more akin to a service
10:59 So read the docs all the code is open source, but a lot of the usage is open source projects using our hosted service
11:04 We do obviously ship a lot of code Probably our Sphinx theme is probably the most kind of well-known
11:09 Actual software that people are running a little bit similar to the folks here the kind of sidebar on the left and and yeah
11:15 So I think that's kind of the background is yeah, we have a little bit of everything
11:18 But yeah, it's a little more akin to something like a sass app I would say but the code is all open source
11:22 We do get a contribution in that way as well. Yeah, awesome And you know sounds a little similar to what textualize is working towards as well hosting
11:30 I mean, it's more hosting people's apps then Hosting people's docs but not terribly different paying for services is a classic open source monetization strategy, right?
11:38 Like you have some way to kind of build the monetization on top So yeah, it's like what you build is great, but it's kind of hard for me to run
11:44 Could you just do that? Like yeah, sure we can do that Sebastian always good to see you. Welcome back
11:48 Thank you very much for having me. Hello everyone. So I was in Ramirez or the envelope. I created this
11:54 Little tool for building web API that is called FastAPI and it has been growing quite a bit people have lighted
12:01 Fortunately and like yeah, that's it. I'm probably the only one that hasn't built a company here. I guess
12:08 Okay There are two of us nice I wanna hear that. Okay So this year I have been able to work full-time on open source because Sequoia capital the VC firm started this open source
12:21 Fellowship and I am the first fellow so I am kind of the test trial of like the program
12:27 So I get you know, like just to work full-time on open source and that's how I've been able to just yeah
12:32 It is have one job stuff in FastAPI and the ecosystem like the other libraries FastAPI
12:36 SQL model type and a couple of other things. But yeah, that's pretty much it. Yeah, awesome
12:42 Well FastAPI is definitely the poster child for modern Python on the web, you know and Samuel's work obviously is central to that as well
12:52 Right with Pydantic being such a core element there. So very awesome Yeah, like I mean FastAPI is built on top of like great open source tools and their needs
13:01 So Pydantic does all the data validation service in documentation and on the other side startlet does all the web parts
13:08 So yeah, it's like unlike, you know, like it's a very close. How do you call it like?
13:12 Close friendship between all the projects Pydantic starlit Unicon You become FastAPI like, you know
13:18 Like we actually know each by this point actually know each other in person like the current
13:23 container of started on you because works for the Pydantic company Yeah, I mean he's like the top FastAPI experts right now like, you know, like it's it's a it's very nice because helps the
13:34 Dynamo the dynamism of like yes, absolutely building stuff. It's great Yeah, I imagine a lot of people don't realize the interconnections between these different projects that are at play here
13:46 Yeah, it's definitely super fun. Absolutely And then it's worth saying we in Pydantic use FastAPI as well as contributing to the libraries that don't it
13:53 We also use FastAPI for the services that we're building So we're like consumers both directly and indirectly of the things that we maintain in open source
14:00 Awesome chat quite often special. So it's all it's turtles all the way down basically exactly
14:05 This portion of talk Python me is brought to you by Basedash
14:09 Basedash is the custom admin panel for your database that you don't have to build
14:15 We've all dealt with endless ad hoc requests for data access your support team wants user records your non-technical
14:23 Co-founder needs to see charts or your engineering team needs an easy way to share your SQL queries
14:28 These all sound like relatively simple tasks but between building an internal tool
14:33 Setting up an analytics product and then switching back and forth between that and your SQL client
14:38 You've lost so much time Basedash gives you that time back with Basedash you can instantly generate a
14:45 Visual UI for your database. All you have to do is connect your data source
14:50 It uses AI under the hood to generate the perfect admin panel for your data
14:54 Voila now anyone in your company has access to the data they need They're rolling out a ton of new features like the ability to create charts using only natural language
15:04 You're gonna get hours back in your day, and I promise you won't want to build an internal tool ever again
15:11 Check them out by visiting talkpython.fm/basedash that's talkpython.fm
15:17 basedash the link is in your podcast player show notes basedash is free for small teams
15:23 So give it a try. You've got nothing to lose. Thank you to basedash for supporting the podcast
15:28 Gina also awesome to have you back. They'll come in very happy to be back. That's really really great to be here now
15:35 I think for the second time so and assert if we call fight invites So yeah, my name is Gina Haubge and I'm probably yeah
15:42 I don't know if I'm if I'm that well known throughout the Python community
15:46 But I'm quite well known in the 3d printing community for having created octoprint
15:50 which is the snappy web interface for you 3d printer and The server part of that is all written in Python and I started a project back in 2012 when I got my first 3d printer
16:00 As your regular pet project on the side after hours vacation blah blah blah in
16:05 2014 I got hired by a 3d printing company to work on it full-time and in
16:11 2016 that company ran out of money and I suddenly found myself with a full-fledged full-grown open source project and no funding
16:19 Whatsoever, so I tried this whole crowdfunding stuff with patreon and that is pretty much how I've been working ever since so I'm
16:27 Self-employed under German law. I'm a freelancer and Yeah, all my income comes from people who just sent me money for working on octoprint
16:38 And did you say since 2016 since 2016? Yeah. Okay, cool So full-time since 2014 and self-employed and crowdfunded since 2016, so it's been a while. That's awesome
16:49 I also went full-time on all my stuff here at 2016, although it's technically not open source
16:55 It talks a whole lot about open source stuff. So totally awesome. It that's it's been a while. Congratulations. Thank you
17:00 I'm still surprised it works to be honest. I'm waiting every day that it stops working and yeah
17:05 Actually this year it came a bit close and then I put out like a blog post basically along the lines of you know
17:10 Like the income is going this but the usage numbers are going that so something is a mishear and we need to talk and then
17:16 The community rallied and stuff fixed itself again. So that is pretty amazing. That's really awesome. Congratulations
17:23 It's easy for people just go. Oh, it's free And there's some people supporting it and just kind of assume that things are taken care of it. Yeah. Yeah, really good. Really good
17:32 Yeah, you have a ton of supporters on GitHub sponsors as well, right actually after the fight over the years and in the beginning it was only patreon and paypal and then I
17:41 started adding new payment platforms and options because people prefer to be able to use the stuff that they know and some people don't like patreon some people don't like on what don't know
17:50 It's up sponsors and stuff And so you just give them the options to choose whatever they feel comfortable with and this increases the likelihood that they actually
17:58 Will go through with throwing something in your head. So to speak. Yeah, at least that's my feeling. I don't know
18:03 I think the github sponsors has been really positive for open source tickets
18:08 It's made it pretty easy to just check a box They already have your credit card potentially and you just want to give a little support instead of you know
18:14 One time PayPal donation here that you forget about after once and and all that before we move on here
18:20 There's a funny comment nice comment out and Kanishka says The this group look at all of you you guys are the Avengers of Python open source, right?
18:29 Which is kind of like the superheroes. I love it. It's somewhat actually true. It seems okay
18:34 So the next thing I want to ask is a little bit of an origin story Just what projects did you try and they didn't really get traction and then you know
18:42 How do you think that your project got traction here? And I know Samuel you might vanish any minute. So you're next
18:47 You're up first on this one. That's a really thing. I feel a number of things about this also
18:51 I started something last last week I ever saw some Friday that has got more stars over the last three days or I guess week now as
18:59 The first project I started Arq has over I think coming up on six years So I mean that's front-end and front-end gets a lot more attractions and then like queuing and RPC does but yeah
19:12 I don't know how like obviously there were some things I played with back then and then it took off
19:16 But yeah, it was this like I think I was the right time right place for Python
19:20 They don't have been around thePython for a long time But back in 2017 when I started I'd answer it
19:24 Their usage was going really fast and I think there were lots of people I read you found it kind of frustrating that they were
19:29 There anything so yeah, I think being the right time right place was super valuable for me and obviously
19:35 Like great projects like FastAPI adopting adopting financing. It made a big difference, but I don't know
19:41 What's weird if you look at the download chart?
19:43 It's like this is actually quite at the beginning of 20 21 So then we had like five million downloads a month and since then has been kind of almost exactly linear growth to now
19:53 125 million down this month something weird happened in 2021 Longer after the project started. I don't know. Yeah, I think it was right place right time
20:01 And that's frustration was the starting point on that. No, I'm gonna have to rush guys
20:06 But it's great to see everyone and I'm sure I mean you all in the conference in bye-bye. Thanks for dropping in
20:10 Good to see ya. All right, Charlie keep going around the circle here. Just it so I don't know
20:15 Yeah, you know, it's interesting because I like this ruff is really my first time
20:21 Being a maintainer like publishing open really like I've been a consumer of open source, right for my whole career
20:28 But I was never really a I guess in the creator or a publisher or a maintainer of open source, you know around the time
20:35 That I started working on rough I was working on like a couple different projects and they all I was kind of trying to figure out what I wanted to do
20:41 Next I'd left my job recently and and rough was kind of motivated by a lot of the experiences
20:46 I had at my job where I was like maintaining a large Python code base Did you leave your job with the intent of going to work on ruff?
20:51 Are we just like I'm gonna leave and then I'm gonna figure something out and kind of like well
20:56 What is the process that I left my job with the intent of starting a company?
20:59 But I did not think it would be ruff and ruff was like this Distracting side project that I was working on while I was like I was working with a friend and we were like
21:07 Trying to figure out like the Venn diagram of interests of like what should we what are we willing to work on full-time together?
21:14 What makes sense given like our interests and and then you know my free time
21:17 I was like, I just want to work on developer tools and like I worked on I built I built ruff
21:22 I started building ruff. I worked on like, you know, we're done a lot of different
21:26 Oh, not a lot. But like I did we're gonna couple different projects I did like a sort of CI CD thing where you like write docker files and like
21:34 CI files in TypeScript and they like transpiled down and I was I was like
21:38 I think that has a lot of cool ideas. I worked on like it was pretty early in a lot of the LLM stuff
21:44 I worked on like a code base wide Refactoring tool where you like give it examples of like before and after and that tries to find example
21:51 It was like a copilot for your entire code base kind of it didn't work that well like that scale
21:55 But it was like a cool idea. So I was like working on the stuff. There's all open source
21:58 That maybe could have been a timing thing like maybe today that would be all the all the
22:02 It's also like and yeah, it's also an effort thing I guess like I I put a lot more into rough and it was interesting because I kept viewing ruff is like, you know
22:12 It was probably open source by at that point I don't think I had launched like launched it and I kept viewing it as like like I said like a little bit of a
22:19 distraction and my friend was like, you know I think you should really like push to like
22:23 Release this because like if you think it's like interesting then like other people will probably think it's interesting and he was the person
22:29 that really like Motivated me to actually like see it through to doing the release and then I did the release and like a lot of people were
22:36 It were actually interested in it so that kind of gave me like the energy to
22:39 like really start working on full-time and just kind of see where see where it went and it was really like projects like
22:44 Pydantic and like Sebastian started like commenting on issues and stuff and I was like wow like real
22:50 Serious projects are looking at this like crazy tool and let me just see I'm just gonna do whatever it takes to make it like
22:56 A feasible choice and just started like cranking through like all the issues and all the things that we were missing
23:00 It escalated pretty quickly. I think did it surprise you? Oh, yes. Yes, absolutely
23:05 I was convinced that I had Faced like this problem around tooling as like our code base got large at my last company and that there was an opportunity to like build
23:15 Like better more performant tooling. I genuinely wasn't sure like how widely that message would resonate with people
23:21 And so I know it's like a little bit of luck, right?
23:24 Like sometimes you work on great projects and then like they go nowhere and like just no one happens to see it
23:29 And then sometimes you work on a good thing and like it does go somewhere
23:31 And so there are certain things that are within your control certain things that aren't I feel like I feel like we did I did
23:36 A good job of like communicating the project and like why it was interesting and why it was exciting
23:41 But I also feel like I got a little bit lucky that it just like gravitated towards the right people and got attention the right
23:46 Ways sure also maybe that black had existed which is a little ironic because black kind of solves a real similar problem
23:52 But like people were okay, we embrace the idea of the thing that rough does really well
23:57 You know, you just convince them to use ruff in that sense Yeah, I mean we have a little bit I mean it gets back to this like we have a little bit of like a
24:03 Like a second mover advantage, right?
24:06 Really exactly a lot of existing tools that people use already and like a lot of those practices
24:11 like the idea of using a format or the idea of running code mods like the idea of using a linter and like the knowledge of
24:17 Like what kinds of rules are valuable and like what kinds of analysis we can do like all this have existed
24:23 And that was part of part of the story really was I was like these tools are great and I get a lot of value
24:28 Out of them, but I want them to be like easier and faster. And so yeah, there's definitely a strong timing thing
24:34 I think like I think rust - this is maybe like a little bit more specific to what we're doing
24:38 but like, you know I think like the intersection between Python and rust has or the I guess the
24:43 Dinner operability between them and sort of the ecosystem around it has just grown a lot
24:48 I mean still I would say like pretty early but it's like matured and grow a lot over the past few years
24:52 And so even just the fact that like at my last company we started to introduce rust and we started to like move some of our core systems into rust and and
25:00 Expose them over PyO3 like the fact that was existed and the fact that I was like exposed to that like that's all just
25:06 Like pure chance. Otherwise, I never would have thought to do this. Very cool. Well, congrats well deserved
25:11 Well, we're all doing that all using rough as we said is excellent. Well, which is awesome
25:16 How why do you think it took off? Did you try stuff before? What's the story?
25:20 I tried a lot of stuff before before github, you know coding has always been my hobby
25:25 You know I do it for work and come home and work on a hobby project and it just seemed natural to want to share it
25:31 free in git hub. I would just put stuff on my blog and get some feedback from it there
25:35 I quite enjoyed that and yeah, I have a number of open source projects pre rich had a BB code
25:41 Parsing library. I had a chess library. I had a web toolkit So yeah, when rich came along it was another happy project something to keep me entertained
25:51 Why why is this terminal so boring? Come on, see what we can do about that
25:54 You know, I'd always used the terminal and I always struggled when you've got a page of white text on black background
26:00 and you're trying to pick out an IP address from somewhere and You know, I'd always wished I wish I could just it would just format it and colorize it for me
26:08 I know this is possible, but it doesn't happen So then yeah, I just I started it and it came together quite well when I released it
26:15 It was like boom and the stars just started accumulating got lots of feedback
26:20 It was very exciting and I kept building on it. It was kind of like an issue driven development
26:26 So people would just ask for something. Oh, that's a good idea I go ahead and that and implement it and it grew from there and it became really large
26:34 I did actually prior to rich I had a library called Py file system And this is kind of like a wrapper to file systems
26:41 so you can have the same interface for your FTP server as a hard drive for a zip file s3 bucket and
26:47 That got some use in the community. It wasn't enormous But I thought taught me a lot about building open source, you know managing feedback
26:57 issues, etc so that was a great experience when I started working on on rich and
27:02 I I was very surprised actually how successful it became I remember the first time I realized that this is bigger than just a hobby project as when someone told me off for violating
27:12 Server I released a clear a clear breaking change because I thought and nobody's using that yet, but they were
27:19 So the next day I got told off quite appropriately and then I thought okay
27:24 I'll probably take this more seriously if people are using this in the day job
27:28 They can't just have someone who's just like throwing new bits of code and changing functionality
27:33 They had to I had to treat it like it was an actual my day job. Yeah well
27:38 Everyone on the call here probably has a little bit of nervousness about like if I break this
27:43 There are a lot of people that depend on this thing Yeah, and it's so different like it just changes so much like the early like when you're talking about the issue driven development thing
27:51 too I was like I just remember that phase of like rough where it was like anyone who cared all about the project
27:57 All I wanted to do is like make them happy Right. And I was like, oh wow
28:01 That seems like a cool idea like let's definitely do it and I'm just like, you know
28:05 It was the point in time where I could like fix the bug cut a release the same day
28:08 And then like their thing is fixed and then it's like, okay great now we have a relationship like thanks for using my thing
28:14 Like blah blah I just think like but that has changed so much right because then I went through those same experiences of like I
28:20 I ship a release with a breaking change. I didn't really document a lot of people get upset and then you realize okay
28:25 I actually have some more responsibility now. Yeah these days it's more like trying to find the balance between saying no to stuff that you then have to end up maintaining and not
28:36 like disappointing people too much because you say no or things like that and then trying to to keep this whole
28:43 Interaction with people nice even though you don't want to do stuff They they want you to do because you know, it's better for the project
28:50 This portion of Talk Python To Me has brought you by sentry, you know sentry for the air monitoring service
28:58 The one that we use right here at talk python, but this time I want to tell you about a new and free workshop
29:04 He mean the kraken managing a python mono repo with sentry joined salma alam
29:10 Nayor senior developer advocate at sentry and David Winterbottom head of engineering at kraken technologies
29:16 For an inside look into how he and his team develop deploy and maintain a rapidly evolving python mono repo with over four
29:24 million lines of code that powers the kraken utility platform In this workshop david will share how his department of 500 developers who deploy around 200 times a day
29:35 Use sentry to reduce noise prioritize issues and maintain code quality without relying on a dedicated q a team
29:42 You'll learn how to find and fix root causes of crashes ways to prioritize the most urgent crashes and errors
29:48 And tips to streamline your workflow join them for free on tuesday, february 27th
29:54 2024 at 2 a.m. Pacific time just visit talkpython.fm/Sentry-monorepo that link is in your podcast player show notes
30:03 2 a.m. Might be a little early here in the u.s But go ahead and sign up anyway, if you're a U.S listener because i'm sure they'll email you about a follow-up recording as well
30:12 Thank you to sentry for supporting this episode PR's are like cake or puppies as if it's a simple bug fix that's like cake. You'd like. Thank you
30:23 I enjoyed that cake then move on but some prs are like a puppy It's like perfect you like puppies, but you've got to feed them and clean up after them
30:32 Why am I staying in the rain with this puppy on like a friday night? How do I get here collecting the puppies poop?
30:37 Yes, exactly. Sometimes you say thank you, but I just can't I just can't look after another puppy right now
30:43 That's a difficult thing to come to terms with when the project gets a bit more mature because previously you're accepting all the puppies
30:48 but then you have to start saying no no to puppies and Which definitely got there because it accumulated do you hate puppies? Come on. That's a pretty hard stance
30:56 I'm, kind of a cat person to be honest with you But yeah, I mean you have to say no
31:01 Eventually. Yeah, I think this is where this is where plugins always kind of like to take the center stage, right?
31:07 You're like just oh that sounds like a great idea for you to maintain external to my library
31:11 That was exactly my approach to the whole situation. Yep. Here's a plugin api. Have fun
31:17 But also the probability of some little change breaking someone's code and like being considered a breaking change
31:24 Grows as the project grows in usage and like, you know Like at some point it's like almost any change will end up breaking someone in very unexpected ways
31:35 Because they are doing something really really weird, but you know, like someone is doing it
31:39 So like it it becomes more and more difficult to know like is this a breaking change or not?
31:44 Like no one should be using this variable here or this parameter but like, you know, there's someone out there doing that
31:51 So I feel defining what is actually a breaking change and what is what?
31:55 What is this trick? It's more difficult as things grow. Yeah, I don't know one of the things
32:01 I like that the django project did was kind of basically only things that are documented are supported
32:06 Basically, that was kind of the line they drew and I thought that was a pretty good pretty good way to to draw it
32:10 But yeah, you're always you know, that never actually works. That doesn't make people happy
32:13 It just gives you plausible deniability Don't yell at me. It's not my fault
32:18 I think adding a formal like versioning policy is one of the best things that we did because for a long time
32:24 Ruff was just we only used patch releases. So we got to like 0 0 like 285 or something
32:30 and we had basically no guarantees about what would or wouldn't change like across releases and
32:35 As the project got more and more popular like that started to cause more and more problems
32:40 and so zany someone on our team like when they joined one of the first few things they did was like create an actual
32:44 Formal versioning policy and we added like preview behavior So like you can opt similar that what block has kind of opt in to like breaking or more experimental changes
32:54 And so now we have like clear expectations around what it means to like bump a minor release, etc
32:58 Etc. And like that has made our lives a lot easier like actually having clear expectations around that that are communicated and respected
33:05 But it's the kind of thing that you just don't think about at all until at least I didn't
33:09 Ratchet configure Yeah, some people's code runs things like fast api or octa print or whatever
33:16 Your stuff rewrites people's code Yeah, but at least it doesn't run at runtime. I don't know. I actually think it's easier
33:23 Yeah Indeed. All right I finally talk about the plugins thing because like i've actually very intentionally taken the opposite approach which is we have like almost no public
33:32 api Because like the only public api is the cli and like we don't expose our api in any other way
33:39 And that's because like we know we're going to change like everything Internally like pretty dramatically and so we wanted to have like full control over that without having to worry about breaking people's stuff yet
33:48 But it's like it's starting to become more of a problem because more and more people want to use it as a library in like
33:53 Different ways, but it's it's sort of a counterintuitive way to like make our lives easier as maintainers was like not expose any public api
34:00 Apart from the cli. Yeah, very interesting. It's funny funny Sort of anecdote i'm a rewriting a lot of the documentation for sql model
34:08 Because I want to have examples right right now I have examples that are compatible with python 3.7 and above but actually 3.6 and above but I want to have
34:16 also the syntax for 3.9 and 3.10 in 3.10 You can have like the unions using the vertical bar and these things and I want to have examples for each one of those
34:25 So the approach I did was to write a script that will automatically Update each one of the files by calling rough as a soup process. So that's the api
34:34 And then like, you know, like I mean the process is like doing all that stuff but like yeah, it's like another
34:38 family of problems Right, that's an api before it's available. Yeah with
34:45 Right an api will be created exactly. I've heard this before as like hyrum's law, which is like with a sufficiently large number of users like any implementation detail
34:56 Become someone will eventually rely on an implementation detail like any arbitrary implementation
35:01 Someone is probably relying on that behavior, which is basically the behavior of the program is the api in the end, unfortunately
35:07 We'll find the underscore functions. You've tried to dissuade them from using and all the things, you know, eric
35:12 What's the the origin story for read the docs and what'd you try and how do you think it caught on?
35:17 Yeah, so I mean this was kind of way back in the day But yeah, I kind of got started writing django plugins, you know apropos to the conversation
35:25 You know I was working at the lawrence journal world that where django came from and it was kind of early in my career
35:31 And I was just kind of getting excited about open source and blogging And just basically built a few of these kind of testing related open source projects
35:38 And then that was kind of where I got started with open source And then basically it was the classic scratch scratch your own itch thing, right?
35:44 Like it's like I have a bunch of open source projects. I want to write documentation
35:47 How do I solve that problem and back in the day? That was a much harder problem to solve, right?
35:52 It was basically just like build a zip file and upload it to packages.python.org if folks remember that one
35:59 Or was it packages or whatever the docs there was a docs hosting on pypi basically
36:03 And yeah Basically just wanted to kind of build a better version of that that integrated with github
36:07 I feel like webhooks were like the cool new thing back in 2010, you know
36:11 and so that was really kind of the insight right?
36:14 It's like let's build this kind of like ci/cd workflow on top of webhooks
36:18 And actually did build a kind of a version of that the previous year around kind of like code quality stuff
36:23 So it actually ran kind of like a linter and built a website on commit and had a similar kind of workflow
36:28 Right where it like gave you a grade and did all this kind of stuff, which is like 2009
36:32 And yeah that that didn't really catch on at all but then I think read the docs just we built it and
36:37 Then I was using it for my own projects and I actually Had the need to kind of maintain it and keep it updated and then I think people just kind of
36:43 Kind of grew naturally, you know gave some conference talks that kind of stuff
36:46 But I think it just solved a problem that people had and that's always going to be the you know
36:50 The best way to to grow a thing. So yeah, absolutely. Awesome. What's read the docs written in? Is it django?
36:56 Yeah, it's all django and python, funny coincidence. I went to College in lawrence at the university of kansas. So oh nice
37:03 I was right there right at the the heart of django But I moved off to grad school like a couple years before all that happened. So I missed missed the excitement
37:13 I grew up in virginia and everyone's like you're going to kansas. You graduated school
37:16 Like what how are you going there? Like what everybody thought is the weirdest decision?
37:20 But yeah, like I really do think you know ending up in that python and django ecosystem has been pretty transformative to my to my life
37:26 So, you know worked out lawrence a pretty cool little town actually of all the places. Yeah
37:30 sebastian How do you come about this crazy idea to put types into our web apps, you know python that's dynamic
37:38 It doesn't have types. What are you doing? Yeah, I don't know so crazy it's so fun to see it said michael larson in the chat like they maintain our url d3 and the
37:47 security developer in resilience just like chatting along with us like he probably has had to deal so much stuff as us
37:56 just So like some of the first things that I did in open source were actually docker images for deploying flask
38:04 Because I was working with us and deploying flask was difficult And I needed to be able to combine nginx with uwisgi and like a bunch of things and like they all had their own
38:14 Custom configuration files and it was you know, like so difficult I didn't like doing that and then I just had to study how to do that stuff
38:22 And then after going through all that I wanted to save everyone else's time doing that. They were like well
38:28 Let's just put a docker image with this and a lot of documentation of how this docker image works and how it
38:33 How you can use it with some sensible defaults?
38:35 So, you know, it was just like a weird contraption that was it But it actually grew and like got like a few stars like a bunch of stars for me
38:43 It was a lot, you know, like a hundred stars. Oh my gosh, i'm an open source
38:47 And then like at some point I had like a thousand stars or something like that
38:51 I was so happy about that and at some point it was kind of the de facto standard for doing flask
38:56 Docker flask in doc that was the first thing that I did. I ended up with fast api
39:01 I was I was avoiding building fast api for a long while and I was trying all the all the frameworks modular tools
39:07 I I was convinced that there was something that would do the things that I wanted
39:11 I just had to find it and as I was trying different frameworks also in different languages. I was
39:16 Extending the list of things that I wanted to have and also a list of things that I wanted not to have for example
39:22 I didn't know that takes you farther and farther away from any exactly Having one that will take all the voices
39:28 So it was like ah But then I realized like I really like this thing of having types as in types because you get out of completion and inline errors
39:36 And this is so cool. It's so cool to be able to have this I want to have this in python and then python other type annotations and it's like this is great
39:43 How do I use them? There's no way to use them with the current frameworks
39:46 So at some point I actually found the right framework It was called api star by the same author of django rest framework. It was just missing some authentication stuff
39:55 I said like, okay i'm going to contribute to the stuff when I was about to jump into the code
40:00 He said I have to deprecate this I will go focus full on startlet and then he went to build something
40:06 This is don christie, which is super prolific. I'm an amazing open source person in general
40:11 And then at that point is when I said like, ah, I just have to try it. Let's just do it
40:15 So i'm just gonna try to build something that will be kind of like spiritual successor to
40:21 Api start built on top of startlet. So I was you know, like I was actually narrating all the learnings from flask
40:27 Django, django rest framework and all the ecosystem and just like bringing all those ideas together
40:32 At least that was my intention and then I wanted to have a bit of better type annotations
40:36 So I I saw that Pydantic was using standard type annotation So people don't have to learn this like, you know from fast api for special string or something like that
40:44 Just instead of that just use pure string So I wanted to have something based on standards
40:49 Like open api json schema and all the stuff and based on standard python and to have like the simplest syntax possible and to
40:56 You know, like give the best developer experience possible while you know
41:00 Like not adding like any any additional steps for developers to build something that by default will have all the best practices built in
41:07 That was the the intention and I was just like trying to solve it for the things that I was working on
41:12 I was supposed to be doing ai and machine learning and stuff But like I have to stop for a bit to solve apis. I got stuck in apis
41:20 Oh, I think you made a pretty decent choice it seems like fast api is doing all right. Yeah
41:26 Yeah, I just saw you much better than what I ever had expected. Yeah, I know congratulations
41:32 Well, it's also deserved but I also just saw an x I don't know a post on
41:38 X twitter, whatever you however you address these things where you said you showed a a graph where the number of
41:45 github stars for fast api just passed flask and you know I have a lot of respect for flask and the Flask team and david lord and all those folks
41:53 But you know awesome that your stuff has taken off so much. That's really cool. It's super cool
41:57 It's amazing and you know like flask was one of the big inspirations for fast api and i've been able to
42:02 To be at this point. It's crazy like yeah, I still can't Get over it. Yeah, super cool. Super cool to be able to build all this and to keep building more stuff
42:11 So yeah, super nice. Yeah one final Comment before we move on to octoprint
42:16 but one of the things I kind of see you doing in the world is you're like the combiner you're like, oh,
42:22 we've got this cool stuff with pydantic and Starlette and how could we combine it in this way to make this, you know and and swagger like similarly with sql model
42:31 You're like well pydantic is cool and but sql alchemy is kind of cool, but it could be more better
42:36 You know, like it'd be better. Right? So anyway, good job Like typer that is the library for building command line applications
42:42 You just click with the type annotations the same ideas from pydantic and now with you know
42:46 Like integrated building support for rich so like also picking will's work trying just just to put a bunch of things together
42:54 I'm, just you know, like i'm just making cocktails everywhere Yes, exactly
42:59 It's more than that, but there is a lot of value in combining things in a smart way and accessible. Yeah. Awesome
43:05 All right, gina you told us a little bit about the origin story But like what do you try before and then I have a follow-up question. I think it's unique to your project
43:12 I wouldn't necessarily say that I tried anything before because the whole thing was completely unintentional
43:17 I basically bought myself a 3d printer in late 2012 I wanted to be able to put it in my spare bathroom and monitor it from afar
43:25 Because back then this thing was tying up my pc You had to constantly have keep it connected so it could operate and that for hours and hours and it made noises and it produced
43:34 Fumes and I just wanted it out of my office and to be able to play games on my pc again instead of having it
43:40 Yeah, basically communicate constantly with a 3d printer and so I bought myself a raspberry pi and I was looking online for something to be able to just put on this pi and
43:50 Attach to the printer and throw a wi-fi dongle in because back then the pi didn't have wi-fi built in
43:54 And throw that in the spare bathroom, but there wasn't anything so over the course of my christmas break in 2012
44:01 I sat down and changed that and this is basically the origin story of octoprint
44:05 I just wanted to scratch my own itch. I wanted to put my printer in my spare bathroom
44:09 This is all and apparently a lot of people had the same problem because I just you know
44:14 Like how how we like to do these things we build something that we think might be interesting
44:19 We throw it up on github and go just like here go nuts Enjoy have fun with that and I suddenly started getting emails from all around the world like hey, I have this in this printer
44:28 Can you also make it work with that? And so this escalated and I went like oh someone is using it
44:34 Of course i'm going to add this support And of course i'm going to add this feature and it just grew and grew and grew and grew and apparently I just hit a nerve
44:42 So this was utterly unplanned this was never my intention at all and I just wanted to solve my own problem and
44:49 Have continued to solve my own problems and the problems of other people ever since
44:54 Before octoprint I actually was also quite active in a little project called doku wiki where I was
44:59 developing some plugins for that and I even did open source before I knew what open source was with some php scripts when I was 18 or so
45:08 That I threw up on my website. But yeah octoprint was Like it took over my life. It just was an accident a happy little accident. Maybe how do you decide?
45:18 Okay, this is a job for me rather than just a thing you worked on The thing is by 20
45:25 Mid 2013. I went to 80 on my regular day job I used to be a software architect slash consultant with big corporation java world all the enterprise stuff and
45:36 To to be able to dedicate one day per week fully to octoprint plus of course the weekends and the after hours and the vacations
45:42 And all of that and that still didn't suffice anymore by 2014 And I noticed that it was impacting my health. It was impacting my relationships and that was actually
45:53 Quite perfect timing really when this this company that hired me initially approached me and said hey
45:58 Do you want to maybe fly out to us and we'll chat?
46:00 And if you like all of that what we have to propose then we can just do that
46:04 And this is how it then continued to go from 2014 until 2016 And yeah, it was never my intention to become self-employed. I'm a quite risk averse person actually
46:15 So when this point came where I was like, okay either I Find a way to keep funding this or I have to really drop it because it was way too big by then to be kept
46:26 As a pet project without being utterly utterly unhealthy. Yeah, I decided to jump into the cold water and have been trying to keep up
46:33 At the surface ever since basically, so yeah, all of that really completely unplanned cool. What an adventure, huh? Indeed
46:41 Yeah, and the good thing is even if people don't understand what open sources or what code is I always have quite a topic
46:46 At parties so that is fun because yeah, like people give you money for something they can get for free. What?
46:53 Exactly. Yeah, if you're not familiar with open source, then it definitely is a weird
46:57 It was tricky to find a text consultant who understands the concept. So yeah, I can imagine. Oh, yeah, that's interesting
47:03 I'm sure. All right. I was very recently. I was like, what do you do? What is your day job?
47:09 I'm like, oh i'm a software developer. So you work for a company not really
47:14 Well, I build software that is free for others to use and who's paying you a company that pays money to companies to build companies
47:22 So you're building a company. No, it's actually, you know, like it was a long conversation. They got bored and later
47:27 This doesn't make any sense Yeah I've just taken to say i'm a software developer and I work
47:33 With 3d printers and then people usually stop asking questions because 3d printers are this mysterious thing that no one understands
47:40 Anyhow, usually at least and then yeah, unless they say oh 3d printers and then I say, yeah
47:45 Do you know 3d printers and they go? Yeah. Yeah, I have one and then I can say oh, do you know octoprint?
47:50 Yes. Oh, yeah, I made that and then oh, yeah, it's tricky to explain to people
47:54 I'm, sometimes not even sure my parents understand what I do. So i'm sure that my parents don't understand what I do
47:59 That's okay, i'm sure they're still proud of you anyway, it's fine. Yeah, mine might definitely are proud of me
48:06 I would like to just maybe getting a little short on time. You're coming up to the end of our avengers meeting
48:11 Let's close it out with this Go around one more time let y'all or maybe just as a group kind of chime in on this
48:16 Speaking to the people out there listening who want to start an open source project or want to contribute to open source or somehow
48:21 Kind of get involved in similar ways. What would you do different if you started now?
48:27 Many of you have worked on this for a long time You've had a lot of experience like if somebody said well the world is, you know
48:33 Somehow the memory has been erased from the fact that rough or rich or octet or whatever existed, you know
48:40 Just start over. What would you do different or or the same? I would use fast api
48:44 Yay good use of a time machine there Everybody like i've had multiple conversations over the years where people are like, why don't you use this library? I'm like, oh it didn't exist
48:53 Exactly. Yeah, this is the problem, right? Exactly when you actually have a plug-in system then swapping out stuff like that can become
49:01 Very tricky. Absolutely when I get asked what to work on what to study what to focus how to get into open source or like
49:08 Almost any of those questions. I always say that the the main advice I give is just to focus on a problem
49:14 That is important to you more than you know, like innovation market disruption or whatever
49:20 Just like focus on a problem that is actually important to you Hopefully that is important to others as well. And if it's not a problem that affects you directly
49:28 Hopefully it affects someone that is very close to you so you can get like a very tight feed
49:31 Feedback loop of what you are building and then try to solve it and then use that as the guide of what to do
49:38 What to learn what to focus on what to do in many cases is just learning a framework that all it's already there
49:44 You know, like why will I go and build a system to control 3d printers instead of just like learning how to use auto print
49:51 In many cases solving the problem is just like using the tool that is already there
49:55 But then in some cases you end up figuring out that there's no tool and you just have to build it. There's actually no
50:01 Linter and formatter that can be super fast so you can run it every time you just hit save
50:06 So then you just have to build it in Rust and like create rough or like, you know
50:10 Like there's always like this thing that you are trying to solve that is just not so there yet
50:16 And that is what gives you the best value and the best outcome in many cases
50:21 it can be just like, you know contributing to another open source project or
50:25 Building something new but the the thing is like for me is just like focusing on a problem that is important. That is what what?
50:31 What has worked for me at least good advice?
50:34 I would add to that that you really shouldn't try to You need to be really passionate about the thing as well, right?
50:39 It needs to be something that is really something you're into something that will
50:43 That you what will want to spend a lot of time on that is actually not your working hours and such because otherwise
50:50 The the whole jock until this becomes anything viable anything big enough to support you in any kind of way
50:57 Even if it's just being able to I don't know drink an additional coffee per week or something
51:01 That will be a quiet long slog and a lot of work and a lot of blood and sweat and tears
51:07 And so you really need to be into this so that you want to do that If you are just in that for the end goal of I don't know
51:13 Becoming rich through open source, which by the way would probably not work only when I go rich
51:19 then Then this will not work out You need to focus on the path to the goal and not the goal a lot of people try to
51:27 Reach for the end goal before they actually are willing to actually walk the path. I also get this along
51:33 I happen to be in the github star program and i've had a lot of people ask me
51:37 How do you become a github star and that is just the wrong question to ask?
51:40 That's just the same as it is. How do you become an open source maintainer of a popular project?
51:45 Like you you just have to do whatever you are interested in You have to do work and you have to be passionate about your work
51:52 And then maybe if you hit the right nerve, then that will happen and maybe it won't I think it's very interesting that
51:58 None of us had like a career path to where we are now. We didn't set out to be where we are now
52:04 It just feels like we were kind of followed our own intuition and it worked out
52:09 Which means it's very difficult when someone asks me. Well, how do you become an open source developer? How do you start a company?
52:14 It's like i'm not quite sure I can tell you my path to there Very hard for me to articulate to someone else how to get there
52:21 I think there's a lot of luck involved as well, right?
52:24 It's like you have to do all this stuff and then roll this dice if it gets a six then you can be successful
52:28 Yeah, there's an element of luck, but it's kind of like a luck you make for yourself
52:33 Yeah, and it might take you to somewhere else or it might not but as long as you're passionate about it and you enjoy it
52:38 Then great things will happen. I think well also will and charlie you both took some specific time
52:44 on your own money to really Level up what you're working on which is that's pretty brave, right?
52:48 Like not a lot of people would say i'm just gonna spend my savings to work on this project and see if I can make it
52:54 Go, so you've earned some of that through taking that chance and putting in that time and effort
52:59 I think for me that didn't last very long because for three months I was living on github sponsorship
53:03 VCs came along and then there was like cash and everything changed Your world changed and you had to learn a whole new set of skills. I'm sure
53:11 A job and responsibilities. I do feel really lucky that like I said This is my first time being a maintainer and like it was very clear to me quickly that like
53:19 For rough to have the pace of development and like the scope that it has it like had to be a full-time thing
53:25 and like that that was pretty obvious to me quickly and I just I have a lot of respect for people who've been maintainers for longer periods of time and in a way where it's not their
53:33 Full-time job or they have to do it on the side I think I haven't really been in that position
53:38 But it's already clear to me that that takes like a lot of dedication and commitment
53:42 So i'm just I feel very lucky that I get to work on open source full-time
53:46 I know it's not all entirely luck, right?
53:47 Like we were saying like you increase your luck surface area and then opportunities come your way
53:52 But like but I do think it's just a very fortunate position that like these kind of opportunities do exist
53:56 Yeah, because maintaining popular stuff is a lot. It's a lot. There are privileges that come with it 100%
54:01 But I mean, yeah, it's a ton. It's a it's a lot of work and a lot of stress
54:05 Yeah, a lot of responsibility. Well, and you don't necessarily have to start your own right away. I didn't have gray hair before this
54:11 You don't necessarily have to start your own either you could contribute to a really popular one and kind of get into the scene and you know, like eric that sounds a little bit like
54:17 Your story like you were in the django scene and then spun off from that what you guys are doing, right?
54:22 Yeah, definitely and you know part of an open source community and definitely kind of going to pycon and and just kind of being
54:28 Surrounded by those people because that was always the it's very lonely work just to have a an inbox of github issues and then no
54:34 inbox, thank yous you know and like going to conferences and that kind of stuff was really where you you feel the appreciation and you really kind of
54:41 Actually feel the the value that you're providing as well as just the the stress of the of the things you're breaking
54:47 So totally agree with that. Absolutely The conferences are great to really feel the appreciation rather than just the the requests
54:55 They'll say thank you and then they'll give you a bug report, but at least the thank you
55:01 I'm talking to you. There was this could I just show you this one thing we're doing that's not working, right?
55:05 Oh gosh, here we go an interesting observation for me has been that like a year ago
55:10 I didn't really know anyone in python open source Like at all and like I was a user of python in my day job every day
55:17 But like I was not interacting with and in a year. Yeah now like sebastian we've interacted a bunch
55:22 Like there's just a lot of people that i've come to know and think of as like friends
55:26 So I think they're really, you know, especially if you're interested in getting involved in like putting in work
55:30 I really don't think there are significant barriers and like you get out of it what you put in
55:36 So I think i've been very impressed with just how welcoming and friendly the community has been especially other maintainers
55:41 Yeah, absolutely Talked to a lot of people who show up at pycon and they're like I was really nervous to come here or I feel
55:46 Like it didn't fit in and they're you know, they just had such a great experience and I said well
55:50 Did you feel like out of that was my first pycon this year?
55:53 I'd never been to a fight. I'd never been to a python conference. And so I was like we did up at such an amazing party
55:58 Yeah, that's true I love the benihana, yeah That was interesting. All right guys. Well, I think we are
56:06 Pretty much out of time anyone want to have some final thoughts for listeners before we wrap it up go on build some cool stuff
56:12 Who's brave enough?
56:14 How come attainer today I think give cake not puppies. Let's leave it with that, huh?
56:19 All right, give cake no puppies and be really careful before you start a popular source project. It might take over your life
56:25 If you want this great, but if not, then yeah careful what you wish for you might get it exactly
56:30 Gina, sebastian, eric, will, Charlie. Thank you all for being on the show. This has been a ton of fun
56:36 Thank you very much for having us. I think it's an honor to be with these amazing people
56:41 Thank you for the invitation. I agree Honestly, I had a blast just like hearing everyone's stories because I hadn't heard any of this before so thanks
56:47 Thanks to everyone else. And thanks michael. Yeah, you bet bye all right. Bye
56:50 This has been another episode of talk python to me Thank you to our sponsors. Be sure to check out what they're offering. It really helps support the show
56:58 This episode is sponsored by basedash, basedash uses ai to build a dashboard for your database
57:06 Get a custom admin view in your postgres microsoft sql server mysql maria db or redshift database
57:14 Get started for free at talk python.fm/basedash. Take some stress out of your life get notified immediately about errors and performance issues in your web or mobile applications with sentry
57:26 Just visit talkpython.fm/sentry and get started for free and be sure to use the promo code talkpython all one word
57:35 Want to level up your python?
57:37 We have one of the largest catalogs of python video courses over at talk python
57:41 Our content ranges from true beginners to deeply advanced topics like memory and async and best of all
57:47 There's not a subscription in sight. Check it out for yourself at training.talkpython.fm
57:50 Be sure to subscribe to the show open your favorite podcast app and search for python
57:56 We should be right at the top You can also find the itunes feed at /itunes the google play feed at /play
58:03 And the direct rss feed at /rss on talkpython.fm We're live streaming most of our recordings these days if you want to be part of the show and have your comments featured on the
58:13 Air, be sure to subscribe to our youtube channel at talkpython.fm/youtube
58:18 This is your host michael kennedy. Thanks so much for listening. I really appreciate it now get out there and write some python code
58:25 So You [MUSIC PLAYING]