Free and open source principles
Summary¶
Free and Open Source Software (FOSS) grants four freedoms: to run the software for any purpose, to study and modify it, to redistribute copies, and to distribute modified versions. The word "free" means freedom, not price. For engineering contexts, the more important argument is not philosophical but practical: a proprietary system is a technical vulnerability. When the vendor changes direction, the users have no recourse. Open source eliminates this vulnerability — the community can fix it, fork it, or replace it regardless of what any single company does. libdrone uses FOSS components not because of ideology but because they are better, more auditable, and not subject to unilateral external decisions.
Concept¶
The four freedoms¶
In 1985, Richard Stallman published the GNU Manifesto, articulating what he called "free software." The four freedoms:
- Freedom to run the program for any purpose
- Freedom to study how the program works and modify it
- Freedom to redistribute copies
- Freedom to distribute modified versions
"Free" here is libre (without restriction), not gratis (without cost). A program can cost money and still be free software. A program can be provided at no cost and still not be free software. The distinction matters because freedom — not price — is what prevents vendor lock-in.
The engineering argument¶
The philosophical argument for FOSS (users deserve control) and the engineering argument (public code is auditable and not subject to vendor lock-in) are both correct and reinforcing. For a student choosing what to learn, the engineering argument is more directly relevant.
A proprietary system is a technical dependency with an unknown risk profile. The vendor can: change the protocol, discontinue the hardware, go bankrupt, be acquired, or simply stop supporting the version you depend on. You have no recourse. Your investment in learning the system, building infrastructure around it, or deploying it in a product may be stranded.
An open-source system's code and specifications are publicly available. If the original maintainer abandons it, the community can fork it. If a company stops making compatible hardware, any other company can use the published specifications to make a compatible alternative. If there is a bug, anyone can fix it.
This is a risk assessment, not an ethical stance. Proprietary dependency is a technical liability. Open source mitigates it.
Open source in hardware: CERN OHL-S¶
Software licensing frameworks (GPL, MIT, Apache) cover code. Hardware requires different licences because physical objects are manufactured, not copied.
CERN OHL-S v2 (CERN Open Hardware Licence Strongly Reciprocal) is the licence used for libdrone's hardware designs. Its key provisions:
- Anyone may produce, study, and modify the covered designs
- Any modified version must be released under the same licence
- The licence covers design files, not manufactured objects — a product built from CERN OHL-S designs may be sold commercially
- Payload designs that use the libdrone GX12 interface do not inherit the CERN OHL-S requirement — the payload's design is independent
The "Strongly Reciprocal" clause means that improvements to the libdrone platform design must flow back to the community. This is the same logic as GPL for software: the commons that benefits you must be strengthened by your contribution.
Reference¶
FOSS licences used in libdrone¶
| Component | Licence | Key provision |
|---|---|---|
| Hardware designs | CERN OHL-S v2 | Modifications must be released under same licence |
| Documentation | CC BY-SA 4.0 | Modifications must be released under same licence |
| Betaflight firmware | GPL v3 | Modifications must be open-sourced |
| ExpressLRS firmware | GPL v3 | Same |
| AM32 ESC firmware | MIT | Permissive — no copyleft requirement |
| EdgeTX transmitter firmware | GPL v2 | Same |
| FreeCAD | LGPL v2 | Library use permitted without GPL obligations |
| ESP32-S3 / MicroPython | MIT | Permissive |
Exceptions acknowledged¶
No real-world system is fully open. libdrone's known proprietary dependencies:
- HDZero VTX encoding firmware — not open source
- Synology NAS DSM — partially proprietary
- RadioMaster TX16S PCB schematics — not published
Being honest about these exceptions is more useful than pretending the ecosystem is perfectly pure. The goal is to minimise proprietary dependencies, be aware of them, and not depend on them for critical functionality.
Procedure¶
Rationale¶
Why FOSS selection is an engineering decision, not a political one¶
Some teams treat open-source selection as an ethical or political commitment that must be balanced against practical concerns. This framing is wrong. The practical benefits of open source — auditability, vendor independence, community maintainability, no licence fees — are engineering properties that compound over time. A system built on open foundations is less fragile, less expensive, and more maintainable than an equivalent proprietary system. The philosophical agreement with FOSS principles is a pleasant side effect of making the better engineering decision.
Connections¶
requires: [] related: - vendor-lock-in - foss-stack-libdrone leads_to: - vendor-lock-in - foss-stack-libdrone