Sveriges mest populära poddar

FLOSS Weekly

Episode 778 transcript

N/A • 10 april 2024
FLOSS-778

Jonathan: This is Floss Weekly, episode 778, recorded Wednesday, April 10th. Octoprint. People are amazing at breaking stuff.

Hey, this week Katherine Druckmann joins me and we talk with Gina Hoiska all about Octoprint. That's the open source software that you can put on a Raspberry Pi, or any computer really, to babysit a 3D printer, except it's got more tricks up its sleeve than that. It will slice, it will control, all kinds of stuff.

You don't want to miss it. So stay tuned.

Hey, everybody. It is time for Floss Weekly. That's the show about free, libre, and open source software. And sometimes we throw some hardware in. And today is going to be, I think, the intersection between software and hardware. And maybe talking about one of those magical things that takes software and turns it into hardware.

But before we get to that, let's bring Katherine on. Hey, Katherine, welcome back. Hey. As one of our favorite co hosts, it's good to have

Katherine: you. I'm glad to be back.

Jonathan: Yeah. It seems, you know, I've, I've pulled in, it has been, I've pulled in some other co hosts when people haven't been available. And so it seems like the rotation now is even longer.

But It's nice to have you back. Thanks. We're talking, we're talking 3D printing, and we were talking a little bit before the show, and I asked you, are you a 3D printing enthusiast? And you essentially said what I would say about some of my musical instruments. It's like, do you play the guitar? Well, I, I have a guitar.

Katherine: Yes, I aspire to be a 3D printing enthusiast, but I'm not yet.

Jonathan: Yeah. So you, you were saying you, you made a few prints, but you ran into like technical issues with the printer where it was slow and it was fiddly to work with. And I think everyone that spent much time doing 3d printing feels that deeply in their soul.

Katherine: It's a budget question at some point. It's less and less now, but several years ago when I, when I wanted to really get into it, it was very much a budget question. And the ones that were in my price range were, a bit painful.

Jonathan: I understand. I've got a I think technically mine is a mono select or mono price maker select three or something, which is a clone of a clone of a good 3d printer.

Okay. That's funny. Someone, someone described it as being a, it's an my first 3d printer. It's like, yeah, that's, that's what it is.

Katherine: Yeah. That's what mine was too. And it is now on a shelf because it's, it's. Yeah, someday I'll get another one.

Jonathan: There is this, there is this fun thing that happens though, where it's like, you can 3D print parts to put on your 3D printer to make it better.

And I did a little bit of that. That sort of got me going into the, the, the, it got that first, it was, it was that first serotonin cookie. I liked that term by the way, I

Katherine: liked that too.

Jonathan: I got that from, I got that from Eben Upton and we interviewed him, but that first serotonin cookie from 3d printing was, Making a part to make the 3D printer better to make better parts.

And it gets you on that same, that same ride that you get with software. When you're making your software tools better to be able to make your software better. So our guest today is all about that. All about, well in this case, software to make 3D printing better. better. Let's go ahead and bring her on.

It is Gina. Oh, I asked how to pronounce this, and I It's Hoyska. I got it. Hoyska. Thank you. Perfect. You're welcome. You're welcome, Gina. It is wonderful to have you here.

Katherine: I'm also an aspiring German speaker, sorry.

Gina: You pretty much nailed the name already. Like, that's half the, half the, half the job already done.

Awesome.

Jonathan: Yeah, it's

Gina: great to be on here.

Jonathan: Yeah, what, for our listeners, we know, but for our listeners, what do you bring, what has been your, your stellar and it is, it is stellar and it is shining contribution to 3D printing?

Gina: Yeah, I built this funny little tool called OctoPrint which is basically, yeah, you could call it a baby monitor for your 3D printer.

And yeah, I, I, I created that basically just to scratch my own itch back around 12 years ago when I got my first printer. Back then things were even worse than they are now with regards to reliability. And so I really did want to keep an eye on it doing its thing, but I did not necessarily want to have to do that in person.

And so I looked for ways to solve that so that I could just put it into my spare bathroom and be able to watch it from afar. And ideally do this with something that I could just throw A nifty little single board computer that had come out the very same year, the Raspberry Pi, back then in the first version, which still had no Wi Fi and was only single core and really, really slow.

So I had to make sure that stuff still worked on there. And I figured, well, someone will already probably have written something like this. And some solutions existed that allowed to, to, to basically throw stuff at your printer and hope it sticks, so to speak, but there was nothing that also had this back channel that I wanted in order to be able to watch things, to make sure everything is okay, to get access to the temperature data from the 3D printer, to see progress updates, and ideally also hook up a webcam to everything to be able to really watch it from afar.

Okay. And so over the course of my Christmas break that year, I sat down and wrote what is now known as Octoprint. Obviously only a very basic version of that at first. It did not have a plug in system as it has now. It only worked with my printer and a very limited set of other printers, but it worked and it did what I needed it to do.

And I threw it online and suddenly everyone said, Oh, wow I've been looking for something like this. And I started running and feature requests and then it took over my life and the rest is history.

Jonathan: It's a very, Torvalds sort of story. Actually, this is a little thing I did for fun. It'll probably only ever work on my machine.

And suddenly you throw it out there and everybody wants to use it and add to it.

Gina: Yeah, it definitely was not intentional, what happened there, but It's fun. But it's a good story. It is.

Jonathan: It's a great story.

Gina: Definitely. Like, even when people don't understand what open source software is, or what 3D printers are, I always have something to tell at the party, because then people go, what, you did what?

And then what? And you still do that? And you give this away for free? And people still give you money for that regardless? What? Eh?

Jonathan: I, I am very curious about that part of it. I think we're going to cover some basics first, but I'm extremely curious to hear the story of how you, you. Make money with this open source thing So let's but before we go there.

Let's talk about what all you can do with OctoPrint and then there's also OctoPi So I guess first off. What is OctoPi? Is that officially part of the project?

