December 6, 2022

Written as part of the FreeBSD Project’s 3rd Quarter 2022 Status Report, check out the highlights of what we did to help FreeBSD last quarter:

Fundraising Efforts

First, I’d like to send a big thank you to everyone who gave a financial contribution to our efforts. We are 100% funded by your donations, so every contribution helps us continue to support FreeBSD in many ways, including some of the work funded and published in this status report.

We support FreeBSD in five main areas. Software development is the largest area we fund through staff developers and contractors who implement new features, support tier 1 platforms, review patches, and fix issues. You can read about some of the work we did under OS Improvements in this report. FreeBSD Advocacy is another area that we support to spread the word about FreeBSD at conferences, in presentations online and in-person, and through tutorials and how-to guides. We purchase and support hardware for the FreeBSD infrastructure that supports the work going on in the Project. Virtual and in-person events are organized by the Foundation to help connect and engage community members to share their knowledge and collaborate on projects. Finally, we provide legal support to the Project when needed and protect the FreeBSD trademarks.

Our goal this year is to raise at a minimum $1,400,000 towards a spending budget of around $2,000,000. As we enter the last quarter of 2022, our donation total sits at $167,348, so we still need your help. If you haven’t made a donation this year, please consider making one at https://freebsdfoundation.org/donate/. We also have a Partnership Program for larger commercial donors. You can find out more at https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/

OS Improvements

During the third quarter of 2022, 300 src, 36 ports, and 13 doc tree commits were made that identified The FreeBSD Foundation as a sponsor. Some of that work has dedicated report entries.

  • FreeBSD as a Tier I cloud-init Platform
  • Intel wireless towards 11ac
  • LLDB multiprocess debugging support
  • OpenStack on FreeBSD
  • Snapshots on Filesystems Using Journaled Soft Updates

The other sponsored work is challenging to concisely summarize. It varies from complex new features to various bug fixes spanning the src tree. Here is a small sample to give a flavor of last quarter’s work.

  • 240afd8 makefs: Add ZFS supportThis allows one to take a staged directory tree and create a file consisting of a ZFS pool with one or more datasets that contain the contents of the directory tree. This is useful for creating virtual machine images without using the kernel to create a pool; “zpool create” requires root privileges and currently is not permitted in jails. makefs -t zfs also provides reproducible images by using a fixed seed for pseudo-random number generation, used for generating GUIDs and hash salts. makefs -t zfs requires relatively little by way of machine resources.
  • 36f1526 Add experimental 16k page support on arm64Add initial 16k page support on arm64. It is considered experimental, with no guarantee of compatibility with userspace or kernel modules built with the current 4k page size. Testing has shown good results in kernel workloads that allocate and free large amounts of memory as only a quarter of the number of calls into the VM subsystem are needed in the best case.
  • 1424f65 vm_pager: Remove the default pagerIt’s unused now. Keep the OBJ_DEFAULT identifier, but make it an alias of OBJT_SWAP for the benefit of out-of-tree code.
  • a889a65 eventtimer: Fix several races in the timer reload codeIn handleevents(), lock the timer state before fetching the time for the next event. A concurrent callout_cc_add() call might be changing the next event time, and the race can cause handleevents() to program an out-of-date time, causing the callout to run later (by an unbounded period, up to the idle hardclock period of 1s) than requested.
Bhyve Issue Support

The Foundation contracted John Baldwin to dedicate time to Bhyve as issues arise, especially security issues. Here is a summary of his 2022q3 work on that contract.

  • bb31aee bhyve virtio-scsi: Avoid out of bounds accesses to guest requests.
  • 62806a7 bhyve virtio-scsi: Tidy warning and debug prints.
  • 7afe342 bhyve e1000: Sanitize transmit ring indices.
  • c94f30e bhyve: Validate host PAs used to map passthrough BARs.
  • 16bedf5 pci: Add helper routines to iterate over a device’s BARs.
  • baf753c bhyve: Support other schemes for naming pass-through devices.
  • fa46f37 bhyve e1000: Skip packets with a small header.
  • e7439f6 bhyve xhci: Cache the value of MaxPStreams when initializing an endpoint.
RISC-V Improvements

At the end of the quarter, the Foundation contracted Mitchell Horne to add and improve support for RISC-V hardware. Mitchell will also perform general maintenance such as fixing bugs, handling reports, providing review for new code changes, and improving source code legibility and documentation.

Continuous Integration and Quality Assurance

The Foundation provides a full-time staff member and funds projects to improve continuous integration, automated testing, and overall quality assurance efforts for the FreeBSD project. You can read about CI activities this quarter in a dedicated entry.

FreeBSD Advocacy and Education

Much of our effort is dedicated to Project advocacy. This may involve highlighting interesting FreeBSD work, producing literature and video tutorials, attending events, or giving presentations. The goal of the literature we produce is to teach people FreeBSD basics and help make their path to adoption or contribution easier. Other than attending and presenting at events, we encourage and help community members run their own FreeBSD events, give presentations, or staff FreeBSD tables.

The FreeBSD Foundation sponsors many conferences, events, and summits around the globe. These events can be BSD-related, open source, or technology events geared towards underrepresented groups. We support the FreeBSD-focused events to help provide a venue for sharing knowledge, working together on projects, and facilitating collaboration between developers and commercial users. This all helps provide a healthy ecosystem. We support the non-FreeBSD events to promote and raise awareness of FreeBSD, to increase the use of FreeBSD in different applications, and to recruit more contributors to the Project. We are continuing to attend events both in person and virtual as well as planning the November Vendor Summit. In addition to attending and planning virtual events, we are continually working on new training initiatives and updating our selection of how-to guides to facilitate getting more folks to try out FreeBSD.

Check out some of the advocacy and education work we did last quarter:

We help educate the world about FreeBSD by publishing the professionally produced FreeBSD Journal. As we mentioned previously, the FreeBSD Journal is now a free publication. Find out more and access the latest issues at https://www.FreeBSDfoundation.org/journal/.

You can find out more about events we attended and upcoming events at https://www.FreeBSDfoundation.org/news-and-events/.

Legal/FreeBSD IP

The Foundation owns the FreeBSD trademarks, and it is our responsibility to protect them. We also provide legal support for the core team to investigate questions that arise.

Go to https://www.FreeBSDFoundation.org to find more about how we support FreeBSD and how we can help you!