FreeBSD Status Report - Third Quarter 2024

From: Lorenzo Salvadore <salvadore_at_freebsd.org>
Date: Thu, 07 Nov 2024 15:34:30 UTC
FreeBSD Status Report Third Quarter 2024

Here is the third 2024 status report, with 32 entries.

Unfortunately we are late this quarter, just like last quarter. As our readers
know, many FreeBSD contributors are volunteers, so it is natural that less
important deadlines like the status reports ones are not always met. Indeed, if
you are not a FreeBSD contributor yet, please consider joining us: you could
help lighten someone’s burden while learning new skills, working side by side
with developers all over the world.

Have a nice read.

Lorenzo Salvadore, on behalf of the Status Team.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A rendered version of this report is available here:
https://www.freebsd.org/status/report-2024-07-2024-09/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Table of Contents

  • FreeBSD Team Reports
      □ FreeBSD Core Team
      □ FreeBSD Foundation
      □ FreeBSD Release Engineering Team
      □ Continuous Integration
      □ Ports Collection
      □ Bugmeister Team
      □ FreeBSD Samba Team
  • Projects
      □ Audio Stack Improvements
      □ A bhyve management GUI written in Freepascal/Lazarus
      □ Changes to dhclient to speed up the FreeBSD boot process
      □ Capsicum and Bhyve Code Audit
      □ Endpoint-Independent NAT
      □ Kyua Jail Support
      □ Linux Source Compatibility Wiki page
  • Userland
      □ Service jails — Automatic jailing of rc.d services
      □ Userspace UFS Driver (fuse-ufs)
  • Kernel
      □ FreeBSD V4L2 & kernel USB Video Class driver
      □ mac_do(4), setcred(2), mdo(1)
      □ Scheduling Priorities: 256-queue Runqueues Sub-Project
      □ Wireless Update
      □ VirtIO Sockets and AF_VSOCK support
  • Architectures
      □ Pinephone Pro Support
      □ SIMD enhancements for aarch64
  • Cloud
      □ FreeBSD on Microsoft HyperV and Azure
      □ FreeBSD on EC2
      □ OpenStack on FreeBSD
  • Documentation
      □ Documentation Engineering Team
      □ FreeBSD Wiki
      □ The FreeBSD Russian Documentation Project
  • Ports
      □ GCC on FreeBSD
      □ Freepascal and Lazarus on FreeBSD aarch64
  • Third Party Projects
      □ Containers and FreeBSD: Pot, Potluck and Potman

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Team Reports

Entries from the various official and semi-official teams, as found in the
Administration Page.

FreeBSD Core Team

Contact: FreeBSD Core Team <core@FreeBSD.org>

The FreeBSD Core Team is the governing body of FreeBSD.

Core welcomes René Ladan (rene@) as their new secretary.

Liaisons

Core selected new liaisons for the various teams among themselves:

  • bugmeister: glebius

  • ci: olivier

  • clusteradm: mat

  • doceng: lwhsu

  • foundation: hrs

  • portmgr: tcberner

  • re: dch

  • secteam: allanjude

  • srcmgr: glebius

DevSummit 202409

  • The Core Team was almost fully present at EuroBSDCon 2024 in Dublin. The
    following people were present: allanjude, dch, glebius, hrs, lwhsu, mat,
    olivier, rene

  • Slides are available at https://wiki.freebsd.org/DevSummit/202409

  • Core met with the FreeBSD Foundation to have their periodic meeting and
    take the change to do it in face-to-face. Topics included improving
    alignment and communications between the two groups and the community.

New support timeline for FreeBSD releases

  • Core approves the proposal by re@ to reduce the support timeline for
    FreeBSD releases from five to four years, after which the release is
    supported on a best-effort basis. This proposal is also backed by portmgr
    and secteam.

srcmgr

  • Core helped in forming a new srcmgr team. Their charter is not fully set in
    stone yet, it can be adjusted if needed in 6-12 months from now.

  • Nominations for new src commit bits should from now on be sent to srcmgr@
    instead of core@

  • A lurker program is suggested to keep an influx of new members.

  • Core announced srcmgr during DevSummit 202409 and sent a follow-up to
    developers@ on September 29.

Commit bits

  • Core welcomes Igor Ostapenko (igoro) as a new src committer.

  • Core extended the text that the grim reaper script sends to include ways on
    how to get commit bits of developers re-activated.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Foundation

Links:
FreeBSD Foundation URL: https://freebsdfoundation.org/
Technology Roadmap URL: https://freebsdfoundation.org/blog/technology-roadmap/
Donate URL: https://freebsdfoundation.org/donate/
Foundation Partnership Program URL: https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/
FreeBSD Journal URL: https://freebsdfoundation.org/journal/
Foundation Events URL: https://freebsdfoundation.org/our-work/events/

Contact: Deb Goodkin <deb@FreeBSDFoundation.org>

The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated to
supporting and promoting the FreeBSD Project and worldwide community, and
helping to advance the state of FreeBSD. We do this in both technical and
non-technical ways. We are 100% supported by donations from individuals and
corporations and those investments help us fund the:

  • Software development projects to implement features and functionality in
    FreeBSD

  • Sponsor and organize conferences and developer summits to provide
    collaborative opportunities and promote FreeBSD

  • Purchase and support of hardware to improve and maintain FreeBSD
    infrastructure

  • Resources to improve security, quality assurance, and continuous
    integration efforts

  • Materials and staff needed to promote, educate, and advocate for FreeBSD

  • Collaboration between commercial vendors and FreeBSD developers

  • Representation of the FreeBSD Project in executing contracts, license
    agreements, and other legal arrangements that require a recognized legal
    entity

Even though the summer months tend to be slower, we accomplished a lot of work
and you will see that in our Q3 report! Some highlights include raising over
$135,000 from individual donors, and kicking off two major projects. First,
thanks to a large investment from the Sovereign Tech Fund, we will be doing
even more to improve our infrastructure. Second, thanks to a large investment
by Quantum Leap Research and the Foundation, we will be working to accelerate a
FreeBSD on Modern Laptops project. We also continued work on the Alpha-Omega
funded project, hired a userland software developer, and opened a job position
for a solutions specialist.

As you will see below, spreading the word about FreeBSD through advocacy and
community is still an important part of our mission. Over the summer, we
sponsored EuroBSDCon, and the upcoming FreeBSD and OpenZFS Summits, and
provided travel grants to around eight FreeBSD contributors to attend
EuroBSDCon. Our advocacy team was busy producing content that promotes the
benefits and strengths of FreeBSD, why companies are using FreeBSD, and why you
should use FreeBSD if you care about security. We also promoted work within the
Project and Foundation on social media.

During EuroBSDCon, Foundation and Core Team members met to discuss Core’s
questions as they navigate what they want to accomplish during their term. We
identified 2 key areas to work on in the near term:

 1. Financial reporting transparency - Break out operating system improvements
    spending in our quarterly reports. We are working with our accountant so
    that starting in 2025, we can report how much we are spending on certain
    projects and key areas, like laptop, enterprise, security…​ In the
    meantime, we will add notes to our financial reports that document which
    projects are included in the OS Improvement expense category. We are aware
    that we have not posted financials this year. Our accounting team is
    introducing us to improved reporting, while integrating our books into a
    new accounting system.

 2. The projects we are funding are not mentioned on the Project’s website. We
    document these on our website, because we want to show our donors where
    their financial contributions are being spent. We recognize that we need to
    also add documentation about these projects on FreeBSD.org, so we will
    investigate how to better connect our software development work with the
    Project.

We are funding a lot of software development work to advance, improve, and keep
FreeBSD secure. We received funding for some of this work, but most of it is
being funded by your donations and our investments. Our purpose is to focus on
the long-term sustainability of FreeBSD. To do this, we need more companies
stepping in to help fund our efforts. Our investments will only carry on this
work for a year or two at most. If your company relies on FreeBSD, please
consider giving a financial contribution so we can ensure it stays the secure,
reliable, and innovative platform you depend on. Not sure how to go about
asking? Please reach out. We can help you navigate the process.

Please go here to make a donation: https://freebsdfoundation.org/donate/. To
find out more about our Partnership Program, go here:
https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/.

OS Improvements

During the third quarter of 2024, 263 src, 37 ports, and 11 doc tree commits
identified The FreeBSD Foundation as a sponsor.