Gina: Officially that is still a third party project that was done by Guy Schaeffer from from I forgot the exact Town he lives in, but he's from Israel and we've been in contact since 2013, I think, when he came up with the first version of that and it basically is a box standard Raspberry Pi image that has been extended to include OctoPrint, to include a webcam server, to include some other scripting around all of that so that you can just Yeah, throw it into the Raspberry Pi configure, flash it to your, to a, to a disk and to a disk, to an SD card and put it into a Pi and it will boot up immediately, connect to your Wi Fi and then you can just use OctoPrint from the next browser.

Completely headless. You don't need a keyboard. You don't need a mouse. You don't need a monitor or anything like that. All it wants is. Network and a printer ideally because without a printer things will be a bit boring. I mean technically there is a virtual printer on board that I use for development But you will not have a lot of fun with that if you're not not a developer, I think And so a lot of people confuse OctoPi and OctoPrint.

OctoPrint is the thing that you actually interact with in your browser. That is the thing that actually talks to your printer. OctoPi is the image for the Raspberry Pi that ships with this and a bunch of other stuff so that you can get up and running really, really fast.

Jonathan: So OctoPrint is not necessarily limited to a Raspberry Pi, is it?

You could, you could throw it on anything that, I, I'm assuming it's probably Linux only, but you could throw it on edition. No, no.

Gina: You, it even works on Windows. It works on Mac, it works on yeah. It's as long as you can run a regular Python c Python, probably, I'm not, not entirely sure about pii, but as long as you can run C Python on something, be it a Linux machine, a Windows machine, anything like that.

It will work. You can use an old laptop. You can run it on the Steam Deck. You can run it on your NAS. You can run it on pretty much anything. It should have some RAM. It should have some CPU resources available for things. But Yeah, there's also a docker image you can

Jonathan: let's be honest if this started on the raspberry pi one It doesn't need a whole lot of ram or cpu

Gina: Well back then it did not have plug ins to think about so things have increased a bit with With regards to resource consumption these days.

I actually recommend getting an rpi3 at least because four four cpus are nicer than one and That makes a lot of things easier because you can suddenly know Do things like print a printable G code analysis in parallel without blocking the whole server with complicated calculations and such, but yeah.

Jonathan: Yeah. So that, that maybe is a good a good jumping off point to ask what, what all can OctoPrint do now? It's more than just a babysitter or, or at least my, My kid watching camera can't also change the diaper and also feed the kid. It feels like if we were to make that comparison, then Octoprint could do at least those things.

Gina: Maybe. So, I mean, what it could do right from the get go was things like you have a basic file manager on there so you can upload stuff upload things from your slicer there and most of the slicers actually now also either have an OctoPrint plug in available or come with OctoPrint support right built in so you can configure your OctoPrint instance in the slicer and then when you slice a file you can just say send to OctoPrint, maybe even send to OctoPrint and immediately start printing and then All of that will work.

This is thanks to the REST API that I have built in, which is also something that was in there right from the get go, because I wanted to enable third party clients to, yeah, utilize OctoPrint to make your workflow a bit easier. You can yeah, you can connect to it from, from a box standard web browser, watch a webcam stream, if you have a webcam connected.

If not, that will become a bit tricky. All this file management stuff, connect to your printer look at the, at the communication terminal control the printer, like move the head around, preheat it, things like this and it also has some basic time lapse functionality built in. So that is pretty much the standard package.

It also comes with a bunch of plug bundled plugins now that will also take care of some safety checks. For example, if your firmware is known to have thermal runaway protection disabled, OctoPrint will warn you about that. If you upload a file that still has placeholders in there that were not probably replaced by your slicer, OctoPrint will warn you about that.

If your Raspberry Pi is under voltage. is experiencing undervoltage. Octoprint will warn you about that because we have seen that this can lead to browning out and interesting symptoms that are like really hard to understand if you've never seen it before. Suddenly your browser only loads half the files or the print starts stuttering, but it still goes on.

Like it's not, it's not gone. It's just halfway gone. And if you update a system, in this case, things go wrong. really, really break. The newest version will also get achievements.

Katherine: Achievements. We've gamified it. That's cool.

Gina: Yeah. The idea actually was not to gamify it per se, but that is something that we might talk about later when we come to the whole, I'm working on this full time and I'm funded by the community thing.

I wanted to make it more visible that this is the case. And I figured that having some achievements in there that are something that people maybe might enjoy. And said achievements also having the little info, by the way, I'm working on this full time. And if you want to support my work, you can do so here would be a nice compromise between annoying neck screens and ooh, got to catch them all.

Katherine: Oh, that's awesome. I would really like to hear that story. But I also had another question. And that's we keep talking about the Raspberry Pi and OctoPi. Can I use OctoPrint without if I don't have a Raspberry Pi? Okay.

Gina: Yeah, we, we, we, yes, as I said, so that basically, you can, yeah, yeah, if you have an old laptop, that is also an option.

As I said, a Steam Deck is an option. I actually set up my full development environment on my Steam Deck as a test once and that worked well.

Katherine: And then, so so, yeah. What am I missing, though, when I don't have the Raspberry Pi?

Gina: basically just the setup will be a bit more involved. It will not be a case of put your SD card in your reader, open the RPi flash tool, select this image, enter your Wi Fi credentials, and you are done.

But instead you will, yeah, in most likely if you, if you're, if you're installing it on some Linux distribution, I would yeah, you would probably on OctoPrint's download page find OctoPrint deploy, which is a script that is maintained by someone from the community, which. That's all the installation for you from the command line through a little wizard.

So it asks you some questions. And then it does all of the package installing and, and hard work for you as well. So it's, it's basically a thing of convenience. It of course also makes it very easy for me, it being the major platform to test stuff, because I concentrate on everything needs to work on the Pi.

