%include "default.mgp" %default 1 bgrad %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault %back "blue" %center %size 7 Nobody has [yet] understood Embedded Linux %center %size 4 by Harald Welte %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Introduction Who is speaking to you? an independent Free Software developer, consultant and trainer 13 years experience using/deploying and developing for Linux on server and workstation 10 years professional experience doing Linux system + kernel level development strong focus on network security and embedded expert in Free and Open Source Software (FOSS) copyright and licensing digital board-level hardware design, esp. embedded systems active developer and contributor to many FOSS projects thus, a techie, who will therefore not have fancy animated slides ;) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Introduction Why am I qualified? The 'Linux community' POV Initiator of OpenEZX project (Linux on Motorola GSM phones) Author of various drivers for embedded hardware The 'embedded Linux done the rigth way' POV Lead System Architect (SW+HW) at Openmoko, Inc. Co-creator of Open Hardware + Software for RFID OpenPCD, OpenPICC, librfid, libmrtd The 'chip manufacturer' POV Open Source Liaison at VIA Technologies, Inc. The 'customer of consumer-grade embedded Linux' POV Done reverse-engineering on hundreds of devices for gpl-violations.org %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Linux is everywhere! %image "linux_netfilter_singapore_entertainment.jpg" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Linux is everywhere Linux is everywhere! Linux mobile phones (Motorola, Openmoko) In-flight entertainment systems Embedded networking gear DSLAMs rack monitoring Public payphones ATM's / PoS / vending machines Now even Fitness gear (Daum Ergometer) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Strengths of FOSS [0/4] What are the true strengths of FOSS Innovative and creative development Security due to code review / bugreport / patches Long-term maintainable code Stable and reliable systems %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Strengths of FOSS [1/4] Innovative and creative development easy-to-read existing codebase standard (FOSS) development tools thus, easy to modify and add features community will build around great new features/apps %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Strengths of FOSS [2/4] Security due to code review / bugreport / patches because all the code is out there because many people are familiar with existing architecture because code quality requirements usually very high because community process allows quick and fast integration of bugfix %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Strengths of FOSS [3/4] Long-term maintainable code because there's a lot of attention on good software architecture because many developers are familiar with the shared/common API's because code quality requirements usually ery high because all code in mainline gets maintained and updated %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Strengths of FOSS [4/4] Stable and reliable systems because code quality requirements usually ery high because kernel releases are quite frequent because all mainline code is automatically ported to new releases %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Reality Check So we should have the perfect world tons of embedded Linux products all of them maitainable, secure, stable encouraging lots of creative work on top of their codebase What is the reality tons of embedded Linux products none of the strengths of FOSS present in 99% of them %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the vendor get So what do the embedded vendors get? unstable software security nightmares unmaintainable code no innovation no user-contributed bug fixes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the vendor get unstable software because their code stinks (low quality) because they patch around problems rather than solving them %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the vendor get security nightmares because they use stoneage forks of the kernel because they never contributed their code mainline because those forks can never be merged back with mainline again %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the vendor get unmaintainable code because they have one fork of the code per device (product) because their code quality sucks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the vendor get no innovation because they try to hide their code (gpl-violations.org) because their R&D environment is non-standard weird cross-toolchains that nobody has seen before weird filesystems with custom patches that nobody knows because they add proprietary components to lock developers from adding features e.g. the entire web-based UI for embedded networking gear binary-only kernel modules that force people to use old kernels with no interesting new features because it is, overall, way too hard to develop on/for their platform because they don't disclose serial console and/or JTAG access %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Reality Check So why do they still do it? there can only be one conclusion: they never understood the real potential of FOSS all they do is try to compete with what proprietary competitors do they never think about creating platforms, every product is distinct/separate they have no interest in improving their products %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux What does the community get So what does the community get? products that run some crappy fork of Linux somewhere under the hood but which we cannot really touch/modify without a lot of effort we face opposition from the product maker if we want to help him to improve %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux TODO What should they do? stop thinking in terms of selling black boxes defining products that take advantage of the true strength of FOSS compete against the proprietary competition on a level that they can't match give up the idea of defining all aspects of an appliance rather think of building an extensible platforms and let community innovate %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Outlook Outlook We will see even more embedded Linux, e.g. Mobile phones We will see even more restricted devices (Tivo-ization, DRM for code) which go on _very_ thin ice even with GPLv2 which almost completely remove all freedoms of FOSS We have some faint dim light at the end of a very far tunnel e.g. projects like Openmoko, who truly see openness as a feature %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Nobody has [yet] understood Embedded Linux Outlook