After several years of development, complicated by the pandemic, disrupted supply chains, and war in Europe, we announced our new Original Prusa MK4 today. We began shipping the first units of the XL two weeks ago. There is an upcoming PrusaSlicer 2.6 with organic supports and many other great features. Our firmware team is finalizing the custom implementation of input shaping (vibration suppression) for the MK4 and XL. In addition, there’s the new MMU3, with completely rewritten firmware and tons of improvements.
The above and many other things we’ve been doing at Prusa Research for over ten years were only possible thanks to the great 3D printing community and open-source philosophy. However, the new printers and software releases have made me think again about the current state of open source in the 3D printing world. How sustainable it is, how our competitors deal with it, what it brings to the community, and what troubles us as developers. Consider this article as a call for discussion – as a kick-off that will (hopefully) open up a new perspective on the connection between open-source licensing, consumer hardware, and software development.
Before I start, I want to make a few things clear to avoid any misunderstandings:
- We stand by our roots in open-source and will continue to do so.
- Our desktop 3D printers will always be open source. We intend to continue publishing plastic parts, along with firmware source codes.
- We will stay open to third-party component manufacturers, accessories, add-ons, and unofficial upgrades.
- PrusaSlicer will always be open source.
- Our investment in PrusaSlicer and firmware development will continue at the same or higher level.
During the last decade, I have always been against companies that have turned away from the open-source community as time went by, eventually becoming closed-source. I don’t want Prusa Research to go in the same direction. Patents by big companies have limited the 3D printing world from the beginning, and projects like RepRap have helped it break out of that grip. When several important Stratasys patents expired in 2014, open-source development could finally take off at full speed.
Anyone developing something related to 3D printing today will benefit from more than ten years of continuous open-source development. Hundreds of individuals and dozens of companies contributed to getting the industry where it is today. The idea that you can develop a 3D printer with its firmware and software from scratch in a year or two is an illusion. We will always stand on the shoulders of people like Adrian Bowyer (founder of the RepRap), Alessandro Ranellucci (original author of Slic3r), David Braam (original author of Cura), Scott Lahteine (Marlin maintainer) , and many others. At the very least, they all deserve public recognition and thanks whenever someone uses their work. And that brings us to what worries me.
The open-source movement relies on the fact that everyone involved plays by the same rules. It cannot be done without mutual respect, understanding, and a shared goal. When someone suddenly bends the rules for their own benefit or openly violates them, the community makes it clear that it won’t stand for it. In the past, we’ve seen plenty of protests and boycotts that have forced even large companies to rethink how they treat open-source heritage. But in recent years, I feel that the situation is changing. More and more companies are breaking and bending the rules, and the community is not nearly as resistant to their actions as it once was. After a minor internet storm, the situation calms down, and the code remains closed (or only part of it is opened), and after a few weeks, everyone forgets.
In the meantime, I’ve been receiving information about companies that have started to apply for local patents based on open-source development and trademarks (you’d be surprised how many of them have “Prusa” in their name). About companies partially owned by state companies and institutions and using open-source code in their closed systems, thus violating licenses.
Of course, not all open-source violations can be proven easily, but if you look at history, you will find that it would not be the first time something similar has happened. One example for all is solar panels – the original inventions and processes were gradually copied by Chinese companies. After that, with the help of state subsidies and tax breaks, they drove all competition out of the market within a few years. Today, you have virtually no chance of buying a non-Chinese-made solar panel.
I hope this will not happen in the world of 3D printing. But the truth is, we might be the last big 3D printing company that fully adheres to open-source principles. And I’d really like it if there were more of us.
We’ve spent years on open-source development, whether contributing to the original repositories or later in our own hardware, firmware, and slicer forks. Our internal PrusaSlicer team has 13 people, and the firmware team has 21 – that’s hundreds of thousands of man-hours of work only over the past five years.
Since my brother and I started with 3D printing, we have (along with our colleagues later) come up with a whole range of contributions that you can find on almost every home 3D printer today (open-source or not). Whether it’s a PCB heatbed, removable print sheets, powder-coated PEI applied directly to metal, automatic mesh bed leveling using an inductive probe, power panic, advanced thermal runaway protection, automatic skew axis calibration, sensorless homing, and much more – I would never consider patenting any of these contributions and not sharing them with the 3D printing community.
One of our first heated beds
And that’s just stuff related to firmware and printers. Besides that, PrusaSlicer has undergone so many changes that the original Alessandro’s Slic3r is practically invisible underneath all of the new additions (and yet we continue to highlight Slic3r’s heritage in the main bar and elsewhere). By the way, take a look at the documentation of PrusaSlicer on our website or our fresh Twitter account, where you’ll find useful tips and tricks!
PrusaSlicer is a great example of what open source can bring, but it also demonstrates some of the risks I haven’t mentioned yet. A positive example is the incorporation of amazing community contributions such as adaptive cubic infill or tree supports, which you will see soon in PrusaSlicer 2.6.0 in the form of organic supports. The collaboration with the team behind Cura is also great. We have got the Arachne perimeter generator and Lightning infill from Cura, and we returned the favor with, for example, a monotone infill or the bed management system.
Want an early preview of the Organic supports that are coming in PrusaSlicer 2.6? We’ve pre-sliced a couple of G-codes for the MK3, so you can try them out! If you print any of them, we’d love to see how it turned out or even a video of the removal of supports. 🙂 pic.twitter.com/sQAh1xTDWO
— Prusa3D by Josef Prusa (@Prusa3D) December 7, 2022
Unfortunately, there is a downside. Taking over features between competing slicers only makes sense if the contributions of the individual parties are at least partially balanced and if the authors are quoted correctly. And this is not always the case.
And then there are the community contributions. Due to the popularity of PrusaSlicer, many people contribute their pull requests on GitHub, expecting their code to be automatically added to the main branch. However, PrusaSlicer has become a highly complex program over the years, and similar contributions are usually “one-trick ponies” – they solve a problem that bothers a particular user. Still, at the same time, they break other features. Our developers must optimize, modify, or even completely rewrite most of the external code to keep everything stable and reliable. We constantly refactor large parts of the original code in PrusaSlicer, and keeping everything in stable is not easy. If you want to hear more on this topic, check out the presentation by Vojta Bubnik (PrusaSlicer lead developer), which he prepared for our special event at CERN – presentation starts at 00:25).
I don’t want it to sound like I’m complaining about the community’s involvement in development – on the contrary, we’re grateful for all external contributions. But community development isn’t the main reason why we offer our products as open source.
Our main goal has always been to make our printers easy to maintain and modify, so people and companies can play and experiment with software and hardware. We’re thrilled to see the amazing modifications and third-party add-ons for our 3D printers (one nice example is here)! And one of the best things to see, and one of our greatest motivations, is when parents build a 3D printer assembly kit with their kids, thus gradually learning how the machine works.
Cool upgrade for our printers prepared by the team in ZHAW Institute of Mechatronic Systems
But getting back to the topic – what don’t we like about the current state of open-source development in the 3D printing field? To make it clear, I’ll summarize it into a few key points:
- The standard GNU GPL license under which our printers and software are available is very vague, written in a complicated way, and open to various interpretations. It was developed by academics for academic purposes. The 3D printing community has begun to use it for hardware for which it is not entirely suitable. A violation of this license can be enforced under copyright law, but these regulations differ in each country, and potential disputes can be long and expensive.
- In the current market for 3D printers and the software around them, many companies interpret open-source licenses in their way. They often do not release source code or only release parts of it, and only after the community puts them under pressure.
- There are 1:1 clones of hardware or software on the market that do not bring anything back to the community.
- When code is taken over, copyright headers and development history logs are often deleted from repositories, erasing any trace of the original code’s authors.
- Devices or software manufacturers who use open source do not give enough credit to the original authors. In their welcome screens, readme files, or websites, you will often find no information about the origins of the product.
- Contributions to shared repositories are not equal – in other words, some parties take improvements from others but do not contribute themselves.
- It is suspected that new commercial projects are being created based on open-source projects. However, their code is closed, and they apply for local patents that can eventually be expanded globally.
All of these points also imply possible corrective actions. The question is, how to achieve them while still remaining open source and supporting the community? Some time ago, I started thinking about a new license to address these issues more clearly. So I put together a few working points that I would like to see in such a license:
- If you’re using some code or blueprints to bring software or hardware to market, the original code’s authorship must be clearly stated on the product or in the software. Additionally, deleting copyright information from headers and history from repositories is prohibited.
- The production of nearly exact 1:1 clones for commercial purposes is not allowed.
- License for manufacturing spare parts is valid for service, modification, or educational purposes.
- Upgrades and additional modifications based on original parts are allowed and welcome.
- Parts that can be considered consumables (e.g., thermistors, heater blocks, fans, printing plates, etc.) can be manufactured and sold commercially after the verification by the licensor based on the presentation of samples.
- If a product is labeled by the manufacturer as obsolete (or cannot be purchased or ordered for longer than 3 months), the non-commercial clause is automatically terminated if identical parts are no longer produced within the successor of the product or cannot be purchased separately.
- If the licensor ceases its activity, the non-commercial clause is terminated.
Right now, with the release of MK4, we will make available models of all plastic parts and firmware sources (they are already out since the release of the first XL firmware). However, due to the current state of the electronic components market and also the issues outlined above, we will not rush to release the electronics plans just yet. We would like to release them already under the new license.
Basically, what I would like to do with this article is to start a discussion. I want to hear what you think about this, and I’d like to include prominent figures from the open source fields, Youtube personalities, journalists, and other 3D printing and open-source hardware companies in the talks. If we can all agree that the current situation is not ideal, let’s work together to improve it.