And then the likelihood is very high that it also works elsewhere, because that is definitely a more limited platform than your run of the mill. Core 7, Core i7 laptop with whatnot.

Katherine: So you might say Raspberry Pi is recommended. Assuming you can get your hands on one these days.

Gina: I would say it is, if you are, if you just want to get up and running really fast, it would be what I recommend, yeah.

Jonathan: So Catherine, the main advantage of the Raspberry Pi is that it's tiny, and you can strap it right to your 3D printer. Good luck strapping your old laptop to the side of your 3D printer. I mean, you could probably make it work.

Katherine: Depends on the printer, right? You could probably

Jonathan: 3D print some brackets to make that happen.

But the Raspberry Pi, you can just zip tie it on there and be done.

Gina: There's also a ton of cheap thin clients that you can buy these days on eBay and such. Yeah, or Knux and yeah, like a ton of options.

Jonathan: So I, I'm talking about the capabilities. Last question I want to, I want to get in right now on that.

I've seen that. But apparently it's possible to slice right in Octoprint.

Gina: Yeah, that was something that, like, I actually thought about throwing that out again, but for now I'll keep it in. So the thing is back in, I actually have to speak a bit about, about the stuff that we wanted to get later about the whole funding thing.

So. I started working full time on Octoprint when a Spanish tech company that also sold 3D printers, basically hired me full time to work on Octoprint, like no strings attached, just do your thing and continue to do your thing, make our awesome stuff and maybe help us a bit with our projects in that regard.

And then there's that. And they, Backband, really wanted to be able to slice in the web interface as well. And so that is something that back then I looked into and also made work in a way. By basically, yeah, remote controlling and a cura engine binary that I also put on there and all of this worked nicely.

You could upload a profile, a slicing profile. And then as long as your G code not, not, not, not your G code, as long as your STL files were from the rotation where okay ish it would work. The problem is that I started, Yeah, basically a cat and mouse game because the slices, the slicer engine evolved faster than I could keep up with keeping things in sync and the whole experience of using a slicer from the browser was also a bit meh because Yeah, it would always not be able to compete with the desktop version, right?

I made it part of the whole plugin system to enable people from the community to work on that instead. And look into it. And last I checked, I think four or five weeks ago or so, I saw someone had taken up work again on the full featured slicer plugin that actually gives you a 3d view in your, in your browser, in an, in an OctoPrint tab, allows you to rotate things and configure settings for the slicer and all of that and work through this.

But yeah, for me, I have to say it, it simply never was the right amount of work versus payout. Like, yeah,

Jonathan: I can, I can see why in some cases it's a nifty feature to have. Yeah,

Gina: totally.

Jonathan: I mean, if, if nothing else that it would then, you know, enable like a workflow where you could download an STL on a mobile device.

Yeah. And then kick that over to your printer and not have to have a slicer. Cause I don't, as far as I know, there's no slicers for mobile. But on the other hand, there's some magic that happens in slicing.

Gina: Yeah. And it's gotten only more complicated over the past. Don't let me lie. I think that was 10 years ago when I started looking into this stuff.

And there has happened a lot since then in slicer

Jonathan: technology. A lot of advancements, a lot of tricks people have come up with.

Gina: Yeah, so keeping up with that would have been a project on its own.

Jonathan: Yes, yes. So I already had one. Yeah, you already had one. Well, let's, let's talk about that. Yes. And so to move kind of into this, the bigger story about making money with it.

What first comes to mind is, where, where were you at that you had the 3D printer, and it was, I, I wish there was this piece of software, and you then came from a place where you said, I bet I could do that, and I'm just curious, like, where, what the, what the background was that, that led you to that conclusion, because most people, most people would go, man, I wish there was a piece of software that would do this, I wish somebody would write this, maybe put it out on Twitter or Facebook, and then forget about it.

Gina: Yeah. So back then I happened to still be in my, as I call it now, my corporate life. I was a consultant. I was doing customer solution development for really big customers with a, with a consulting company. And my day job basically consisted of coding Java in some enterprise environments for telecommunication companies and similar stuff here in Germany.

Jonathan: Thank you, by the way, for not writing OctoPrint in Java.

Gina: No problem. And and, and I was actually having a good career there. I had good chances to really move fast and high. The problem was that yeah, the more I moved, the more people, or rather, my boss told me I'm getting too expensive to code. I need to, like, produce more hot air than code, basically.

And the thing is that I fell in love with coding ever since I touched a computer for the first time at age seven. Like back then my, my uncle gave us a very, very old, already then very, very old Apple IIe. And I was like, yeah, computer. I want to play. And my father was no, no, this is a tool. I can show you how to use it.

And then he taught me, taught me some basic, basic, basic commands. And I was hooked because this was like playing with Lego, but without the the bricks running out. And so this is basically this was a defining moment for me because then a couple of years later, I learned that this was actually a profession like at age 11 or so.

And that was when I knew what I wanted to be in my life. I wanted to be someone who writes code for a living. And so, yeah, the whole, the whole school life was was, I was directed for that and I also, of course, studied computer science and then went into the industry. And then it suddenly happened that people were telling me, yeah, well, you are too good a coder.

We will move you away from code. And I was like, no, why? And that was when I started to really itch for personal projects. So, I bought myself a 3D printer in late 2012 and had this problem that I described and just figured, Hey, I got a vacation coming up and I haven't coded something fun in a while. I could just do that.

And I could also use another language that I haven't used so much like Java and I had taught myself Python a couple of years prior and decided, yeah, well, that could work, maybe. The other option was Node. js, but getting a serial connection to work under Node. js under Windows back then was an absolute nightmare, so I decided against that.

And, yeah, so, I just happened to be a nerd. Two weeks. Okay. Two weeks from, basically from start to finish, mostly spent coding on OctoPrint, and after that it was a minimal viable product. So, that was fun.

