Table of Contents
Open source software was originally used to describe software that was publicly accessible. It was juxtaposed to the typical proprietary code base. Only the original authors of proprietary software can legally copy, inspect, and alter that software. It is made available to others based on rigidly defined licences that prescribe permissible use. Licences usually require payment.
Open source software is also licensed, but the terms of the licence differ radically. Users are permitted to use, study, modify and distribute software. Collaboration is promoted by design; users are permitted to make changes and incorporate the software in their own projects. Typically, licences require that the project is made available to others on the same licence conditions. Payment is not explicitly excluded but is not usually mandatory.
This narrow definition has evolved into what might be termed the open source philosophy of software development: open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community-oriented development.
Open source projects can have a variety of characteristics but most typically they embrace certain basic ideas:
No limits on other software
A licence cannot place limits or requirements on other software distributed alongside the software. This is to prevent lock-in with commercial products.
The licence should not be predicated on use with a particular technology or interface. Such a restriction would be against the whole philosophy of open source and enable vendor lock-ins to be created.
Integrity of source code
The licence must explicitly permit distribution of software built from modified source code. However, there can be requirements to change the name or version number of the modified form. A restriction on distributing the software in a modified form is permissible if the licence permits the running of patch files at build time. Patch files would enable effective modification and mitigate against sophisticated lock-in attempts.
The licence must not restrict aggregating the software with other components. Payment or royalties’ must not be required.
A licence must not discriminate against a person or group of persons. Similarly, specified fields of endeavour cannot be included or excluded in the permission.
The rights granted by the licence cannot be subject to the activation of some other licence. Such an activation requirement would by-pass the fundamental purpose of open source.
Source code inclusion
The distribution must include the source code as well as the compiled form. Exceptionally, the compiled form can be distributed alone, if the source is in some well-known location. Obfuscation is forbidden and the source should be in its preferred form.
Derived versions and redistribution on the same basis as the original must be permitted. Changes cannot be used as a justification for imposing more restrictive licence conditions.
Linaro and Open Source
Many of our engineers are maintainers on open source projects in the Arm software ecosystem. We are uniquely positioned to drive the conversations needed between the open source community and industry leaders to identify opportunities, highlight problems and propose solutions.
Linux Kernel Quality program
Linaro’s Linux Kernel Quality program encompasses both Linux kernel testing and testing of the Long Term Supported (LTS)-derived Android common kernel from the Android Open Source Project (AOSP).
Linux Kernel Functional Testing
Linaro’s Linux Kernel Functional Testing (LKFT) framework is a long-running project that provides unparalleled coverage over 6 Linux LTS releases, the linux-next branch and linux-mainline branches. Functional regression testing is performed in real-time over an array of release, architecture and target combinations.
Toolchain benchmarking and analysis is a linchpin of Linaro’s Open Source toolchain community citizenship. It is foundational to overall toolchain quality and Continuous Integration (CI) efforts. The detection of code-speed regressions, code-size regressions and build/boot breakages helps ensure the quality and robustness of Open-Source toolchains.
The toolchain CI projects aims to: • Secure Linaro members’ investment in toolchain optimization. • Contribute to the overall sustainability of the open source toolchain community. • Bring value to the Arm architecture ecosystem.
For more information on this project, check out this White Paper on How to Protect Investment in Code Optimisation with Linaro’s Toolchain CI.
Project Stratos is decoupling the dependencies inherent in proprietary implementations of hypervisors and System on a Chip (SoC). Creating open source front and back ends preserves the ability of manufactures to respond to innovation and maintain a cost and security-optimised development cycle. See project