January 4, 2019
As the year wraps up we’ve looked back at what we’ve accomplished in 2018. Work continues on some projects, such as online RAID-Z expansion, but we’re now starting to look ahead at the work we’ll sponsor in 2019.
Some of the broad themes we’re investigating are described below. We need to prioritize and select individual projects, and welcome your feedback and project grant proposals.
Over the past several years the Foundation funded several projects related to Capsicum, largely focused on the development of Capsicum itself. It now makes sense to focus on application of Capsicum to more software, both part of the base system and third-party. Additional Casper services may be developed to support application requirements.
Work on a number of mitigations for kernel or userland application vulnerabilities is in progress, and these need to be completed and integrated. Support for automated code-coverage-driven system call fuzzing is also a work in progress.
Improved CI and Test Coverage
FreeBSD’s Continuous Integration (CI) system has become a very valuable component of the overall development environment, but there are also a lot of potential improvements. Increasing test coverage is an ongoing, incremental goal.
Much of the CI-based test coverage is executed in virtual machines, but a small number of platforms perform full hardware system testing. Projects may add new CPU architectures and platform types to the hardware test lab.
Telemetry and Metrics
Data on CPU architecture and package popularity, and machine configurations, will allow FreeBSD developers, the Core Team, and the Foundation, to more effectively make decisions on hardware support. Projects could develop tools and systems to collect and report this data; of course it must be done in a transparent, opt-in fashion.
Tool Chain and Developer Tools
Foundation-sponsored developers and others in the FreeBSD community have made great strides in continuing the migration to a modern, permissively-licensed tool chain over several years. There are a few tasks remaining, including retirement of the remaining GNU binary utilities, support for Link Time Optimization (LTO), and improvements to the ELF Tool Chain tools used by FreeBSD.
Additionally, we can ensure that a broad collection of debugging/diagnostic tools (such as the LLVM sanitizers, and code coverage tools) work out of the box on FreeBSD.
Performance and Scalability
Developers in the FreeBSD community and developers under Foundation sponsorship have made significant improvements in addressing specific bottlenecks and limitations encountered when running FreeBSD on large thread count and NUMA systems. Projects may continue to identify problematic workloads and address issues found.
Embedded Platform and CPU Architecture Support
FreeBSD runs well on a large number of CPU architectures, although peripheral support may be limited; in particular, FreeBSD lacks drivers for the full complement of devices on a number of popular embedded single board computers.
There are also a number of CPU architectures of new or growing interest. Projects could improve general infrastructure and support for a CPU architecture such as AArch64, RISC-V, and Power.
Laptop and Desktop Support
Many people consider servers when thinking of FreeBSD, but it is also important that FreeBSD continues to run well on client devices (laptops and desktops). This allows (or requires) developers to test their work as well as the work of others on an ongoing basis under a variety of usage conditions. In addition, technologies often transition from being perceived as relevant only to client devices to being a critical requirement for servers – for example, power management.
Some specific projects in this category include improved FUSE support, Linuxulator improvements, Intel graphics support, WiFi improvements, 802.11ac support, and driver updates, and work to finish and integrate the packaged base effort.
FreeBSD was an early pioneer in operating system-level virtualization, with the introduction of Jails. Significant developments in containerization have occurred on other operating systems since that time, with examples in Zones, Docker, and Kubernetes. There is now a large body of knowledge, process and context around these tools which largely excludes FreeBSD. Projects here could add FreeBSD support to these existing tools, or develop new tools or add features to FreeBSD to support these approaches.
I look forward to hearing from you which topics you feel are most important, and receiving project proposals to improve FreeBSD in 2019.
– Contributed by Ed Maste