Jonathan: Yeah, that was going to be my guess. Somebody that already sort of knows what they're doing about two weeks.

Most of your Most of your fun projects get done in about that amount of time. That, you know, to get to that first, first working, because if it takes much longer than that, most of us are just like, Oh, well, that, that was fun to work on that, but I'll go do something else now.

Gina: The only, yeah, I mean, I should add, I had absolutely no idea how this whole printer communication factor worked.

So what I did was Going with Python. Anyhow, Cura was written in Python. Cura had a communication stack to talk with the printer and stream stuff to it. So I just took that from Cura. And used it and hooked into it. Originally OctoPrint was actually a plugin for Cura that would just offer the functionality of Cura for controlling your 3D printer in, on a, on a web on a web interface.

Then people complained, why does it have this Cura dependency? We don't need that. And that was when I refactored things, but yeah. So it's, it's all a bit. Weird how this happened.

Jonathan: Yeah, so Cura of course is an Ultimaker product which good on them for making an open source. Have you, have you had continual communications with like Ultimaker?

Have they ever offered to step in and sponsor your work?

Gina: No, I mean I think the One of the founders of ultimaker at some point at least supported me on patreon But other than that there was nothing official. I think back then cura also was not yet a full ultimaker thing, so the the the thing is that the the the creator of cura worked at ultimaker, but I think That was something he started in his free time actually we met at a conference ages ago once and We talked a bit about that, but then yeah Basically, i'm not even sure if he's still with that company or not but i'm really glad that ultimaker decided to keep cura open source and Floss and all because everything else would have been a bit sad.

Really. It's a good slicer

Jonathan: Well, I think we talked earlier about how that slicing has come along as much as it has. I think if Cura had not been open source, we would not be able to say that to quite the same extent. The fact that everybody can get in there and add features and, and try things is one of the big reasons why we have so much magic in slicing.

Katherine: Absolutely.

Jonathan: So. So. Go ahead Catherine.

Katherine: Oh, so I just I was actually I'm really curious because you know we've been talking about how it Yeah, the beginnings of the project and you've talked about you know you've recruited some other other developers for plugins and other things But I wondered if you could talk a little bit more about how your your development workflow has evolved over these many years Right the way that people make software is has changed quite a bit.

And I, I know that I understand there's something that you're kind of really excited to talk about there, but I, I wondered if you could talk about your tooling and your setup, and I would really like to hear about that, but I kind of would be curious to know what got you there too.

Gina: Yeah. So, I mean, in the beginning, it was just a side project that I did in the evenings and, and on the weekends.

And that is also how our approach distributing it. Like I just threw stuff, new stuff on Git. on GitHub and people updated from GitHub. There were no versions. There were no, there was no release log. There was nothing like that. And that of course had to change once things got a bit more serious. I started creating actual releases.

I started writing change logs which I, by the way, do and usually on every release takes me at least a day because I really do put everything that changed in there, even though I know rarely anyone reads them, but I know that is complete. And yeah, and then for a while I just had versioning and such.

Then at some point I started running into these issues where releases Something new on a Thursday or Friday and then you spent the whole weekend fixing it So I started to create frozen zones for myself. I do not release anymore anything after Wednesday That is a big rule for me And also not after December the 10th Because reasons then I found myself a couple of times in the situation that still things broke and really tremendously.

And even though they've now broke on a Wednesday instead of a Friday, that still sucked. So I introduced release candidates. And that has also been really really helpful because it turns out no matter how much I try to test I have a limited set of 3d printers here. I have a limited set of plug in Versus version combinations.

I cannot test everything under the sun And people out there are amazingly creative and breaking things. So, If I now give them a release candidate for four weeks to play with, I can be sure they find a lot of stuff that I would never have thought about trying out. And that way hopefully dig out all the bugs that made it into the release before they hit everyone out there who might not be as comfortable with yeah, basically rolling back manually or, or helping themselves out of a hole.

If push comes to shove, if I cannot fix stuff as fast as I would like to. And that has been, I guess, the secret behind having very, very stable and bug free releases in the past years. This whole change from, Oh, I just push it out to, okay, four weeks of release candidates, oops, a bug, okay. Four weeks of another release candidate, oops, a bug.

That of course means slow releases, but also less breakage. Makes sense.

Jonathan: There's a, somebody pointed me at a website a few days ago. Should I deploy dot today? And the answer's always, always no. If it's like a Thursday or Friday, no. If it's afternoon, no. So right now, if I pull it up, should I deploy it?

It's the idea of a magic eight ball, I think. And right now, if I pull it up, trust me, they will be much happier if it wasn't broken for a night.

Gina: I have to admit that I also depend a bit on my gut feeling. Like when I have. Something brewing, and I could push it out now, but my gut for some reason says, Eh, wait until tomorrow.

I listen to it. I cannot really say if it has prevented a lot of damage, but I just feel better and less stressed. And that is, that really does wonders for my work life balance as well. So that is just worth it. And I've actually had a bunch of times where overnight someone reported a big glaring bug that I then quickly still

Katherine: could fix.

So that was nice. This seems like a really great You just said it. A phrase that I'm curious about work life balance. So as a maintainer of a project like this, do you ever just get really burned out? Yeah. I feel like so, so burnout has been kind of a topic that I'm interested in lately. without going to going off on a tangent.

Burnout can have ramifications, right? If you can't sustain a project because you're too burned out or it can have security implications, for example, as we just saw. Yeah. Right. And I wondered, I wondered what, you know, what you could tell us about how you handle that. Like, how do you, I mean, I understand, you know, you have either your release cadence and you don't deploy on Fridays or anything like that, but, but what else do you kind of, have in place to maintain the balance so that you don't get so burned out?

What happens when you do get burned out? How do you back off and kind of recenter? I should say that

Gina: I pretty much feel like I'm constantly, actually am constantly circling the drain a bit less so these days than let's say three years ago or four years ago when it was really, really bad. So, Yeah, how much time do we have?