Several members of the FreeBSD Foundation’s development team attended the
FreeBSD Developer Summit in Dublin, Ireland prior to EuroBSDCon 2024. You can
watch a video of the Hello From the Foundation talk to open the Summit, when:

  • Deb Goodkin introduced the FreeBSD Foundation

  • Joe Mingrone introduced members of the development team and said a few
    words about FreeBSD’s 2024 Google Summer Code campaign

  • Ed Maste described some of the current or recently completed Foundation
    development projects.

Alice Sowerby, who recently began supporting the Foundation in Technical
Program Management role, gave a talk to introduce the CHAOSS (Community Health
Analytics for Open Source Software) project and how to start collecting and
working with community health metrics.

The Foundation, along with new funding and investment partners, is currently
supporting four major projects.

  • The first, partially funded by Alpha-Omega, is to improve FreeBSD security.
    As part of this effort, the Foundation enlisted Synacktiv to run a code
    audit on two significant subsystems: bhyve and Capsicum. For details, refer
    to the dedicated Capsicum and Bhyve Code Audit report entry.

  • The second project, jointly funded by AMD and the Foundation, is to develop
    an AMD IOMMU driver for FreeBSD. The impetus for the project was to better
    support large core AMD systems. However, the driver will be useful in
    different scenarios when interrupt remapping is required. The work is
    nearing completion, and developer Konstantin Belousov is testing the driver
    on some of AMD’s large-core-count systems before committing.

  • The third project, backed by an investment from the Sovereign Tech Fund, is
    to improve FreeBSD through five key sub-projects:

      □ Zero Trust Builds: Enhance tooling and processes

      □ CI/CD Automation: Streamline software delivery and operations

      □ Reduce Technical Debt: Implement tools and processes to keep technical
        debt low

      □ Security Controls: Modernize and extend security artifacts, including
        the FreeBSD Ports and Package Collection, to assist with regulatory
        compliance

      □ SBOM Improvements: Enhance and implement new tooling and processes for
        FreeBSD SBOM

    To reduce technical debt, we have partnered with Bitergia to analyze and
    assess our open Bugzilla bugs. By implementing improved issue management
    processes and establishing open-source tooling for the long term, our goal
    is to achieve and sustain a manageable bug backlog. The remaining four
    sub-projects will begin in 2025.

  • The fourth project, which will be funded by both the Foundation and Quantum
    Leap Research, is to improve FreeBSD laptop usability. We have begun (or
    will soon start) supporting developers working in the following areas:

      □ Enhanced wireless chipset support: Expanding chipset compatibility to
        ensure reliable wireless connectivity and support for newer wireless
        standards.

      □ Power management: Implementing modern power-saving states (such as
        s2idle and s0ix) to improve battery life and energy efficiency.

      □ Graphics enhancements: Improving support for Intel and AMD graphics by
        integrating the latest DRM drivers.

      □ Audio improvements: Enhancing audio routing, headphone switching, and
        digital microphone (DMIC) functionality for a more user-friendly
        multimedia experience.

      □ Laptop-specific hardware features: Addressing specialty buttons,
        touchpad gestures, and other unique hardware components found in modern
        laptops.

FreeBSD completed our 20th consecutive year participating in Google Summer of
Code. The 11 projects for this summer are now complete; nine passed.

The Foundation has been providing project management support for the FreeBSD
Open Container Initiative (OCI) Working Group, with Alice Sowerby hosting the
bi-weekly meeting, and running the recent Podman on FreeBSD testing project.
The OCI develops open industry standards for cloud native container formats and
runtimes, ensuring platform consistency. The FreeBSD OCI Working Group is
defining these standards for FreeBSD, with implementations using jails and
potentially lightweight VMs with bhyve. Refer to the Foundation’s OCI Container
Support Project page for details.

In other Foundation news:

  • Isaac Freund joined the Foundation’s development team as a Userland
    Developer. As the lead developer of the River Wayland Compositor and a
    member of the Core Zig Team, we are excited about the experience Isaac will
    be bringing to FreeBSD.

  • Alfonso Sabato Siciliano is working on a Vision Accessibility Subsystem for
    blind, low-vision, and color blind users. New features will include a
    Braille refreshable display framework, a communication channel for the
    virtual terminal console, a speech synthesizer, high-contrast TUI
    utilities, and an accessibility book to document assistive technologies
    available on FreeBSD.

  • Tom Jones, completed his work with RGNets to port the Vector Packet
    Processor (VPP), a layer 2-4 multi-platform network stack in userspace, to
    FreeBSD. You can read about Tom’s next project to support full-cone NAT for
    FreeBSD firewalls in his Endpoint-Independent NAT report entry.

  • Christos Margiolis continued to improve FreeBSD’s audio stack and provide
    audio developers with useful tools and frameworks to facilitate sound
    development on FreeBSD. Refer to the Audio Stack Improvements entry for the
    latest news.

  • Olivier Certner has two entries in this report. You can read about his
    latest work in the Scheduling Priorities: 256-queue Runqueues Sub-Project
    and mac_do(4), setcred(2), mdo(1) report entries.

  • Bjoern Zeeb continued to improve wireless networking on FreeBSD. You can
    read the latest news in Bjoern’s Wireless Update entry.

  • Philip Paeps continued work on a contract to modernize the FreeBSD cluster.

  • Chih-Hsin Chang has continued work to port OpenStack components so that the
    cloud computing platform can be run on FreeBSD hosts. Refer to the
    OpenStack on FreeBSD entry for the latest information.

  • Other members of the Foundation’s technology team contributed to FreeBSD
    development efforts. For example:

      □ Mitchell Horne committed work for RISC-V, including adding support for
        the Supervisor-mode: Page-Based Memory Types (Svpbmt) extension

      □ Ed Maste removed the deprecated mergemaster tool in favor of etcupdate
        (8) for updating files not managed by install world

      □ Joe Mingrone updated our base libpcap and tcpdump(1)

      □ Li-Wen Hsu kept our Jenkins port tracking the latest upstream versions
        with a number of port updates.

Continuous Integration and Workflow Improvement

As part of our continued support of the FreeBSD Project, the Foundation
supports a full-time staff member dedicated to improving the Project’s
continuous integration system and test infrastructure.

Advocacy

During the third quarter of 2024, we continued growing our efforts to drive
awareness, advocate for the project, highlight users, and bring educational
content to the FreeBSD community. Below are some of those efforts.

  • Presented at the EuroBSDcon 2024 FreeBSD Developer Summit. Slides and the
    Live stream are now available.

  • Attended and exhibited at EuroBSDCon 2024. The Foundation was again a
    Silver Sponsor.

  • Finalized our Bronze Sponsorship of the OpenZFS User and Developer Summit

  • Began planning the Fall 2024 FreeBSD Summit taking place November 7-8, 2024
    in San Jose, CA. The program is now available and registration is open.

  • Updated the community on the new release schedule: Navigating FreeBSD’s New
    Quarterly and Biennial Release Schedule

  • Announced: New CIS® FreeBSD 14 Benchmark: Secure Your Systems with
    Expert-Guided Best Practices

  • Shared more information about the Sovereign Tech Fund’s investment in the
    Foundation: Sovereign Tech Fund to Invest €686,400 in FreeBSD
    Infrastructure Modernization

  • Announced the joint investment by Quantum Leap Research and FreeBSD
    Foundation to Improve Laptop Support and Usability and more on why we are
    making this investment.

  • Published additional blogs including:

      □ FreeBSD Ports and Packages: What you need to know

      □ Why You Should Use FreeBSD

      □ Enhancing Memory Safety in Programming: Insights from the FreeBSD
        Vendor Summit

      □ FreeBSD as a Platform for Your Future Technology

      □ Celebrating FreeBSD: Insights from Deb Goodkin

  • Participated in the following contributed articles, interviews and
    podcasts:

      □ Get to Know: Deb Goodkin, Executive Director, FreeBSD Foundation

      □ All Things Open Blog: Unlocking the Potential of FreeBSD

      □ Why Open Source Can Be the Perfect Place for New Developers – and How
        to Get Started, with Deb Goodkin from the FreeBSD Foundation

      □ Steady in a shifting Open Source world: FreeBSD’s enduring stability

      □ Apple’s Open Source Roots: The BSD Heritage Behind macOS and iOS

  • Published the July 2024, August 2024, and September 2024 FreeBSD Foundation
    Updates.

  • Released the May/June 2024 and July/August 2024 issues of the FreeBSD
    Journal with HTML versions of the articles.

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://freebsdfoundation.org to find more about how we support FreeBSD
and how we can help you!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Release Engineering Team

