Most folks don’t give open source the love it deserves. Since the early days of MultiWii, it has defined our hobby. To see this most clearly, take a step back and realize what your quadcopter really is: a flying computer with 4 rotating propellers and a camera. When you load your favorite freely available software onto that computer, it becomes the most agile flying machine mankind has yet devised.
Even the folks who fly the “closed source” products like Raceflight and KISS owe open source a debt of gratitude. At a specific level, open source software “contributes” to these products by commoditizing technology. DSHOT is a good example – this open source ESC communication protocol made high-performance ESCs with a digitial communication protocol available for ridiculously low prices. KISS pilots can now choose to buy $12 ESCs that are functionally equivalent to the (previously) $35 KISS 32 bit ESC.
On a grander scale, I believe that open source software allows whole industries to exist that otherwise would not be able to survive. Betaflight built upon Cleanflight which built upon Baseflight which itself started as Multiwii. As this evolution of quadcopter firmware happened, hundreds of developers contributed to the open source codebases with ideas for how to improve quadcopter flight. Even if closed-source software like Raceflight was 100% written from scratch, I think it is quite a stretch to claim that the developers did not source inspiration from their open source predecessors.
The Price to Pay (Literally)
As I’m sure most folks in the hobby are aware – doing things open source comes at a cost. Between the Naze and the SPRacingF3 board, through gadgets like the LaForge FPV receiver modules, the history of the hobby is wrought with instances of hard-working engineers losing money on their hard work due to the nature of open source design. The mechanics of globalization shoulder a large part of the blame for this: when products inevitably get into a price war, it’s the person living in the country with the lowest cost of living who will win. And that person is rarely the original innovator.
This all leads to a disturbing trend in the hobby: accomplished developers going back to closed source. The two most notable instances of this are Raceflight and BLHeli_32. I understand the motivations of the developers who made these decisions, but it makes me sad that the decisions were made the way they were. The features added by BLHeli_32 cannot be tinkered with by community members. If there is performance to be gained from 32 bit processors on ESCs, we are much less likely to find it due to the fact that there is considerably less visibility into how these ESCs actually work. As a result, we get stuck in a rut of “half-baked” technology which is restricted by the imagination of the developers who own it.
We are more fortunate on the Raceflight side of things. A developer on the Raceflight team recently came out and offered the Betaflight community the Kalman filter which makes Raceflight fly so smooth. Internal bickering (Butterflight vs Betaflight anyone?) aside, having this code out in the open is a boon for the community. We get to try the Kalman filter alongside the RC2+FIR filters on virtually identical codebases and see which one we like best. Who knows, maybe the absolute “best” is some amalgam of the two approaches. Open source is the best way for us to get to that maximum performance.
Can We Fix It?
What can be done to reconcile the benefits of open source software with the needs of the developers for compensation? I can’t say for sure, but here are some ideas:
First and foremost, you should consider donating to open source projects you use regularly. If you follow this blog, chances are that Betaflight is the predominant firmware in your life. I urge everyone reading to make a donation to the developers, even if it is a small amount. You can donate to the Betaflight developers here:
Beyond private donations, I would really like to see open source software projects opening up public donation pages like those found on Patreon. I think an avenue for donation with more visibility would entice many folks who otherwise would not contribute to the project. It also opens up the option of subscription revenue and the ability to provide services for hire like private help forums and consultation for FC designers. I know I would donate.
Another more radical suggestion is to break off a fundamental (but unchanging) part of the software and only distribute it as a licensed binary. The idea would be that you keep most of the code public so folks could still see it and tinker with it, but you make it difficult for someone to easily flash it onto a physical device without first compensating the developers. Once compensation is sent, be it via a “product key” or online registration or whatever, software updates could be flashed readily. I doubt something like this could be done with the license restrictions of most of the open source software we currently use, but I think it might be an interesting way to share code while still keeping a revenue stream.
The opposite approach could also be taken: Betaflight could be refined into a “kernel”, with only the most basic features needed for a great flight experience. Then, specialized features like GPS navigation, servo control, transponders, advanced filters, etc – could be purchased as “add-on” features in a marketplace. The Butteflight firmware claims to be moving towards this “platform”-building approach, though they have not made a ton of progress as of this writing. I don’t think their intent is to do paid “add-ons”, either. I’m wary of such an approach as it would be all to easy for the developers to strip Betaflight down too much, but I think it could be done tastefully. See all the controversy about video games being shipped stripped down so that producers can add paid DLC later in the year for an example of this.
Regardless of what approach is taken, I would love to see some steps made by the Betaflight and BLHeli teams to better balance the inherent advantages of open source software with the (deserved) right of the developers to get compensated for their work.
Do you have any ideas for this? We’d love to hear them in the comments below.