Because I can talk for ages about that but yeah, so one, one rule, one very strict rule for myself is that my free time is my free time. I don't care if things explode during this time. Like there are a bunch of trusted friends also in the Octoprint space who, when I am on vacation, do have my number in, like, my actual phone number in case something really, really, really horrible happens and I need to do something.

But I trust them that they will never call me unless something is bad. almost literally on fire and The rest of the time really my weekends are my weekends. My after hours are my after hours. I have split mailboxes This is also very very important like my Personal email doesn't touch on Octoprint stuff.

I even have a mail forwarding rule that if, if just the word Octoprint shows up in an email, it would immediately just go to the other one and stay out of my inbox because otherwise I constantly get dragged back into work. I have I have a postman. pinned on my Mastodon profile that says, Hi, this is my private account.

I love to be able to use it after hours and during the weekends and on my vacation. So if you have anything Octoprint related to say, please do so here to the Octoprint account. Thank you. And I also used to have the same thing on Twitter when I was still on there. Yeah, because otherwise people will just drag you.

Back into work, I actually had someone call my landline at once, like in Germany, you still have this legal situation that if you have a website that could be considered commercial. So if you, even if you're just putting ads on there, it is considered commercial. You have to have a legal notice that also includes a way to contact you by phone.

So I had a phone number on there, a phone number that directly went to a mailbox, but a phone number. Okay. And one day I got a message from this, this phone number provider. Hey, there's a new message on your mailbox. And I listened to that message. I was like, yeah, I had this problem with Octoprint and could you please, and that was like, I don't know, at, at 1am in the morning and no, just no.

And yeah, setting these boundaries and also enforcing them when. Half the internet is trying to get your attention is very, very important because they will try to drag you back into work. They will try to get their very personal problems solved right, right now. And I have learned that just being very clear when I'm not available helps a lot in setting boundaries.

And In fact, people will then tell you, Oh, Oh, Oh, sorry, sorry, sorry. And yeah, enjoy your vacation and such, but it's, it's really important to not let yourself get sweet talked into giving up on your free time all the time.

Jonathan: Yeah. I think, I think most people understand. They just don't think about it.

Like I developed an open source project. It's, it's almost like. People don't realize that that's a real person behind that. Exactly. I mean,

Gina: I also have the problem that I think most people don't know that it is pretty much me. Like, there is no team there. There are a bunch of Yeah, there's no off the print corporation.

There is no No, I, I'm not the, not the head of an invisible team of 13 to 15 worker bees that are working on it in the background. No, if you look into the commit log of Octoprint, you will see my name a lot in there, which is why I, I, I'm still writing most of the code myself. Of course, there are also external contributions, but if you look at like the constant maintenance stuff, that is still on me.

I just need a break from everything sometimes.

Katherine: So, do you have the desire or do you have a plan to, to recruit more, I wouldn't say successors obviously because I hope you'll be working on this a long time, but, but people to kind of carry some of the load? Yeah,

Gina: I've been looking into, that is actually something that is really Tricky to do when you are already at 100 percent workload, but I'm trying, I've been trying to work on better Documentation basically to do what I would say is pretty much a brain dump so because the problem with a lot of things that I get as feature requests and such is There is a lot of, of, I've learned a lot about how different printer firmwares work, how, what, what are the things to look out for all these differences that can, can really cause you to shoot yourself into the foot if you do a certain change somewhere, and that is something that Not very many people do have, I would say, on this whole planet, let alone people who are free and able and willing to work on, to help work on OctoPrint.

So that is always stuff that needs to be communicated then in some way. And of course, the same goes for OctoPrint's whole architecture and all the bits and pieces and such. So if I really want more core contributors, I think I need to enable them to teach themselves better. And for that, I need better documentation.

And for that, I need time that I don't have because yeah. Well, so it's a bit of a, of a cycle, but I'm working through it. I'm always just working out sometime here and sometime there and then making this and that. And so it's, it's a process. It's an involved and slow process, but it's a process. And I have to say that the plugin system already did a whole ton because, and I put this in, in 2014 with version 1.

2. 0. 2015. Sorry. Yeah. So because that enabled people to, instead of waiting for me to implement something that they wanted to just implement themselves and implement themselves without having to learn. pretty much everything else, but just concentrate on the stuff that they want to do on, on the, on the interfaces that they need and all of that, and do really, really nifty stuff that, and some of the, of the most active plugin developers are all now also helping with all of the issues and, and regular with regular pushes of code and such.

So that is really, really nice

Jonathan: talking about adding. core members and co maintainers. Obviously there, we, we, it's been so recent. We can't say that without thinking about X, X, Z and SSH. One of the things that I suggested that maybe projects need to do going forwards is follow the Debian model and that it essentially meaning do not bring someone onto your core team without having actually met them in person.

And I don't know if that

Gina: could get tricky though, if you do not have a big, huge fund of travel money that you can just use for that. It's

Jonathan: true. That is, and I think it's sort of onerous over on the, on the Debian side too, because that's, that's their policy on Debian. You do not get to be a Debian packager unless someone from the Debian packaging team has met you in person.

And then the way they handle that is they sign each other's GPG keys. But. it would make it a lot harder to pull off an op like what XZ did, what happened with XZ. So I don't know, but as you say, it is, it's, it's a lot of expense for a small project.

Gina: I think we will be talking a long time yet to come about how to prevent something from that.

Yes. Like that from happening again. And frankly, for me, when I read about this over the Easter weekend, I just, All the time, I just thought this could have been me. Like, obviously, if someone did the same to Octoprint, it would not have the implications here. But still, I have had some security issues and Yeah, every single time I feel sweat on my, on my head and I feel this cold run down my spine and

Katherine: Yes?

Get