Links:
FreeBSD 13.4-RELEASE announcement URL: https://www.freebsd.org/releases/13.4R/announce/
FreeBSD 14.2-RELEASE schedule URL: https://www.freebsd.org/releases/14.2R/schedule/
FreeBSD releases URL: https://download.freebsd.org/releases/ISO-IMAGES/
FreeBSD development snapshots URL: https://download.freebsd.org/snapshots/ISO-IMAGES/

Contact: FreeBSD Release Engineering Team, <re@FreeBSD.org>

The FreeBSD Release Engineering Team is responsible for setting and publishing
release schedules for official project releases of FreeBSD, announcing code
freezes and maintaining the respective branches, among other things.

The Team managed 13.4-RELEASE, leading to the final RELEASE build and
announcement in September. Planning has started for the upcoming 14.2-RELEASE
cycle.

The Release Engineering Team continued providing weekly development snapshot
builds for the main, stable/14, and stable/13 branches.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Continuous Integration

Links:
FreeBSD Jenkins Instance URL: https://ci.FreeBSD.org
FreeBSD CI Tinderbox view URL: https://tinderbox.freebsd.org
FreeBSD CI artifact archive URL: https://artifact.ci.FreeBSD.org
Hosted CI wiki URL: https://wiki.FreeBSD.org/HostedCI
3rd Party Software CI URL: https://wiki.FreeBSD.org/3rdPartySoftwareCI
Tickets related to freebsd-testing@ URL:
https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=open&email1=testing%40FreeBSD.org&emailassigned_to1=1&emailcc1=1&emailtype1=equals
FreeBSD CI Repository URL: https://github.com/freebsd/freebsd-ci
dev-ci Mailing List URL: https://lists.FreeBSD.org/subscription/dev-ci

Contact: Jenkins Admin <jenkins-admin@FreeBSD.org>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>
Contact: freebsd-testing Mailing List
Contact: IRC #freebsd-ci channel on EFNet

In the fourth quarter of 2024, we worked with the project contributors and
developers to address their testing requirements. Concurrently, we collaborated
with external projects and companies to enhance their products by testing more
on FreeBSD.

Important completed tasks:

  • Update main and stable/14 build environment to 14.1-RELEASE

Work in progress tasks:

  • Improving the src/tests/ci work to support running test suites

  • Merging Pre-commit CI with CIRRUS-CI

  • Designing and implementing pre-commit CI building and testing and pull/
    merge-request based system (to support the workflow working group)

  • Proof of concept system is in progress.

  • Designing and implementing use of CI cluster to build release artifacts as
    release engineering does, starting with snapshot builds

  • Simplifying CI/test environment setting up for contributors and developers

  • Setting up the CI stage environment and putting the experimental jobs on it

  • Redesigning the hardware test lab and adding more hardware for testing

Open or queued tasks:

  • Collecting and sorting CI tasks and ideas

  • Setting up public network access for the VM guest running tests

  • Implementing use of bare-metal hardware to run test suites

  • Adding drm ports building tests against -CURRENT

  • Helping more software get FreeBSD support in its CI pipeline (Wiki pages:
    3rdPartySoftwareCI, HostedCI)

  • Working with hosted CI providers to have better FreeBSD support

Please see freebsd-testing@ related tickets for more WIP information, and do
not hesitate to join the effort!

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ports Collection

Links:
About FreeBSD Ports URL:https://www.FreeBSD.org/ports/
Contributing to Ports URL: https://docs.freebsd.org/en/articles/contributing/#ports-contributing
Ports Management Team URL: https://www.freebsd.org/portmgr/
Ports Tarball URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/

Contact: Tobias C. Berner <portmgr-secretary@FreeBSD.org>
Contact: FreeBSD Ports Management Team <portmgr@FreeBSD.org>

The Ports Management Team is responsible for overseeing the overall direction
of the Ports Tree, building packages, and personnel matters. Below is what
happened in the last quarter.

According to INDEX, there are currently 36,504 ports in the Ports Collection.
There are currently ~3,379 open ports PRs. The last quarter saw 11,594 commits
by 154 committers on the main branch and 832 commits by 78 committers on the
2024Q3 branch. Compared to last quarter, this means a slight increase in the
number of commits on the main branch (from 10,525) and about half of the
backports to the quarterly branch (compared to 1,771). The number of ports also
increased (up from 32,471).

The most active committers to main were:

  • 5133 sunpoet@FreeBSD.org

  • 1262 yuri@FreeBSD.org

  • 375 jbeich@FreeBSD.org

  • 357 vvd@FreeBSD.org

  • 331 bofh@FreeBSD.org

  • 192 uzsolt@FreeBSD.org

  • 185 eduardo@FreeBSD.org

  • 172 diizzy@FreeBSD.org

  • 148 mfechner@FreeBSD.org

  • 131 arrowd@FreeBSD.org

A lot has happened in the ports tree in the last three quarter, an excerpt of
the major software upgrades are:

  • Default version of PostgreSQL switched to 16

  • chromium updated from 126.0.6478.126 to 129.0.6668.100

  • firefox updated from 127.0.2 to 131.0-rc1

  • firefox-esr updated from 115.9.1 to 128.3.0-rc1

  • rust updated from 1.79.0 to 1.81.0

  • sdl2 updated from 2.30.3 to 2.30.7

  • wlroots updated from 0.17.4 to 0.18.1

  • wine-devel updated from 9.4 to 9.16

  • qt5 updated from 5.15.14 to 5.15.15

  • qt6 updated from 6.7.2 to 6.7.3

  • plasma6 updated from 6.1.1 to 6.1.2

During the last quarter, pkgmgr@ ran 24 exp-runs to test various ports
upgrades, updates to default versions of ports, and base system changes.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Bugmeister Team

Links:
FreeBSD Bugzilla URL: https://wiki.freebsd.org/Bugzilla

Contact: Bugmeister <bugmeister@FreeBSD.org>

Charts and graphs

Ed Maste from the FreeBSD Foundation has expressed an interest in seeing useful
charts and graphs added to Bugzilla. The few that we have now are not very
informative. Many of the interesting Bugzilla queries for them have been
documented, but the information there is really dense.

If you are interested in working on this task, contact Ed directly.

Bugzilla version upgrade

Recently, upstream Bugzilla has released 5.0.4.1, which is a minor bugfix
release. Preliminary work suggests that the update will be unobtrusive. Work is
continuing.

PR statistics

PRs continue to come in and get triaged. Over the longer term, we are nearly at
steady-state.

The number of PRs over the past quarter (and year) has fluctuated. Vladimir
Druzenko pointed out that the number dropped by around 200 during 2023Q4. (We
have not done the data analysis to find out why that was.) However, slowly, the
number has come back to where it was a year ago. But we do seem to be closing
incoming PRs more quickly these days. For reference:

https://bugs.freebsd.org/bugzilla/page.cgi?id=dashboard.html&days=365

The overall number of PRs remains at slightly over 11,600. We do have a lot of
technical debt.

Bugmeister is also working towards restarting the Bugathons.

Acknowledgements

Bugmeister would like to thank a number of people who have assisted with
bugbusting, including new triagers Alexander Vereeken, Alexander Ziaee, and
Frederick Lee.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Samba Team

Links:
FreeBSD Samba Team Wiki URL: https://wiki.freebsd.org/Samba
Samba Homepage URL: https://www.samba.org/

Contact: FreeBSD Samba Team <samba@FreeBSD.org>

Samba provides secure, stable and fast file and print services for all clients
using the SMB/CIFS protocol. It is an important component to seamlessly
integrate FreeBSD/Linux/Unix Servers and Desktops into Active Directory
environments. It can function both as a domain controller or as a regular
domain member.

The new FreeBSD Samba Team was created to better coordinate maintenance efforts
of the Samba ports and its dependencies, in particular:

  • databases/ldb22

  • databases/ldb25

  • databases/ldb28

  • databases/tdb

  • devel/talloc

  • devel/tevent

  • net/samba416

  • net/samba419

