During the first Prusa Hackathon, which you can check in our short video, we decided to invite our long-time GitHub contributors to talk about current events and also to get to know them better. These three gentlemen had been working for months on projects that would ultimately help the entire community and they did it in their free time without ever expecting any pay for it.
Unfortunately, for some time we’ve been overlooking the excellence that lies within some of the community pull-requests. The code quality was very high and required minimal changes to keep the project maintainable. We finally noticed them in mid-2019, thanks to our firmware team leader David. We made a post on GitHub, apologizing to the community for our inactivity. Ever since then we got hundreds of pull-requests and dozens of them actually got incorporated into the Original Prusa firmware!
For a long time, these three men had contributed and helped us in our work without ever meeting face to face with us – that was until now. Meet Leptun, Wavexx, and 3d-gussner!
From left to right, Leptun, Wavexx, David (our firmware team leader) and 3d-gussner
What is your Prusa story and how did you get into hacking our firmware?
Leptun: It all started when I joined the robotics team in my school where we had an Original Prusa i3 MK2S as our 3D printer. Our MK2S was a sturdy machine. Even though someone forgot to align the PINDA probe and hit the bed a least ten times, it managed to perform well over the years. I did some minor tweaking in the firmware here and there but the first big challenge came with the release of MK3. It quickly became apparent that developers had shifted their focus to the new printer. I was mildly disappointed because the MK3 branch had bug fixes and new features that the MK2S hardware was perfectly able to run. But developers didn’t have the time to implement it for MK2S. So I decided to back-port the new firmware to make it work on the old MK2 as well. I think I made a few small pull requests, like fixing a typo in the MMU firmware. I didn’t even have the MMU, so it was funny that I made a pull-request for it. My first big one was solving the bed crash in selftest, it was, by the way, the first project where I started collaborating with Yuri (wavexxx).
Wavexx: I am a big fan of open-source projects and open firmware is for me one of the most important features I want from my printer. Sadly, accessible firmware was for a long time a domain of cheap Chinese printers. I have nothing against cheap Chinese printers, I used to have one too, but sometimes you just want to print more and hack less – so I bought the Original Prusa i3 MK3. My first big project and pull request was actually changing the extruder to a geared one because I needed to print with a very fine nozzle. Just by printing randomly I had a strange noise when extruding and also the models didn’t look good, especially near the corners. I started digging and found out that it’s because of linear advance which was implemented on MK3. In Marlin, I found out that there was already a fix for a similar issue so I started implementing it into MK3 firmware, telling myself it’s gonna take a few weekends and it will be done. How hard could it be, right? In the end, it took around 6 months 🙂
3d-gussner: My Prusa story began when I moved to Belgium and I wanted to get a 3D printer. After thorough research, Prusa came out as the best candidate, especially because of its open-source, its marvelous live support and big and friendly community. So I bought my kit. During the assembly, I had a few issues so I made a suggestion on how to fix it – to my surprise the solution was actually implemented in the next version of the manual. Because I am also a member of makerspace in Belgium and work with children quite often I thought to myself that it would be nice to have the printer menu in dutch so I stared translating the firmware. I posted my language mutation on GitHub, got some feedback and suddenly people started texting all around the world, offering their translations if I can incorporate them into the code.
Are you running custom firmware?
Leptun: Yes, I am almost always developing so I am running custom firmware with my changes that have not been merged to the official firmware yet. I’ve been developing the new SD card menu and managed to get it 3 times faster than it is in the stock firmware. I am still troubleshooting and fixing minor bugs but if everything goes well it might even be implemented in the next firmware update.
Wavexx: Stock firmware, forget it 🙂 Not even stock hardware. That’s the beauty of getting a Prusa, that you can get it as a kit. The manual is in my opinion really good and I don’t think you should buy the assembled one. And it’s a little bit like IKEA if you assemble it, it just feels better that you did it. Even if you didn’t change anything and keep it stock.
3d-gussner: Well, I had some new sensors, like a filament sensor added to my first MK2 so that one is running completely custom firmware. Then I have two MK3 printers, one of them running custom firmware and the other running stock. I’m thinking I should keep at least one completely stock running the latest firmware.
Do you see improvement in how the dev department handles community requests?
3d-gussner: I never really had a problem with developers responding to my requests but that is mostly because I’ve been mainly doing language mutations in the beginning. I know there are many hurdles when developing an open source-project so no hard feelings dear devs.
Leptun: I see improvement in the activity on Prusa’s GitHub where more and more pull requests are being done, I think it really turned after David (firmware team leader) took over and now it’s great.
Wavexx: Definitely, I see improvement. As an open-source developer, I know how hard it gets to manage open-source projects with so many people contributing, each with a different approach to the subject at hand. Back in the old times, it was kinda hard to get noticed as Prusa staff did not really pay attention to their GitHub community requests. I must stress this though, lately, it’s been very much the opposite, community on GitHub is very active and developers are very responsive.
This is the first time we ever met in person despite working together for months, it’s also your first time visit to Prusa HQ. How do you like it?
3d-gussner: I absolutely love it, people here are amazing. Especially what I like is the number of professionals you managed to get under one roof. Everywhere you go and you start to talk with people, everyone is friendly and just passionate about what they do. A casual discussion will usually quickly turn in a very educated one. Also, I love how such a big company managed to stay firmly on the ground. Prusa is not corporate and it probably will never be – and that’s a good thing.
Wavexx: After looking around in the company, If I could make a suggestion. Since you’re growing fast, keep it crazy. It has this nice magic mix of crazy, which is hard to obtain!
David (Prusa firmware team leader): I have pretty much nothing to add, lads just said it all. Prusa is punk, but it’s the good kind of punk and I love it.
Leptun: I like it very much, I loved the tour and I must say I was pleasantly surprised to find out just how much outgoing the staff is – even people running the filament line love to chat about it. I think if I were to live in Prague this would be the spot where I would want to work.
Any suggestion for someone who’s thinking about making a contribution to the firmware?
3d-gussner: Be passionate! If you are passionate about the idea just go and do it.
Wavexx: Sometimes even posting an idea itself is enough!
3d-gussner: Yeah and I’ve never experienced such kind and friendly community as 3D Printing community. Of course, you got a few trolls but the overwhelming majority are friendly people who are happy to help you.
We’re very thankful that our community is so engaged even in firmware development. Leptun, Wavexx, and 3d-gussner are in a way the first members of our community developer program and we’ll continue to watch out for active GitHub contributors.
If you want to learn more about our firmware and maybe even try contributing yourself, check our:
- Documentation of the 32bit Buddy platform, which the Original Prusa MINI firmware is based
- 8bit firmware GitHub repository
- 32bit firmware GitHub repository
Happy printing!
Neat to put faces to some of the names we see on a regular basis on GitHub! 🙂
Indeed. It was really nice also being able to meet the people I’ve been working with for quite some time. Much better/easier than text messages.
Hopefully more people will join the community developer program soon enough. We’ll have to see. I’m really eager to start working on the 3.10 update. There are a lot of improvements planned that will improve the user experience.
But for now, finalizing 3.9 is the priority. Most changes are already in github tagged for 3.9, so anyone can merge the important ones and test the final firmware.
Well, I’d definitely be interested in joining but the impression I get from lack of info since announcement and subtext of this article is that it’s going to be invitation-only for regular contributors. /shrug
Agree with vintagepc64! I’ve been coding for 35 years but the pull request I entered last summer was my first ever open source contribution. I really appreciated how Leptun took the time to graciously help a github noob like me with an unfamiliar process.
I’m glad there is an active community. That is what makes developing for open source projects worth it. 😛
I’ll ask Michal Fanta to include the flashAir fixes in the release notes for 3.9 final. There are more improvements that could be to the flashAir support, but that will come after 3.9 final.
Let me know what flashAir improvements you are considering, and if I can help, I will.
> Project descriptions remain in the original language, but we’re currently evaluating the pros and cons of machine translation.
If you add something like this, *please* do it right and let people specify which languages they understand. For example, as a German who’s fluent in English, and generally prefers English for technical stuff, I would like to specify that I never want German and English translated (because I understand those languages), and English as the translation target for any automated translations from other languages.
This is actually one of the few things done pretty well on Facebook 😉
Thhanks