Gina: some, get some what? Nauseous? And, and so, yeah, it's like It is an experience, something like this. But my personal thing that I'm taking from the whole Xe thing is really that if someone starts pushing me that I have to, that I should accept the change, then I'll just consider it a security issue. And like, I think, I think public pushback will get handled a bit more aggressively in the future from every maintainer under the sun now thanks to that.

Jonathan: Okay, so one of the things that I've kind of thought about with this, we're, we're going a little bit off track, but that's fine. There's been a bit of a push, and you can tell me if I'm wrong, correct me if I'm wrong, it's just my, my thinking on it. There's been a bit of a push that open source projects need to be nicer to people coming in from the outside.

And One of the things we've seen from XZ is no open source projects need to be able to tell people to go away.

Gina: Yeah,

Jonathan: and it almost seems to me that maybe we've backed ourselves into this corner by insisting that we're nice, when maybe that's not always the answer. And giving, giving maintainers back that permission to be a little rude, to channel their inner Linus is maybe an important thing.

Katherine: I think both things can be true, right? Yeah, I think we

Gina: need to find some way to have less entitlement on the one side and less rudeness on the other and just get back a bit more to collaboration in general because my experience as a maintainer has been a lot of getting screamed at from people when something doesn't work and getting demands that I should have should fix it right away getting told to kill myself over really like I actually have had gotten that and like things like this when you are giving away something for free versus I mean, I cannot, I cannot say that I do not get thanks enough, but because I, I do actually get people telling me that, that I have improved their life, that I'm a role model for their kids, which always makes me like, whoa, what?

I never set out to be that, but okay, thanks. And, and things like this, and this always makes my day, but it really only takes one or two of these things. Beepholes to ruin your whole week. And this, this is also what contributes and this is how we get back to burnout. This is really something that contributes to maintain a burnout because you constantly work and you constantly work your ass off.

And you are like, I would, I would actually say that a lot of my blood, sweat and tears is in Octoprint. And then people come in and basically just scream at me, often for an issue with the printer that is not even in my control. And that is just not working out well. And then someone comes in and is really, really nice and wants to help you.

And you just need to give them commit access. I mean, that sounds kind of sweet in that moment, right? I can totally understand how that happened.

Jonathan: Absolutely. I,

Gina: yeah, I, I am very, very careful about who gets write access. Yes, and I always have been, and if truth be told, if it ever comes to the point where I will stop working on Octoprint, I will not give over maintenance to someone else, but just archive things and say, hey, if you want to continue this, just to continue, then fork and rename it and do it that way.

But I can totally see why people are just desperate sometimes and take every help they can get.

Jonathan: flashing through my mind just then were potential names for the fork and it's like you could name it nano print for nine instead of

Gina: eight. That also gives you chances for future forks.

Jonathan: There you go. There you go. Okay. I'm curious talking about this issue of burnout and then connecting it to the other thing we want to talk about.

Does being able to do it as a day job, does getting paid for it help or does it make the burnout problem worse? Or does it not matter? I wouldn't

Gina: say I think it doesn't matter because the thing is Money or money allows me to have a roof over my head to Eat to sometimes also buy myself nice things or go on vacations And most of it actually goes towards a retirement fund because I am not getting younger.

So at some point I will not be able to do that anymore, probably. So I have to plan ahead for that as well. What it does not do is give me more time. It does not allow me to sleep less. It does not allow me to rest less in general. My day still has 24 hours and I still need at least 8 hours of sleep per night because otherwise, ugh.

So I would say with regards to the burnout situation, no, it really doesn't change things. And with regards to the burn out attributing entitlement and toxicity problem with some parts of the user base. It also doesn't help at all. But of course, it is really nice to be able to really fully concentrate on one thing, on one project instead of trying to squeeze this into your life as a pet project, which is what I did the first one and a half years of this journey.

And that was actually something that affected both my mental and physical health and is something that I would not recommend doing again. Like, that was Java during the day and Python at night, and nah. Just say no. At a certain project size you really need some way to, either you need way more people that work on it, or ideally you need to find someone who is able to do it full time, ideally you if you are the creator.

Because otherwise it just doesn't scale. We expect, I mean, the whole, the whole idea about open source for many people is not that the source is being shared, but hey, I don't have to pay anything. But all of this stuff does not happen in a vacuum and people should be aware that it has a cost attached.

And usually this cost is currently paid by maintainers in shape of their health. And maybe that should not be that way. And maybe we should rethink this as a society. But no, I'm Sounding like Star Trek again, so, yeah.

Jonathan: Oh, we could, we could dive into into the philosophy and economics of that. Which would be very interesting.

I don't think we have time to, though. Yeah, it's quite difficult. I do, I do want to ask, and maybe, maybe we'll take, we'll take a show sometime in the future and just talk about that. But, so I want to ask, you said you, you worked on it basically as a hobby for a year and a half, and then were able to go full time with it.

How did you, how did you make that transition? How did you, how did you find someone that was willing to pay, you know, your salary at a living wage to be able to do that?

Gina: They found me like this was an absolute accident. For some reason, precisely at the right time, because it happened when I found myself in the situation where I, I already 80 percent so that I had one day per week dedicated to Octoprint.

Mm hmm. And that proved to simply not be enough anymore either. So the weekends it was again and some, some, sometimes I didn't do anything for, for, for a month or more because I was just too burnt out because the day job was also very, very intense and a lot of, lots of responsibility and design decisions and whatnot.

And so, yeah. And right when I was sitting there actually with some horrible back problems, which. Looking back, probably were caused by stress. I got an email in my inbox going like, Hi, I'm from company such and such. And we were wondering if we could invite you to Madrid to just get to know you and talk to, talk with you about Octoprint because we would like to just hire you to work on it.

And I was like, okay, I've never been to Spain. Why not? And then I flew over for a weekend basically. And We talked and in the end they Yeah, we had we also talked about money obviously and we agreed on something that worked out for both of us which was not A step back thankfully for me, but also not like I I was not ripping our trees with that either.