Notable changes in the last quarter include:

  • Creation of the FreeBSD Samba Team by Timur Bakeyev, Xavier Beaudouin,
    Yasuhiro Kimura, Mateusz Piotrowski, and Mikaël Urankar.

  • Added SAMBA_LDB_PORT to Mk/Uses/samba.mk (sponsored by Klara, Inc.)

  • Switching net/samba419 to use external dependencies by default instead of
    vendoring (sponsored by Klara, Inc.)

  • Updating net/samba419 to 4.19.8

Currently, the FreeBSD Samba team is coordinating efforts in the following
areas:

  • Switching the default version of Samba from 4.16 to 4.19 (Bugzilla PR#
    280769).

  • Current blockers are:

  • Broken fruit:posix_rename = yes (Bugzilla PR#281360)

  • Broken replication in Samba 4.19.8_1 (Bugzilla PR#281672)

  • Adding Samba 4.20 to the ports tree (Bugzilla PR#280533)

  • Adding Samba 4.21 to the ports tree (Bugzilla PR#281262)

Testing and community contributions are welcome, please reach out on Bugzilla
or via the team email.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Projects

Projects that span multiple categories, from the kernel and userspace to the
Ports Collection or external projects.

Audio Stack Improvements

Contact: Christos Margiolis <christos@FreeBSD.org>

The FreeBSD audio stack is one of those fields that does not attract the same
attention and development as others do, since it has been left largely
unmaintained, and, although high in quality, there is still room for
improvement — from lack of audio development frameworks, to missing userland
utilities and kernel driver-related bugs. This project is meant to touch on all
those areas, and as such, is more of a general improvement project, than an
implementation of a specific feature.

Important work since last report:

  • Several sound(4) fixes.

  • Wrote mixer(8) and sound(4) tests.

  • mixer(8): Implement hot-swapping

  • audio(8): Initial revision

  • sound: Implement dummy driver

  • Improved and added sound examples.

  • mididump(1): Initial revision

  • virtual_oss patches.

  • Gave a talk at the 09/2024 DevSummit in Dublin, Ireland.

Future work includes:

  • More bug fixes and improvements.

  • Finalize and commit of audio(8) and mididump(1).

  • Implement a generic MIDI layer, similar to pcm/, and improve/modernize the
    MIDI codebase in general.

  • Implement a bluetooth device management utility.

  • More virtual_oss patches and improvements.

  • Attempt to implement an snd_hda(4) pin-patching mechanism.

  • Investigate SOF/DMIC support.

You can also follow the development process in freebsd-multimedia@, where I
post regular reports.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A bhyve management GUI written in Freepascal/Lazarus

Links:
Bhyvemgr URL: https://github.com/alonsobsd/bhyvemgr/

Contact: José Alonso Cárdenas Márquez <acm@FreeBSD.org>

Bhyvemgr is a bhyve management GUI written in Freepascal/Lazarus on FreeBSD. It
needs a bunch of tools mostly installed by the base system and some installed
from ports/packages. The main goal is to be a desktop application focus on
desktop user to easily and quickly setup and run virtual machines on FreeBSD
hosts.

It should be used for virtual machines testing purpose (not for production).
For a tool for production virtual machines management, take a look at sysutils/
vm-bhyve, sysutils/bmd, or sysutils/cbsd.

Bhyvemgr supports aarch64 on 15-CURRENT only, and amd64 from FreeBSD 13.x to
15-CURRENT. It can be compiled from sysutils/bhyvemgr as a port, or installed
as packages with gtk2, qt5, or qt6 interface support.

People interested in helping the project are welcome.

Version at the end of 2024Q3: 1.1.0

TODO

  • Test on real aarch64 hardware

  • Add uart device support

  • Add missing global setting entries (bios, board, chassis, system)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Changes to dhclient to speed up the FreeBSD boot process

Links:
Speeding up the FreeBSD boot process URL: https://wiki.freebsd.org/SummerOfCode2024Projects/SpeedingUpTheFreeBSDBootProcess

dhclient Pull Request URL: https://github.com/freebsd/freebsd-src/pull/1368

Contact: Isaac Cilia Attard <icattard@FreeBSD.org>

As part of my Google Summer of Code 2024 project, involving speeding up the
FreeBSD boot process, I have worked on decreasing the time it takes for ARP
resolution within dhclient to happen. This involved reducing the default ARP
resolution timeout from 2000 ms to 250 ms, and adding an option to disable it
altogether. The latter is useful within cloud environments, where a node is
certain to have an IP address allotted to it.

As a consequence of this, connecting to a DHCP network is now faster, including
the boot process during which this happens. The speedup experienced is about 2
seconds.

This causes FreeBSD systems to boot significantly faster than before.

Sponsor: Google LLC (GSoC 2024)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Capsicum and Bhyve Code Audit

Contact: Ed Maste <emaste@FreeBSD.org> Contact: Pierre Pronchery <
pierre@freebsdfoundation.org>

With the support of the Alpha-Omega project, the FreeBSD Foundation undertook
code audits of two important subsystems — the bhyve hypervisor, and the
Capsicum sandboxing framework. In addition to uncovering vulnerabilities in
these systems to correct, the audits look to identify classes of
vulnerabilities and/or suboptimal coding practices that we can look to address
across the project.

The Foundation interviewed several firms, and selected Synacktiv to perform the
audit. A number of issues with critical and high severity were identified,
which have been fixed as documented in security advisories:

  • FreeBSD-SA-24:09.libnv

  • FreeBSD-SA-24:10.bhyve

  • FreeBSD-SA-24:11.ctl

  • FreeBSD-SA-24:12.bhyve

  • FreeBSD-SA-24:14.umtx

  • FreeBSD-SA-24:15.bhyve

  • FreeBSD-SA-24:16.libnv

Fixes are in progress for a number of lower-severity issues. The code audit
report will be shared in the near future, after issues above a severity
threshold have been addressed. The FreeBSD Foundation will also publish a
report including commentary on the impact of the Synacktiv code audit report,
classes of vulnerabilities identified, and lessons learned.

More information is available in the Alpha-Omega repository.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Endpoint-Independent NAT

Contact: Tom Jones <thj@freebsd.org>

This project aims to add support for Endpoint-Independent Mappings for UDP to
the pf and ipfw firewalls.

End Point Independent NAT enables applications behind a NAT speaking to
multiple remote hosts to receive the same mappings. This allows an application
without any NAT traversal mechanisms to work around NAT issues to perform peer
discovery. From the remote hosts perspective the NAT is transparent and it is
as-if there is no NAT at all. This form of NAT has been given several names
over the last few decades and might be known as 'full-cone' NAT.

Patches to pf landed in early September based on work by Damjan Jovanovic and
Naman Sood with updates to work on pf in main. The patches add a new
'endpoint-independent' suffix to UDP pf nat rules.

ipfw support for endpoint-independent is going to be made available via
libalias, allowing any system which uses libalias for address translation to
benefit from the change. There is an in-progress review D46689 to add support
to libalias.

The in-progress change and the committed pf change could both benefit from
testing in more and diverse environments.

Sponsor: The FreeBSD Foundation Sponsor: Tailscale

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kyua Jail Support

Contact: Igor Ostapenko <igoro@FreeBSD.org>

The FreeBSD test suite is executed by the kyua(1) utility. Kyua supports
parallel execution of tests with kyua -v parallelism=<n> test, however many
network tests leverage jail(8) features like VNET(9) and have conflicts with
jail naming and network configuration. As a result they are marked with the
is_exclusive=true metadata property to prevent them from running at the same
time and interfering with each other. It creates a dilemma when a project aims
to increase test coverage, but the accumulation of exclusive tests
proportionally increases the time required to run them. This, in turn, affects
the development process from multiple angles.

Kyua has recently got a change in 15-CURRENT to support a new concept called
"execution environment". By default, tests run in the so-called "host"
execution environment, where they are executed as before. A test can opt-in to
use a brand new execution environment, the "jail" one. In this case, kyua
creates a jail before running the test, and then executes the test within the
jail. That opens up the opportunity to run more tests in parallel due to the
extra isolation provided by the jail concept itself, and specifically by the
VNET. It depends on hardware and configuration, but there are reports that
having the same environment netpfil/pf tests can be run around 4 times
faster — a few minutes instead of half an hour.

The following Makefile change is a quick demo of how netpfil/pf tests were
switched to run in parallel with jail execution environment:

-# Tests reuse jail names and so cannot run in parallel.
-TEST_METADATA+=        is_exclusive=true
+# Allow tests to run in parallel in their own jails
+TEST_METADATA+= execenv="jail"
+TEST_METADATA+= execenv_jail_params="vnet allow.raw_sockets"

More details:

  • The key commit with detailed description:
    257e70f1d5ee61037c8c59b116538d3b6b1427a2

  • The man pages covering the "execenv" feature: kyuafile(5), kyua.conf(5)

This change also brings new sysctl read-only variables, which expose more
details about current jail, and may be generally useful:

  • security.jail.children.max: Maximum number of child jails

  • security.jail.children.cur: Current number of child jails

A hint: the sysctl -n security.jail.children.cur run from prison0 provides the
number of all jails in the system.

Further improvements to Kyua, such as requirements definition and automatic
resolution, are currently in the design phase. Potentially new metadata
properties like required_klds and required_pkgs provide a clue to these topics.
Please contact Igor to discuss ideas and use cases that can help shape these
upcoming Kyua enhancements.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Linux Source Compatibility Wiki page

Links:
Linux Source Compatibility URL: https://wiki.freebsd.org/LinuxSourceCompatibility

Contact: Edward Tomasz Napierala <trasz@freebsd.org>

There is now a wiki page to track source compatibility differences between
FreeBSD and Linux — and it needs your input!

FreeBSD and Linux are already largely compatible at the source code level due
to both being Unix systems and following the same standards. There are however
certain system calls specific to Linux; there are also differences in header
files, constants and so on. Implementing them in FreeBSD would make porting
software easier.

Not all of the items there are fixable. Some differences cannot be eliminated
due to naming clashes, disagreements on how the system is supposed to work, or
because it would make autoconf pick up a less functional compatibility API
instead of the native one. In such cases we should document it and advise what
API to use instead.

The wiki page aims to provide an overview and help track progress. That is
where your help is needed. I need people who actually port software to FreeBSD
to add missing APIs, based on their experiences. This also includes non-syscall
items, like missing headers and unsupported constants. Preferably also mention
the name of the software that could use them.

  • Add missing items

  • Add prospective API consumers

Sponsor: Innovate UK

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Userland

Changes affecting the base system and programs in it.

Service jails — Automatic jailing of rc.d services

Links:
rc-article part for Service Jails URL: https://docs.freebsd.org/en/articles/rc-scripting/#rcng-service-jails
service jail patches for ports in our bugtracker URL: https://bugs.freebsd.org/bugzilla/buglist.cgi?quicksearch=service+jail+aware

Contact: Alexander Leidinger <netchild@FreeBSD.org>

Service jails extend the rc(8) system to allow automatic jailing of rc.d
services. A service jail inherits the filesystem of the parent host or jail,
but uses all other limits of the jail (process visibility, restricted network
access, filesystem mounting permissions, sysvipc, …​) by default. Additional
configuration allows inheritance of the IPs of the parent, sysvipc, memory page
locking, and use of the bhyve virtual machine monitor (vmm(4)).

Since the last report several ports have been modified to come with a service
jail config. Out of about 1460 start scripts in the ports collection, about 80
start scripts are changed. Prominent examples out of those are postgresql, DNS
servers, FTP servers, PHP, dovecot, postfix, rspamd, amavisd-new and clamav.
Some more changes are waiting for a treatment by the corresponding port
maintainers.

Any help in changing more start scripts (most of the time just one line to add)
is welcome. If you want to help, you can check the bugtracker link above for
changes which are already under review.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Userspace UFS Driver (fuse-ufs)

Links
fuse-ufs GitHub URL: https://github.com/realchonk/fuse-ufs

Contact: Benjamin Stürz <benni@stuerz.xyz>

During this year’s Summer of Code, I wrote a userspace UFS driver using FUSE
and Rust. The project was meant to ease the process of mounting FreeBSD UFS
filesystems on other operating systems. Up to this point, only read-only
filesystem access has been implemented. But as a bonus, fuse-ufs has the
ability to mount filesystems with endianness different from the host’s
endianness.

I am currently working on splitting the project into a binary and library part,
to make it easier to integrate it into other operating systems. As part of this
refactoring, an additional FUSE2 backend will be implemented, to be able to run
it on OpenBSD. Currently there is testing infrastructure for Linux and FreeBSD
with OpenBSD coming in the future. Although there is no CI for MacOS, a friend
of mine tested it with MacFUSE and it works.

Once the big refactor is done, I will start concentrating on implementing write
support. Thanks to being bribed by Robert Clausecker, I will also add
soft-updates and mounting Sun’s UFS in the future.

The driver can be installed using cargo install fuse-ufs, or (if on Arch Linux)
using your favorite AUR helper. Thanks to Robert Clausecker a port for FreeBSD
exists in sysutils/fusefs-ufs.

A big thanks to Alan Somers and Kirk McKusick for mentoring me and thanks to
Robert Clausecker for the FreeBSD port and suggesting this GSoC project to me
in the first place. Another thanks to Davids Paskevics for writing a fuzzer for
me.

Sponsor: Google Summer of Code 2024

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kernel

Updates to kernel subsystems/features, driver support, filesystems, and more.

FreeBSD V4L2 & kernel USB Video Class driver

Links:
Public development repository URL: https://github.com/AlvinChen1028/freebsd-src/tree/feature-uvc
Upstreaming preparation repository URL: https://github.com/lwhsu/freebsd-src/pull/2

Contact: Alvin Chen <weike_chen@dell.com>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

This work is to create FreeBSD UVC (USB Video Class) kernel driver and follow
v4l2 APIs, so that most of the Linux camera applications can be easily ported
to FreeBSD.

The code is still cleaning up and will be submitted to official review after
completing.

Current Status:

 1. The key functions of the UVC driver are enabled.

 2. The key v4l2 IOCTLs are implemented.

 3. Support most of USB cameras (up to 4K resolution): Jabra, Logitech, etc.

 4. Some applications validated: VLC, Cheese, pwcview.

Future Work:

 1. A couple of v4l2 IOCTLs need be implemented: make all cases in
    v4l2-compliance test suite be passed.

 2. Some UVC APIs need be implemented: uvc control mapping callbacks, etc.

 3. UVC lock issue related to USB.

 4. PCI based AI camera supporting.

 5. Code refactoring if needed.

Sponsor: Dell Technologies for the development
Sponsor: The FreeBSD Foundation for assistance of upstreaming

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

mac_do(4), setcred(2), mdo(1)

Contact: Olivier Certner <olce.freebsd.statusreports@certner.fr> Contact:
Baptiste Daroussin <bapt@FreeBSD.org>

This project aims at allowing controlled process credentials transitions
without using setuid executables but instead leveraging our MAC framework.

Traditional programs for credentials change have to execute preliminary
operations as root (if not as the effective UID, at a minimum as the saved
UID). Some of these programs (e.g., sudo(8)) have lots of lines of codes and
comprise features (e.g., loadable security modules) that can be dangerous from
a security standpoint. Thus, they have a non-negligible attack surface and are
difficult to prove correct. Additionally, in most scenarios, the extra features
they bring are not necessary.

More generally, the threat model for the mac_do(4) kernel module part is that
of compromised userland programs, be they credentials changers or credentials
providers ones. This stance implies that calls to the kernel’s
credentials-changing API must be monitored by the kernel without upcalls to
userland. In practice, mac_do(4) must be configured beforehand by the
administrator to indicate which transitions of credentials are valid (through a
sysctl(8) knob, security.mac.do.rules).

Currently, the companion userland program, mdo(1), is the only one that can be
authorized to proceed by mac_do(4) (for now, based on the executable path).
This tiny program simply establishes the new credentials via calls to setuid(2)
, and optionally initgroups(3) (calling setgroups(2)) and setgid(2) (if -i was
not passed).

The resulting set of groups is either that of the target UID based on the
password database, or that before the change in UID (when using -i). The second
alternative can be a security hazard in some cases (as the effective GID is not
changed either), whereas the first contradicts the threat model above. The
current mac_do(4) rules specification indeed only allows to express simple UID
transitions towards explicit UIDs from other explicit UIDs or GIDs, without
taking into account groups. Consequently, the kernel module currently cannot
check the content of setgroups(2) and setgid(2) system calls' parameters,
relying completely on mdo(1) passing the right information.

A new version of mac_do(4) has been in the works for approximately a month.
Besides fixing concurrency, per-jail settings and MAC policies composition
problems, it features a revamp of the rules specification in order to make it
possible to finely control which groups are allowed in the resulting
credentials. Notably, primary and secondary groups can now be specified
independently, and for the latter, GIDs can be tagged as allowed, mandatory or
forbidden. A special alias, ., can be used to indicate the current process'
UIDs or GIDs depending on the context.

These new features imply that the mac_do(4) module is able to apply credentials
change at once, since the allowed final credentials depend on the initial ones
through the configured rules. The traditional userland interface (e.g., setuid
(2), setuid(2), setgroups(2), etc.) is at odds with this requirement as it
necessitates multiple calls to reach the desired final credentials, making the
process pass by several successive states that themselves may not be allowed by
mac_do(4)'s rules. We overcome this limitation by introducing a new system
call, setcred(2), which allows to request arbitrary transitions of credentials
at once. Beside its usefulness in conjunction with mac_do(4), it has the
benefit of simplifying coding of credentials change in userland. Since it is
also extensible, it may have the potential to be adopted later by other
systems.

Pre-requisite changes are currently under review (see in particular revisions
D46886 to D46889 and D46896 to D46923). The bulk of changes in mac_do(4)/mdo(1)
proper will soon be pushed under review as well. An older version of the full
series can be seen on GitHub.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Scheduling Priorities: 256-queue Runqueues Sub-Project

Contact: Olivier Certner <olce.freebsd.statusreports@certner.fr>

The goal of the 256-queue runqueues sub-project is to fix FreeBSD’s POSIX
compliance in that different priority levels in the SCHED_FIFO or SCHED_RR
scheduling classes must lead to immediate preemption by threads having higher
priority. It is part of the bigger scheduling priorities revamp project aiming
at rationalizing FreeBSD scheduling interfaces, including having consistent
rtprio(2) and POSIX interface behaviors (where it makes sense), enhancing POSIX
compliance, removing duplicate code and fixing existing bugs, and enhancing the
non-standard parts both for better control and security. Expected benefits are
increased usage of FreeBSD as a soft real-time platform, e.g., for video and
audio processing in casual desktop uses to professional settings. Readers
interested in this topic are invited to consult AsiaBSDCon 2024’s paper and
EuroBSDCon 2024’s slides for a wider view, and to contact me for questions,
feedbacks or discussions.

Currently, priority levels specified either through the prio field of struct
rtprio (rtprio(2) interface) or the sched_priority one of struct sched_param,
for real-time scheduling classes (RTP_PRIO_FIFO and RTP_PRIO_REALTIME for the
former, SCHED_FIFO and SCHED_RR for the latter) as well as idle-time ones
(RTP_PRIO_IDLE), are conflated as follows: Each priority level that has the
same quotient when divided by 4 is internally treated the same. In particular,
threads being in the same such equivalence class but having higher priority
will not preempt other threads in the same class, violating POSIX expectations
for SCHED_FIFO and SCHED_RR.

To remedy this situation, we have chosen an impacting internal change on the
number of queues per runqueue, and defer to the above-mentioned EuroBSDCon
2024’s slides for more details.

The switch to 256-queue runqueues having non-trivial impacts on the ULE
scheduler, we have been analyzing it and tuning the scheduler to preserve its
previous behavior with respect to anti-starvation and the effect of nice
values. With the goal to perform further testing, we have revived Jeff
Roberson’s initial ULE’s test tool, called late (currently available on GitHub
).

All the modifications made as part of this sub-project are currently under
review, starting with Phabricator’s review D45387 (click on the "Stack" tab to
see the full series of reviews).

In the course of this project, we have noticed that the effect of nice values
is especially weak, and consequently have produced experimental patches to make
their effect stronger. However, it is not clear at this point whether we can
increase their effect satisfactorily enough in the current ULE setting.

We have also started another scheduler project about adapting ULE to hybrid
architectures, which might also trigger more drastic scheduler changes.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Wireless Update

Links:
Categorised Wireless Problem Reports URL: https://bugs.freebsd.org/bugzilla/showdependencytree.cgi?id=277512&hide_resolved=0

Contact: Bjoern A. Zeeb <bz@FreeBSD.org>
Contact: The FreeBSD wireless mailing list <wireless@FreeBSD.org>

The ongoing wireless efforts are trying to bring more support for recent
chipsets as well as newer standards.

With iwlwifi(4) and rtw88(4) being supported we received patches and initial
reports for rtw89 and ath10k working for some people. Additionally ath11k,
ath12k and various chipsets supported by mt76 are waiting for someone to find
the time to finish compat code, test and debug.

Work is ongoing to update drivers to Linux v6.11 using the now bootstrapped
vendor branches, which should help maintenance a lot in the future. One
particular focus for this update is also to find ways to minimize
incompatibilities between wireless compat code versions in order to support
multiple Linux versions as needed.

After the native kern_malloc changes got committed, LinuxKPI is seeing ongoing
work for memory allocation to play better by the rules set out in Linux which
should help with DMA problems seen. There is further work pending to add
missing bus_dmamap_sync() calls.

There is work to support rtw88(4) SDIO devices (being tested on an r2s-plus)
and ongoing work to stabilize updated USB support which should start landing
once the driver updates have finished. Lastly there are more updates in the
queue to finish 11n support for LinuxKPI 802.11 compat code as well as
improving native net80211 code.

If you have questions or feedback please use the freebsd-wireless mailing list.
That way everyone will see, be able to join in, and the answers will be
publicly archived.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

VirtIO Sockets and AF_VSOCK support

Links:
Source code URL: https://github.com/daniloegea/freebsd-src/tree/virtio_vsocks

Contact: Danilo Egea Gondolfo <danilo@FreeBSD.org>

The VirtIO Socket device is used to enable communication between guests and
host without networking. The AF_VSOCK protocol family enables it to be used
through the sockets API.

For the past many months I have been working on a guest driver for the VirtIO
Socket device and an implementation of the AF_VSOCK protocol family.
Originally, I wanted to get the lxd-agent daemon working on FreeBSD but the
communication with the LXD host daemon is done through VSOCKs. LXD is a nice
container and virtual machine manager based on Linux/KVM and my end goal is to
make FreeBSD a LXD first-class citizen.

At the moment I have it working well enough to enable the lxd-agent to work. I
adapted the golang.org/x/sys library and the lxd-agent to support AF_VSOCK on
FreeBSD. Features such as command execution, interactive consoles and file
transfer are working.

On Linux, AF_VSOCK can be used with VirtIO, HyperV and VMware sockets as
transports. I am trying to design my implementation so it will also be possible
to use it with different transports in the future.

After getting the current work in a good shape, ideas for future work include
integration of AF_VSOCK and HyperV Sockets (which is already supported on
FreeBSD through AF_HYPERV), VIRTIO_VSOCK_F_SEQPACKET, VirtIO Socket device for
bhyve and the host side of the driver.

I will continue to slowly work on this on my limited free time and hopefully
have something more concrete for the next time. There is still a lot of work to
be done until it become ready for code review.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Architectures

Updating platform-specific features and bringing in support for new hardware
platforms.

Pinephone Pro Support

Links:
Repository on Codeberg URL: https://codeberg.org/Honeyguide/freebsd-pinephonepro

Contact: Toby Kurien <toby@tobykurien.com>

A new project trying to make FreeBSD usable on the Pinephone Pro has been
started during August.

The current FreeBSD RELEASE images already boot on a Pinephone Pro, but no
screen output or other devices are supported. The aim is to step by step
support additional components so that the device one day might be usable as a
highly mobile FreeBSD device.

Over the last few weeks, the groundwork has been implemented like getting used
to the device, cross-compiling and booting a 15.0-CURRENT custom kernel as well
as toggling the LEDs (red/green/blue in the front). Also, the LCD backlight can
be turned on already and the USB-C hub is enabled even though it is not yet
functional due to missing power management support.

The next step is to write a driver for the RK818 power management chip. Without
it, most of the hardware will not power on like the USB-C port above. This will
be done by trying to modify the existing RK808 driver. RK818 support should
then make it possible to access a lot more of the devices, e.g. allowing to
enable the screen, USB peripherals or WiFi.

Additional feedback and testers are welcome.

Sponsor: Honeyguide Group

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SIMD enhancements for aarch64

Links:
EuroBSDCon 2024 presentation URL: https://www.youtube.com/live/OzX38cWdivc?si=VsMrEmT_IdKpjv7W&t=22070
Slides from presentation (PDF) URL: http://fuz.su/~fuz/talks/eurobsdcon-str-talk.pdf
Google Summer of Code (GSoC) project description URL: https://summerofcode.withgoogle.com/programs/2024/projects/TKRS35FA
simd(7) URL: https://man.freebsd.org/cgi/man.cgi?query=simd&sektion=7&manpath=FreeBSD+15.0-CURRENT

Contact: Getz Mikalsen <getz@FreeBSD.org>

The porting effort of the SIMD enhanced libc string functions from amd64 to
aarch64 has been successfully completed. There are now optimized
implementations for 16 libc string functions in addition to those with
implementations already available as part of the ARM optimized subroutines
library. There is also a presentation regarding the general method for these
methods from EuroBSDCon 2024 available on YouTube with a short description in
the end of how the porting has been done with regards to the aarch64
architecture.

These enhancements significantly improve performance of string functions for
all FreeBSD systems on the aarch64 platform.

The code is currently undergoing acceptance testing in the form of an exp-run
building all the ports, once without and once with the patch set applied to see
if it has caused any new failures.

Sponsor: Google LLC (GSoC 2024)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Cloud

Updating cloud-specific features and bringing in support for new cloud
platforms.

FreeBSD on Microsoft HyperV and Azure

Links:
Microsoft Azure article on FreeBSD wiki URL: https://wiki.freebsd.org/MicrosoftAzure
Microsoft HyperV article on FreeBSD wiki URL: https://wiki.freebsd.org/HyperV

Contact: Microsoft FreeBSD Integration Services Team <bsdic@microsoft.com>
Contact: freebsd-cloud Mailing List
Contact: The FreeBSD Azure Release Engineering Team <releng-azure@FreeBSD.org>
Contact: Wei Hu <whu@FreeBSD.org>
Contact: Souradeep Chakrabarti <schakrabarti@microsoft.com>
Contact: Colin Su <yuas@microsoft.com>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

In this quarter, we have published the 13.4-RELEASE on Azure Marketplace.

Souradeep Chakrabarti from Microsoft has added a feature to use hypercalls for
TLB shootdown on Hyper-V and Azure. Micro-benchmark shows 30-40% performance
improvement on TLB shootdown. This has been presented at the DevSummit 202409

Wei Hu root-caused an issue on missing CDROM device when booting FreeBSD on the
latest Azure v6 VM SKU. V6 type only offers NVMe disks to guest OS. He also
continues bug fixing for FreeBSD MANA NIC device.

Work in progress tasks:

  • Automating the image publishing process and merging to src/release/.
    (Li-Wen Hsu)

  • Colin Su is testing adding FreeBSD support in Azure Pipelines

      □ https://github.com/microsoft/azure-pipelines-agent/pull/3266

      □ Building and publishing snapshot builds to Azure community gallery.

Open tasks:

  • Update FreeBSD-related doc at Microsoft Learn

  • Update sysutils/azure-agent to the latest version

  • Upstream local modifications of Azure agent

  • Port Linux Virtual Machine Extensions for Azure

Sponsor: Microsoft for people in Microsoft, and for resources for the rest
Sponsor: The FreeBSD Foundation for everything else

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD on EC2

Contact: Colin Percival <cperciva@FreeBSD.org>

FreeBSD is available on both amd64 (Intel and AMD) and arm64 (Graviton) EC2
instances.

In the past quarter, a new "small" flavour of EC2 AMI has been added, without
debug symbols, tests, 32-bit compatibility libraries, or the LLVM debugger, and
without the Amazon SSM Agent pre-installed or the AWS CLI installed by default
at first boot.

Build performance tests are now being performed weekly using the snapshot AMIs
built by the release engineering team. These tests revealed several performance
regressions which have now been fixed; in particular a bug fix to the use of
the EFI RNG in the boot loader produced a dramatic speedup on Graviton
instances.

Sponsor: Amazon
Sponsor: https://www.patreon.com/cperciva

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

OpenStack on FreeBSD

Links:
OpenStack URL: https://www.openstack.org/
OpenStack on FreeBSD URL: https://github.com/openstack-on-freebsd

Contact: Chih-Hsin Chang <starbops@hey.com>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

The OpenStack on FreeBSD project aims to bring OpenStack cloud infrastructure
to the FreeBSD operating system, using FreeBSD’s special features while keeping
it compatible with OpenStack.

In the third quarter of 2024, we continued working on several important tasks.
Our work on porting OpenStack Ironic is still ongoing, with tests now running
on arm64 servers. In this setup, the service node is amd64, and the
provisioning node is arm64. This helps us explore more options for running
mixed environments in OpenStack on FreeBSD.

In August, we gave a presentation at COSCUP 2024 to share the project’s
progress and our experiences. This helped us get more attention and interest
from people in the community.

We also updated some of the OpenStack components, like Keystone, Glance, and
Placement, from FreeBSD 14.0-STABLE to FreeBSD 15.0-CURRENT. This update helps
us keep up with the latest changes in FreeBSD, making the project run better.

Another notable item was testing the bhyve serial console over TCP patch and
using it in the OpenStack workflow. This brings us closer to stopping the use
of the custom socat-manager solution and moving to a built-in serial console
solution.

Although we are still planning to turn the OpenStack manual installation
process into FreeBSD ports, there has not been much progress yet. We hope to
work more on this in the next few months. Existing work can be found in the
openstack repository.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Documentation

Noteworthy changes in the documentation tree, manual pages, or new external
books/documents.

Documentation Engineering Team

Link: FreeBSD Documentation Project URL: https://www.freebsd.org/docproj/
Link: FreeBSD Documentation Project Primer for New Contributors URL:
https://docs.freebsd.org/en/books/fdp-primer/
Link: Documentation Engineering Team URL: https://www.freebsd.org/administration/#t-doceng

Contact: FreeBSD Doceng Team <doceng@FreeBSD.org>

The doceng@ team is a body to handle some of the meta-project issues associated
with the FreeBSD Documentation Project; for more information, see FreeBSD
Doceng Team Charter.

Benedict Reuschling steps down from doceng@. doceng@ would like to thank bcr@
for his service.

Document changes

  • Handbook: Document the automatic creation of XDG directories starting with
    FreeBSD 14.1. The VNET config example script has been fixed.

  • Architecture Handbook: remove K&R prototypes in MAC chapter.

  • Website: Some improvements regarding the top banner and layout, visually
    rearrange buttons and more.

  • Documentation repository: fix of all malformed tables warnings. Removal of
    deprecated attributes to conform to new gohugo releases.

FreeBSD Translations on Weblate

Link: Translate FreeBSD on Weblate URL: https://wiki.freebsd.org/Doc/Translation/Weblate
Link: FreeBSD Weblate Instance URL: https://translate-dev.freebsd.org/

Q3 2024 Status

  • 17 team languages

  • 214 registered users

1 new translator joined Weblate:

  • matthew (id)

Languages

  • Chinese (Simplified) (zh-cn) (progress: 7%)

  • Chinese (Traditional) (zh-tw) (progress: 3%)

  • Dutch (nl) (progress: 1%)

  • French (fr) (progress: 1%)

  • German (de) (progress: 1%)

  • Greek (el) (progress: 1%)

  • Indonesian (id) (progress: 1%)

  • Italian (it) (progress: 5%)

  • Korean (ko) (progress: 32%)

  • Norwegian (nb-no) (progress: 1%)

  • Persian (fa-ir) (progress: 3%)

  • Polish (progress: 2%)

  • Portuguese (progress: 0%)

  • Portuguese (pt-br) (progress: 24%)

  • Spanish (es) (progress: 36%)

  • Turkish (tr) (progress: 2%)

We want to thank everyone that contributed, translating or reviewing documents.

And please, help promote this effort on your local user group, we always need
more volunteers.

Packages maintained by DocEng

During this quarter the following work was done in packages maintained by
doceng@:

  • textproc/docproj: Bump gohugo dependency to 0.133.1

  • www/gohugo: update to 0.134.3

Open issues

There are 2 Open PRs in bugzilla assigned to doceng@:

  • 276923 www/gohugo link error under poudriere

  • 267274 Please remove the zh-CN Handbook of the current FreeBSD website

During this quarter doceng@ closed 3 PRs:

  • 266107 FreeBSD Handbook and other books: PDF: broken links – crossref

  • 279815 status reports: ERR_TOO_MANY_REDIRECTS

  • 281396 handbook: ERROR: <stdin>: line 149: dropping cells from incomplete
    row detected

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Wiki

Links:
FreeBSD wiki front page URL: https://wiki.freebsd.org/FrontPage

Contact: Mark Linimon <linimon@freebsd.org> Contact: Wiki admin <
wiki-admin@freebsd.org>

The FreeBSD wiki is a repository of information that does not fit well in the
official project documentation because it is too specific, too disparate, or
too transient.

Current projects:

Mark Linimon has started attacking various stale pages. The focus has been on
pages that we show to new, interested, users. (Recent Foundation newsletters
refer to some of these pages directly.) Unfortunately, many of these pages have
become stale, to the point where they were actually not good recommendations.

The pages that have received the most work are:

  • IdeasPage (referenced in Foundation documentation)

  • JuniorJobs (referenced in Foundation documentation)

  • SummerOfCodeIdeas

  • various pages under CategoryProject

  • various pages under CategoryTodo

  • MentorMatch

In addition to removing obviously stale entries, all entries have now been
datestamped with the time that they were added to the various pages.
wiki-admin@ would like to request that we carry forward this tradition into the
future.

As well, wiki-admin@ has been sending email to ask committers/contributors to
the above pages "should we keep this entry?" This task will continue until the
pages have been cleaned up.

(NB: the fact that content in the wiki was stale was mentioned by numerous
respondents in the FreeBSD Foundation 2024 Community Survey Report.)

Previous plans that have stalled

Plans are still underway to familiarize our audience on Discord with the wiki
(there are too many "silos" in our FreeBSD community). The team has simply not
had enough cycles to do this. However, contact Setesh on the FreeBSD Discord
for more information.

Preliminary work was being done on updating the wiki software itself. Earlier,
we were looking at switching implementations because MoinMoin development
seemed to have stalled, leaving us with an unwanted hanging python2 dependency.
However, MoinMoin now claims that they are nearing a 2.0 release. We have not
yet tried an install of their latest beta version to test compatibility.
Testers welcome.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

The FreeBSD Russian Documentation Project

Links:
FAQ URL: https://docs.freebsd.org/ru/books/faq/
Handbook URL: https://docs.freebsd.org/ru/books/handbook/
Web URL: https://www.freebsd.org/ru/

Contact: Andrei Zakhvatov <andrey.zakhvatov@gmail.com>

The FreeBSD Russian Documentation Project’s current goal is to provide
up-to-date Russian translations of the most important parts of FreeBSD
documentation (FAQ, Handbook, Web). It is important to support Russian speakers
with high-quality official technical materials and increase acceptance of the
operating system around the globe. We hope that this activity will receive some
support from the Russian-speaking FreeBSD community and lead to more translated
materials.

There is some progress in document translation:

  • FAQ: PR #277008 and PR #282062

  • Handbook: Chapter 1. Introduction: PR #276334

  • Handbook: Chapter 2. Installing FreeBSD: PR #280610

  • Handbook: Chapter 3. FreeBSD Basics: PR #282059

Check the official translation guide if you are willing to help. We always
appreciate your help with translation of the following materials:

  • Handbook chapters and sections

  • Articles

  • Web pages

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ports

Changes affecting the Ports Collection, whether sweeping changes that touch
most of the tree, or individual ports themselves.

GCC on FreeBSD

Links:
GCC Project URL: https://gcc.gnu.org/
GCC 11 release series URL: https://gcc.gnu.org/gcc-11/
GCC 12 release series URL: https://gcc.gnu.org/gcc-12/
GCC 13 release series URL: https://gcc.gnu.org/gcc-13/
GCC 14 release series URL: https://gcc.gnu.org/gcc-14/

Contact: Lorenzo Salvadore <salvadore@FreeBSD.org>

This quarter the main news is about the new GCC releases:

  • lang/gcc11 has been updated to 11.5.0, which is the last GCC 11 planned
    released;

  • lang/gcc12 has been updated to 12.4.0;

  • lang/gcc13 has been updated to 13.3.0;

  • lang/gcc14 has been updated to 14.2.0.

The exp-run to update GCC default version from 13 to 14 has started. As usual,
thanks to everyone involved.

If you maintain any of the affected ports or want to give a hand preparing and
testing some patches, please consider trying adding -fpermissive to CFLAGS in
affected ports: GCC 14 has transformed some warnings into errors, which is the
cause of many of the failed builds. The -fpermissive flag switches those errors
back to warnings.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Freepascal and Lazarus on FreeBSD aarch64

Links:
Freepascal Project URL: https://www.freepascal.org/
Lazarus IDE URL: https://www.lazarus-ide.org/

Contact: José Alonso Cárdenas Márquez <acm@FreeBSD.org>

Free Pascal is a mature, versatile, open source Pascal compiler. It can target
many operating systems and processor architectures: Intel x86 (16 and 32 bit),
AMD64/x86-64, PowerPC, PowerPC64, SPARC, SPARC64, ARM, AArch64, MIPS, Motorola
68k, AVR, and the JVM. Additionally, support for RISC-V (32/64), Xtensa, and
Z80 architectures, and for the LLVM compiler infrastructure is available in the
development version. Also, the Free Pascal team maintains a transpiler for
pascal to Javascript called pas2js.

Lazarus is a Delphi compatible cross-platform IDE for Rapid Application
Development. It has a variety of components ready for use and a graphical form
designer to easily create complex graphical user interfaces.

Three years ago, Mikaël Urankar <mikael@FreeBSD.org> began porting the Free
Pascal compiler to FreeBSD aarch64 and it was merged into Free Pascal source
code (main branch). Some months ago, I added lang/fpc-devel (3.3.1) and editors
/lazarus-devel (3.99) to the ports tree only for i386 and amd64 because aarch64
was not ready yet. The binaries generated on aarch64 did not run because of ELF
issues. Finally, some days ago the issues were resolved and support for FreeBSD
aarch64 was completed.

lang/fpc-devel and editors/lazarus-devel were updated to 3.3.1.20240913 and
3.99.20240913 with support for aarch64 respectively. It brings to FreeBSD users
a new language and platform working on FreeBSD aarch64 for console, graphic, or
any kind of apps development.

TODO

  • Update fpc/lazarus based ports (such as sysutils/bhyvemgr and archivers/
    peazip) to support FreeBSD/aarch64

  • Push FreeBSD RISC-V support

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Third Party Projects

Many projects build upon FreeBSD or incorporate components of FreeBSD into
their project. As these projects may be of interest to the broader FreeBSD
community, we sometimes include brief updates submitted by these projects in
our quarterly report. The FreeBSD project makes no representation as to the
accuracy or veracity of any claims in these submissions.

Containers and FreeBSD: Pot, Potluck and Potman

Links:
Pot organization on GitHub URL: https://github.com/bsdpot

Contact: Luca Pizzamiglio (Pot) <pizzamig@FreeBSD.org>
Contact: Bretton Vine (Potluck) <bv@honeyguide.eu>
Contact: Michael Gmelin (Potman) <grembo@FreeBSD.org>

Pot is a jail management tool that also supports orchestration through Nomad.
Potluck aims to be to FreeBSD and Pot (and potentially one day also Podman)
what Dockerhub is to Linux and Docker: a repository of container descriptions
and complete container images for usage with Pot and in many cases Nomad.

During this quarter, there were two bugfixes to Pot that will be released soon.

Potluck images saw some updates again. All images have been rebuilt again to
include the latest fixes and quarterly packages. Additionally, some images like
Loki or Vault have also received additional updates and bugfixes.

Also, we have done some research regarding potential future support of OCI,
Buildah and Podman images in Potluck. Two blog posts, one describing a basic
Buildah and Podman setup and one describing how to orchestrate Podman
containers with Nomad and Consul have been published.

As always, feedback and patches are welcome.

Sponsors: Nikulipe UAB, Honeyguide Group