It was just okay And what was very important back to me was that I had full control over OctoPrint, that everything would work out in that regard, that I was making the decisions, that they would not go, but we do not want that feature, we want this feature, or something like that, that it would still be something that focused on the community, the global community, and not just on whatever their printers needed.

And all of that was something I got in writing, and so that was fine. Back then they also said I would get a whole team of people. I never got a whole team of people but okay. And so that is how I worked basically from summer of 2014 to early 2016. And then they ran out of money. And so I found myself with a full time open source project that really Would not be something that I could still do as a side project because I already knew what it would cause me in in terms of health problems and I figured okay Either I now go back into my old corporate Role, which I mean I could have done easily but Lots of options here.

I was not worried about that, but it was also not something that I just wanted to do and give up on Octoprint because Octoprint felt like something that I was actually helping people with that it was actually making an impact in an industry with. And so I figured, okay, I will at least try to make this work with crowdfunding.

I'm a complete risk averse person. Going self employed was something completely against my nature, but I figured if I do not try this, I will kick myself in the butt for the rest of my life and asking myself what if so I did it. And roughly, actually now four, six, yeah, six years to the day almost, my Patreon campaign launched.

Where I also explained the situation and told people I want to keep this open source. I want to keep doing this. I need to do this full time because I simply cannot do this after hours as a side job anymore. It is not a side job. It is a full time job. So it should be able to pay the bills. Help me, please.

And to my utmost surprise people did just that and have been doing just that since then. So Octoprint is 100 percent crowdfunded. There is also some money coming in through ads on the forums and the website, not in Octoprint though. Octoprint is completely ad free. And also, yeah, I also have some, some shirts up and such that people can buy from which I, from which I get some, some commission.

But overall, it really is just Yeah, it really is just all the people who use Octoprint who are keeping Octoprint funded, and that is pretty pretty damn amazing.

Jonathan: It is. That is really impressive. Yeah Okay we are already getting towards out of time. Catherine, I'll kick it back over to you. I know, it's gone really fast.

I'll kick it back over to Catherine if she has any final questions she wants to ask, and then I will get into my final questions, and we can wrap.

Katherine: Yeah, you know, I, I, I don't think I do, although I think, I think I'm not sure we ever got to the tooling thing. I know you're excited about some tooling that you wanted to talk to and I don't think we got to that, but I don't know.

I'll let Jonathan tell us if we have time for you to share your. Okay. Awesome. Yeah. I would love to, I would love to hear about how, how you're making your life easier with the motivation.

Gina: Yeah. Okay. So I will try to give you basically the quick, the really quick version of that. So the thing is that remember when I said.

That I go through all these release candidates and the releases. And of course, everything needs to be tested as much as possible. So every single release that I push out needs to be tested against a multitude of starting points in software versioning. So bunch of software versions, bunch of Python versions.

And basically what I do here is a bunch of octopi versions, because I still have people running images from three years ago out there versus some even older. That's a really good question. that are really ancient by now in, in the anonymous usage tracking pop up recently, but yeah. And, and. A long time I did all of this manually, like I took an SD card, put it in my reader, flashed it, then manually edited some files on there so it would have the right starting point, then pushed it into the Raspberry Pi, booted that up manually, waited until it was there, yadda yadda yadda, it took a lot of time.

So on every single release I had to go through something like 5 to 10 scenarios like that, and doing all of these steps manually with one card reader meant Literally hours that were spent doing nothing but flashing cards, manually going through update steps, often getting confused, having to start again, all of, so it was absolutely horrible.

And I searched for a solution for that. for years when I finally came across a nifty little device called an USB SD Max from a German company here called I think Linux automation, GMD, GMBH or something. And that is a really nifty thing because it slots into the, into the micro SD card slot in, into any micro SD card slots, slot gets powered through USB and can then also act as both a mass storage device through the USB.

plug that you, for example, put into another Raspberry Pi, or as the SD card for the Raspberry Pi as the boot medium. And you can toggle the two between through the USB connection. So I now have three Raspberry Pi 3s, three of these USBs SD Maxes, a USB hub that I can control each individual USB.

be poured on, the power on, which I also modded a bit so it actually can serve, serve the power for three Raspberry Pi threes and one Raspberry Pi four that all of this is attached to and that acts as the flash host. And then I wrote a whole bunch of scripts and laser cut myself a nice little frame in which every point, everything is mounted.

And now what I can do is I fire off a little script. It will take care of. putting the Pi offline, mounting the SD card, flashing the SD card, provisioning the SD card, going to my start version and then boot everything up, wait until it is booted, wait until it is responding, fire up the website in my browser so it might pop and there is OctoPrint and I just have clicked the button and then everything works, I make a green checkbox and off the next command goes.

And I even can now do all of that through a tailscale, a tunnel through GitHub action. So when a new image gets built, it automatically fires off all of this chain in my own network, runs a bunch of end to end tests, fully automated, and then just sends me an email if this fails. So that thing, Saves me hours on every single release on every single release candidate, and I sing its praise every time.

Like, really, I remember how horrible was it was before. And now being just able to let myself generate a bunch of commands. I also wrote a script that generates myself a bunch of commands that I can go through, like, everything gets automated, everything that is repetitive gets automated. So just being able to do that is, is

Katherine: I love it when a plan comes together.

Yeah, it was precisely that feeling. Sorry, I had a little A team. I'm giving away my age again.

Gina: I understood it. I'm giving away mine as well, right?

Jonathan: Alright, so I did have, I did promise I would ask Ken McDonald's question. And this, it made sense when he asked it. Can most feature requests be added via the plugins?

Yes.

Gina: I would say the majority can, yeah, there are some things that require some core adjustments, but these days my approach usually is, if it is not something that really only makes sense to have in core, to have for everything, for everyone, then I rather build in a way to edit through a plugin. I might write the plugin myself.

I may, I might make the plugin bundled, which means it automatically gets installed with OctoPrint or even is included in OctoPrint. Things like the software update mechanism, the plugin manager itself, the achievements the checks that I mentioned before, the safety checks for the firmware, the, the sanity checks for the G code files, all of these are plugins.

They are bundled plugins, but they are plugins. My approach really is. Like if I can write it in a plugin, I put it in a plugin. And if I cannot write it in a plugin, then I look if it might not make sense to allow implementing it as a plugin, because that will also enable others to do fun new stuff with this.

Jonathan: Yeah. Very cool. Is there anything that we didn't cover that you wanted to make sure to let folks know about?

Gina: I don't think so. I think we went over a ton.

Jonathan: We did. We covered a lot of ground. Okay. So a fun final question that I like to ask folks is what is the thing, where have you found Octoprint? You know, what has someone done with it that has surprised you the most?

What has been the most interesting use that someone has had for it?

Gina: Someone actually used it to power their home build pick and place machine.

Jonathan: Oh, fascinating. Yeah, I did not expect

Gina: that angle at all. That was, yeah.

Jonathan: That's really cool though. I like that a lot. Yeah. Interesting. I wonder if we've covered that on Hackaday.

If not, that sounds like a thing that we should. It

Gina: might be. It's interesting. Another thing, I pretty much every year or sometimes a couple of months, I just get surprised how people use the plug in interfaces that I built. Like, people have done things where, from plug ins, where I, Looked at the plug in and had to go through the source code because I wanted to understand how to how they did that with What I gave them to and there were so creative solutions and sometimes sometimes they were a bit hacky But sometimes they were also quite beautiful and like made me go.

Oh wonderful amazing and those are really great moments when you look at how people use what you build to build even more awesome stuff and And you're just in awe at how they pulled that off.

Jonathan: Yeah, absolutely. All right. So final two questions then is what is your favorite scripting language and text editor?

Gina: Python obviously is a scripting language, so it would count. I think I also do a lot of, I also do a lot in bash to be honest. And these days I primarily use Visual Studio Code, but if we are talking command line, then it's VI.

Jonathan: All right, I think both are valid answers. Okay, thank you, Gina, so much for being here.

It was a lot of fun. You, you're primarily Patreon employed these days, so go ahead and plug, what is your what's your Patreon URL?

Gina: Yeah, patreon. com slash Fusel, but if you do not like Patreon, you can also just go to support. octoprint. org and there are a bunch of options. There's also github sponsors, donor books, Ko fi.

I'm trying to give you all the options to throw money in my way.

Jonathan: Make it as easy as possible. Yeah, makes sense. Alright, it has been a blast. Thank you so much.

Gina: Thank you for having me.

Jonathan: Alright, Ms. Catherine, what What do you think? Have we talked you into pulling your 3D printer back out?

Katherine: I don't know. I think you've talked me into, into maybe getting a new one.

I I, I do have some friends who are users of OctoPrint, incidentally, I did not mention. So I feel like, I feel like I might be asking for some advice on, on maybe a new printer. I keep saying this and then I go on and, and treat myself to something totally unrelated. So we'll see.

Jonathan: I felt personally called out when she talked about people running OctoPrint on ancient, ancient installs of OctoPi and I'm like, mine's right over there and it's not been updated for a very long time.

But it does what I needed to do and it's kind of on my, on the back of my to do list. It's like, you should really pull that Pi down and just rebuild it all together and maybe put something a little faster up there. So I don't even know if that's a Pi 3, it may be like a one or two. It's over there, not turned on at the moment, because boy, everything is noisy when it's over there doing something, so.

But, one of these days, we'll get it done. Between all the other projects. I love it. Yeah, fun times. All right, Kathy, you want to, you want to plug anything?

Katherine: Oh sure. This goes out pretty soon. So if anybody's going to be at the open source summit, I'm giving a few talks. You can. Find me on LinkedIn and I'm sure I've posted something about them, but I'm talking about security, which is the cool kid on the block again because of recent events, I think.

So yeah, open source software and security is always an important conversation. Oh, and I I have a podcast open at Intel. I also have another, yeah, that podcast and reality 2. 0, another podcast. So if you're a podcast listener, you can hear my voice in many, many places.

Jonathan: Yeah. Let's see, the, the conference you're going to speak at where, where and when is that?

Katherine: Ah, that's the Open Source Summit and also SOS Community Day, which is a co located event the day before. So that's all in Seattle and that's coming up next week. So SOS Community Day is an event by the Open SSF, the Open Source Software, the Open Source Security Foundation. Sorry. And yeah, it's going to be a good time.

A whole bunch of cool open source people getting together to solve the world's problems.

Jonathan: Cool. I love it. Hopefully. I'm sure they will be talking about the XZ problem. Oh, I'm

Katherine: sure. No pressure giving a security presentation.

Jonathan: Oh, fun. All right. Well, next week we've got Andy Stewart scheduled, which if you're in the ham world, if you're in that intersection between Linux and ham, then that's probably a name you know.

If you are not, he is. Obviously a ham that does stuff with Linux. And I believe he's actually got his own Linux distro that is specifically aimed at doing fun things with ham radio. We're going to talk to him and it's going to be a lot of fun. And then the only other things that I've got to plug are.

Catch my work at hackaday. com. We have this security column. I'm in this world too. That goes live every Friday morning. We have a lot of fun with that. And then we've still got the Untitled Linux Show over at Twit, twit. tv slash ULS. And that is now available to the public. The audio version of it is. And then there's Club Twit if you want to really get in there and be part of the live show and part of the discord.

Yeah, have a lot of fun with that. I want to say thank you to everyone. We had some folks listening live, had some live questions. And thank you to everyone on the download. We sure appreciate it from all of you. And we'll see you next time on FLOSS Weekly.

Kategorier
Förekommer på
00:00 -00:00