[FreeBSD-Announce] FreeBSD Quarterly Status Report - Fourth Quarter 2019

Lorenzo Salvadore salvadore at freebsd.org
Mon Jan 27 20:11:33 UTC 2020

FreeBSD Project Quarterly Status Report - Fourth Quarter 2019

   Here is the last quarterly status report for 2019. As you might
   remember from last report, we changed our timeline: now we collect
   reports the last month of each quarter and we edit and publish the full
   document the next month. Thus, we cover here the period October 2019 -
   December 2019.

   If you thought that the FreeBSD community was less active in the
   Christmas' quarter you will be glad to be proven wrong: a quick glance
   at the summary will be sufficient to see that much work has been done
   in the last months.

   Have a nice read!

   -- Lorenzo Salvadore

FreeBSD Team Reports

     * FreeBSD Core Team
     * FreeBSD Foundation
     * FreeBSD Release Engineering Team
     * Cluster Administration Team
     * Continuous Integration


     * IPSec Extended Sequence Number (ESN) support
     * NFS Version 4.2 implementation
     * DTS Update
     * RockChip Support
     * Creating virtual FreeBSD appliances from RE VMDK images


     * SoC audio framework and RK3399 audio drivers
     * FreeBSD on Microsoft HyperV and Azure
     * FreeBSD on EC2 ARM64
     * ENA FreeBSD Driver Update


     * PowerPC on Clang
     * NXP ARM64 SoC support

Userland Programs

     * Linux compatibility layer update


     * Ports Collection
     * KDE on FreeBSD
     * Java on FreeBSD
     * Electron and VSCode
     * Bastille
     * Universal Packaging Tool (upt)
     * Wine on FreeBSD

Third-Party Projects

     * sysctlbyname-improved
     * pot and the nomad pot driver
     * 7 Days Challenge
     * NomadBSD

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 at FreeBSD.org>

   The FreeBSD Core Team is the governing body of FreeBSD.
     * Julie Saravanos, the sister of Bruce D. Evans (bde), mailed core
       with the sad news that Bruce passed away on 2019-12-18 at the age
       of 68 years. Bruce was a deeply respected member of the community,
       served on the Core team, and made over 5,000 commits. Bruce's
       impact on our culture was so profound that new terminology was
       spawned. This is an excerpt of a message from Poul-Henning Kamp to

     I don't know precisely when I first communicated with Bruce, it was
     in the late 1980'ies via "UseNET", but I can say with certainty that
     few people have inspired me more, or improved my programming more,
     than Bruce he did over the next half of my life.
     All large projects invent its own vocabulary and in FreeBSD two of
     the neologisms are "Brucification", and "Brucified".
     A "brucification" meant receiving a short, courteous note pointing
     out a sometimes subtle deficiency, or an overlooked detail in a
     source code change. Not necessarily a serious problem, possibly not
     even a problem to anybody at all, but nonetheless something which
     was wrong and ought to be fixed. It was not uncommon for the
     critique to be considerably longer than the change in question.
     If one ignored brucifications one ran the risk of being "brucified",
     which meant receiving a long and painstakingly detailed list of
     every single one of the errors, mistakes, typos, shortcomings, bad
     decisions, questionable choices, style transgressions and general
     sloppiness of thinking, often expressed with deadpan humor sharpened
     to a near-fatal point.
     The most frustrating thing was that Bruce would be perfectly
     justified and correct. I can only recall one or two cases where I
     were able to respond "Sorry Bruce, but you're wrong there..." - and
     I confess that on those rare days I felt like I should cut a notch
     in my keyboard.
     The last email we received from Bruce is a good example of the depth
     of knowledge and insight he provided for the project:
     * The 12.1 release was dedicated to another FreeBSD developer who
       passed away in the fourth quarter of 2019, Kurt Lidl. The FreeBSD
       Foundation has a memorial page to Kurt.
       We send our condolences to both the families of Bruce and Kurt.
     * Core has documented The Project's policy on support tiers.
     * Core approved a source commit bit for James Clarke. Brooks Davis
       (brooks) will mentor James and John Baldwin (jhb) will co-mentor.
     * The Project's first Season of Docs ended with a negative result.
       The work was not completed and contact could not be established
       with the writer. No payment was made and the financing was set
       aside for future work.
     * Google Summer of Code completed. Information about the seven
       accepted projects can be found on the wiki page.
     * Adam Weinberger (admaw) was added to conduct at . Adam has
       demonstrated competence, understanding, and fairness in personal
     * Li-Wen Hsu (lwhsu) contacted Core after receiving a report from
       concerned local community members about past updates to The
       Project's internationalization policy. Lengthy discussions took
       place to determine how to reaffirm that The Project maintains a
       neutral position in political disputes. Updates were made to the
       document and it was decided that any future changes would require
       explicit Core approval.
     * After nomination by Edward Napierała (trasz), core voted to grant
       Daniel Ebdrup (debdrup) and Lorenzo Salvadore (salvadore)
       membership in The Project. Both Daniel and Lorenzo have been
       working on the quarterly reports for the past few quarters.
     * The Core-initiated Git Transition Working Group continued to meet
       over the last quarter of 2019. Their report is still forthcoming.

FreeBSD Foundation

   Contact: Deb Goodkin <deb at FreeBSDFoundation.org>

   The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated
   to supporting and promoting the FreeBSD Project and community
   worldwide. Funding comes from individual and corporate donations and is
   used to fund and manage software development projects, conferences and
   developer summits, and provide travel grants to FreeBSD contributors.
   The Foundation purchases and supports hardware to improve and maintain
   FreeBSD infrastructure and provides resources to improve security,
   quality assurance, and release engineering efforts; publishes marketing
   material to promote, educate, and advocate for the FreeBSD Project;
   facilitates collaboration between commercial vendors and FreeBSD
   developers; and finally, represents the FreeBSD Project in executing
   contracts, license agreements, and other legal arrangements that
   require a recognized legal entity.

   Here are some highlights of what we did to help FreeBSD last quarter:

Partnerships and Commercial User Support

   We help facilitate collaboration between commercial users and FreeBSD
   developers. We also meet with companies to discuss their needs and
   bring that information back to the Project. In Q4, Ed Maste and Deb
   Goodkin met with a few commercial users in the US. It's not only
   beneficial for the above, but it also helps us understand some of the
   applications where FreeBSD is used. We were also able to meet with a
   good number of commercial users at the Bay Area Vendor/Developer Summit
   and Open Source Summit Europe. These venues provide an excellent
   opportunity to meet with commercial and individual users and
   contributors to FreeBSD.

Fundraising Efforts

   In 2019, we focused on supporting a few key areas where the Project
   needed the most help. The first area was software development. Whether
   it was contracting FreeBSD developers to work on projects like wifi
   support, to providing internal staff to quickly implement hardware
   workarounds, we've stepped in to help keep FreeBSD innovative, secure,
   and reliable. Software development includes supporting the tools and
   infrastructure that make the development process go smoothly, and we're
   on it with team members heading up the Continuous Integration efforts,
   and actively involved in the clusteradmin and security teams.

   Our advocacy efforts focused on recruiting new users and contributors
   to the Project. We attended and participated in 38 conferences and
   events in 21 countries. From giving FreeBSD presentations and workshops
   to staffing tables, we were able to have 1:1 conversations with
   thousands of attendees.

   Our travels also provided opportunities to talk directly with FreeBSD
   commercial and individual users, contributors, and future FreeBSD
   users/contributors. We've seen an increase in use and interest in
   FreeBSD from all of these organizations and individuals. These meetings
   give us a chance to learn more about what organizations need and what
   they and other individuals are working on. The information helps inform
   the work we should fund.

   In 2019, your donations helped us continue our efforts of supporting
   critical areas of FreeBSD such as:
     * Operating System Improvements: Providing staff to immediately
       respond to urgent problems and implement new features and
       functionality allowing for the innovation and stability you've come
       to rely on.
     * Improving and increasing test coverage, continuous integration, and
       automated testing with a full-time software engineer to ensure you
       receive the highest quality, secure, and reliable operating system.
     * Security: Providing engineering resources to bolster the capacity
       and responsiveness of the Security team providing you with peace of
       mind when security issues arise.
     * Growing the number of FreeBSD contributors and users from our
       global FreeBSD outreach and advocacy efforts, including expanding
       into regions such as China, India, Africa, and Singapore.
     * Offering FreeBSD workshops and presentations at more conferences,
       meetups, and universities around the world.
     * Providing opportunities such as developer and vendor summits and
       company visits to help facilitate collaboration between commercial
       users and FreeBSD developers, as well as helping to get changes
       pushed into the FreeBSD source tree, and creating a bigger and
       healthier ecosystem.

   We've accomplished a lot this year, but we are still only a small
   501(c)3 organization focused on supporting FreeBSD and not a trade
   organization like many other open source Foundations.

   Please consider making a donation at
   https://www.FreeBSDfoundation.org/donate/ to help us continue and
   increase our support for FreeBSD.

   We also have the Partnership Program, to provide more benefits for our
   larger commercial donors. Find out more information at
   and share with your companies!

OS Improvements

   The Foundation supports software development projects to improve
   FreeBSD through our full time technical staff, contractors, and project
   grant recipients. They maintain and improve critical kernel subsystems,
   add new features and functionality, and fix bugs.

   Between October and December there were 236 commits to the FreeBSD
   source repository tagged with FreeBSD Foundation sponsorship. This is
   about 10% of all commits during this period. Some of these projects
   have their own entries in the quarterly report, and are not repeated
   here, while others are briefly described below.

   As usual, Foundation staff member Konstantin Belousov committed a large
   number of UFS, NFS, tmpfs, VM system, and low-level Intel x86 bug fixes
   and improvements. Kostik also committed improvements to the run-time
   linker (rtld), and participated in very many code reviews, helping to
   get changes from other developers integrated into the tree.

   Following on from his work to improve debugging tools in the
   Linuxulator environment, Edward Napierała integrated the Linux Test
   Project (LTP) with FreeBSD's CI system, and committed a number of small
   bug fixes to the Linuxulator itself.

   Mark Johnston continued working on infrastructure for the Syzkaller
   system call fuzzing tool, and committed fixes for many issues
   identified by it. Mark committed improvements to RISC-V infrastructure,
   the network stack, performance and locking, and x86 pmap.

   Mark also added support for newer Intel WiFi chipsets to the iwm
   driver, enabling WiFi support for the Lenovo X1 Carbon 7th generation,
   and other contemporary laptops.

   Ed Maste committed a number of improvements and cleanups in build
   infrastructure, vt console fixes including issues with keyboard maps,
   some blacklistd updates, documentation updates, and other small
   changes. Ed also committed some work to prepare for the removal of GCC
   4.2.1 from the FreeBSD source tree, currently planned for Q1 2020.

Continuous Integration and Quality Assurance

   The Foundation provides a full-time staff member who is working on
   improving our automated testing, continuous integration, and overall
   quality assurance efforts.

   During the fourth quarter of 2019, Foundation staff continued to
   improve the project's CI infrastructure, worked with contributors to
   fix the failing build and test cases. We worked with other teams in the
   project for their testing needs and also worked with many external
   projects and companies to improve their support of FreeBSD. We added
   several new CI jobs and brought the FreeBSD Hardware Testing Lab

   We published 2019 in Review: CI and Testing Advancements on the
   Foundation's blog.

   See the FreeBSD CI section of this report for completed work items and
   detailed information.

Supporting FreeBSD Infrastructure

   The Foundation provides hardware and support to improve the FreeBSD
   infrastructure. Last quarter, we continued supporting FreeBSD hardware
   located around the world.

FreeBSD Advocacy and Education

   A large part of our efforts are dedicated to advocating for the
   Project. This includes promoting work being done by others with
   FreeBSD; producing advocacy literature to teach people about FreeBSD
   and help make the path to starting using FreeBSD or contributing to the
   Project easier; and attending and helping other FreeBSD contributors
   volunteer to run FreeBSD events, staff FreeBSD tables, and give FreeBSD

   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, to work together on projects, and to facilitate
   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

   Check out some of the advocacy and education work we did last quarter:
     * Organized the 2019 Bay Area FreeBSD Vendor and Developers Summit in
       Santa Clara, CA
     * Presented at COSCON '19 in Shanghai, China
     * Represented FreeBSD at All Things Open 2019, in Raleigh, North
     * Industry Partner Sponsor for LISA '19 in Portland, OR
     * Silver Sponsor of OpenZFS in San Francisco, CA
     * Gave a technical presentation at School of Mines in Golden, CO
     * Presenting and representing FreeBSD at Seagl, in Seattle, WA
     * Presented at Open Source Summit Europe in Lyon France
     * Committed to sponsoring LinuxConfAu 2020, in Gold Coast, Australia
       in addition to holding a FreeBSD Mini-Conf
     * Accepted to present at the BSD Dev Room at FOSDEM '20, in Brussels,
     * Accepted to have a stand at FOSDEM '20, in Brussels, Belgium
     * Committed to sponsoring FOSSASIA 2020, in Singapore
     * Committed to hold FreeBSD Day at SCALE 18x, in Pasadena, CA

   We continued producing FreeBSD advocacy material to help people promote
   FreeBSD. Learn more about our efforts in 2019 to advocate for FreeBSD:

   Our Faces of FreeBSD series is back. Check out the latest post: Mahdi

   Read more about our conference adventures in the conference recaps and
   trip reports in our monthly newsletters:

   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

   We have continued our work with a new website developer to help us
   improve our website. Work has begun to make it easier for community
   members to find information more easily and to make the site more

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 http://www.FreeBSDfoundation.org to find out how we support
   FreeBSD and how we can help you!

FreeBSD Release Engineering Team

   FreeBSD 12.1-RELEASE schedule 
    URL: https://www.freebsd.org/releases/12.1R/schedule.html
   FreeBSD 12.1-RELEASE announcement 
    URL: https://www.freebsd.org/releases/12.1R/announce.html
   FreeBSD development snapshots 
    URL: https://download.freebsd.org/ftp/snapshots/ISO-IMAGES/

   Contact: FreeBSD Release Engineering Team <re at 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 FreeBSD Release Engineering Team continued work on the
   12.1-RELEASE, which started September 6th. This release cycle was the
   first "freeze-less" release from the Subversion repository, and the
   test bed for eliminating the requirement of a hard code freeze on
   development branches.

   The 12.1-RELEASE cycle concluded with the final build beginning
   November 4th, preceded by three BETA builds and two RC builds. The RC3
   build had been included in the original schedule, but had been decided
   to not be required.

   Additionally throughout the quarter, several development snapshots
   builds were released for the head, stable/12, and stable/11 branches.

   Much of this work was sponsored by Rubicon Communications, LLC
   (netgate.com) and the FreeBSD Foundation.

Cluster Administration Team

   Cluster Administration Team members 
    URL: https://www.freebsd.org/administration.html#t-clusteradm

   Contact: Cluster Administration Team <clusteradm at FreeBSD.org>

   The FreeBSD Cluster Administration Team consists of the people
   responsible for administering the machines that the Project relies on
   for its distributed work and communications to be synchronised. In this
   quarter, the team has worked on the following:
     * Upgrade ref11-{amd64,i386}.freebsd.org to 11.3-STABLE r353313
     * Ongoing systems administration work:
     * Creating accounts for new committers.
     * Backups of critical infrastructure.
     * Keeping up with security updates in 3rd party software.

   Work in progress:
     * Review the service jails and service administrators operation.
     * South Africa Mirror (JINX) in progress.
     * NVME issues on PowerPC64 Power9 blocking dual socket machine from
       being used as pkg builder.
     * Drive upgrade test for pkg builders (SSDs) courtesy of the FreeBSD
     * Boot issues with Aarch64 reference machines.
     * New NYI.net sponsored colocation space in Chicago-land area.
     * Setup new host for CI staging environment.
     * Plan how to add new semi-official pkg mirrors

Continuous Integration

   FreeBSD Jenkins Instance 
    URL: https://ci.FreeBSD.org
   FreeBSD Hardware Testing Lab 
    URL: https://ci.FreeBSD.org/hwlab
   FreeBSD CI artifact archive 
    URL: https://artifact.ci.FreeBSD.org
   FreeBSD CI weekly report 
    URL: https://hackmd.io/@FreeBSD-CI
   freebsd-testing Mailing List 
    URL: https://lists.FreeBSD.org/mailman/listinfo/freebsd-testing
   FreeBSD Jenkins wiki 
    URL: https://wiki.freebsd.org/Jenkins
   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://preview.tinyurl.com/y9maauwg
   FreeBSD CI Repository 
    URL: https://github.com/freebsd/freebsd-ci

   Contact: Jenkins Admin <jenkins-admin at FreeBSD.org>
   Contact: Li-Wen Hsu <lwhsu at FreeBSD.org>

   The FreeBSD CI team maintains continuous integration system and related
   tasks for the FreeBSD project. The CI system regularly checks the
   committed changes can be successfully built, then performs various
   tests and analysis of the results. The results from build jobs are
   archived in an artifact server, for the further testing and debugging
   needs. The CI team members examine the failing builds and unstable
   tests, and work with the experts in that area to fix the code or adjust
   test infrastructure. The details are of these efforts are available in
   the weekly CI reports.

   During the fourth quarter of 2019, we worked with the contributors and
   developers in the project for their testing needs and also worked with
   many external projects and companies to improve their support of
   FreeBSD. The FreeBSD Hardware Testing Lab is online in this quarter.
   It's still in work in progress stage and we are merging the different
   versions and will integrate more tightly to the main CI server. We are
   also working on make this work more easierly to be reproduced.

   Work in progress:
     * Collecting and sorting CI tasks and ideas at
     * Setup the CI stage environment and put the experimental jobs on it
     * Implementing automatic tests on bare metal hardware
     * Adding drm ports building test against -CURRENT
     * Testing and merging pull requests at
     * Planning for running ztest and network stack tests
     * Helping more 3rd software get CI on FreeBSD through a hosted CI
     * Adding LTP test jobs.
     * Adding non-x86 test jobs.
     * Adding external toolchin related jobs.

   Please see freebsd-testing@ related tickets for more WIP information.

   This project was sponsored by The FreeBSD Foundation.


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

IPSec Extended Sequence Number (ESN) support

   Contact: Patryk Duda <pdk at semihalf.com>
   Contact: Marcin Wojtas <mw at semihalf.com>

   Extended Sequence Number (ESN) is IPSec extension defined in RFC4303
   Section 2.2.1. It makes possible to implement high-speed IPSec
   implementations where standard, 32-bit sequence number is not
   sufficent. Key feature of the ESN is that only low order 32 bits of
   sequence number are transmitted over the wire. High-order 32 bits are
   maintained by sender and receiver. Additionally high-order bits are
   included in the computation of Integrity Check Value (ICV) field.

   Extended Sequence Number support contains following:
     * Modification of existing anti-replay algorithm to fulfil ESN
     * Trigger soft lifetime expiration at 80% of UINT32_MAX when ESN is
     * Implement support for including ESN into ICV in cryptosoft engine
       in both encrypt and authenticate mode (eg. AES-CBC and SHA256 HMAC)
       and combined mode (eg. AES-GCM)
     * Implement support for including ESN into ICV in AES-NI engine in
       both encrypt and authenticate mode and combined mode

   Remaining work:
     * Upstream patches of the anti-replay algorithm
     * Adjust implementation of crypto part after the reworked Open Crypto
       Framework gets stable

   This project was sponsored by Stormshield.

NFS Version 4.2 implementation

   Contact: Rick Macklem <rmacklem at freebsd.org>

   RFC-7862 describes a new minor revision to the NFS Version 4 protocol.
   This project implements this new minor revision.

   The NFS Version 4 Minorversion 2 protocol adds several optional
   features to NFS, such as support for SEEK_DATA/SEEK_HOLE, file copying
   done on the server that avoids data transfer over the wire and support
   for posix_fallocate(), posix_fadvise(). Hopefully these features can
   improve performance for certain applications.

   This project has basically been completed. The code changes have now
   all been committed to head/current and should be released in FreeBSD

   Testing by others would be appreciated. To do testing, an up to date
   head/current system is required. Client mounts need the
   "minorversion=2" mount option to enable this protocol. The NFS server
   will have NFSv4.2 enabled by default.

DTS Update

   Contact: Emmanuel Vadot <manu at FreeBSD.org>

   DTS files (Device Tree Sources) were updated to be on par with Linux
   5.4 for HEAD and 5.2 for the 12-STABLE branch. The DTS for the RISC-V
   architecture are now imported as well.

RockChip Support

   Contact: <freebsd-arm at FreeBSD.Org>
   Contact: Emmanuel Vadot <manu at FreeBSD.Org>
   Contact: Michal Meloun <mmel at FreeBSD.Org>

   RockChip RK3399 now has USB3 support, some configuration such as device
   mode are still not supported however host mode should work on any

   Support for SPI has been committed which enables ability to interact
   with SPI flash if present.

   All regulators for the RK808 PMIC (Power Management IC) have been

   All clocks are now supported which completes clock and reset
   implementation, previously only clocks from devices with drivers were

   The TS-ADC (Temperature Sensor ADC) is now supported, this adds the
   ability to read temperature of the CPU and GPU via sysctl
   hw.temperature .

   Initial PCIe support has been committed and verified working on several
   different boards. Known working devices are NVMe devices and PCIe cards
   that doesn't utilize PCIe switching or bridge functionality.

   Card Detection for SDCard on RK3328 and RK3399 is now supported. There
   is still some problems if the board is using a GPIO for CD instead of
   the internal detection mechanism.

Creating virtual FreeBSD appliances from RE VMDK images

    URL: https://github.com/gonzoua/freebsd-mkova

   Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>

   OVA is a file format for packaging and distributing virtual appliances:
   pre-configured virtual machine images. Virtual appliance file contains
   full VM information like the number of CPUs, amount of memory, list of
   virtual devices, it also includes disk images. Applications like
   VirtualBox or VMWare can import OVA files; this process can be easily

   freebsd-mkova is a CLI tool to create OVA files using VMDK images
   provided by FreeBSD RE. For now, only a limited set of attributes can
   be specified: VM name, number of CPU, amount of memory, and disk size.
   The tool also does only cursory sanity checks on the VMDK file format,
   assuming it's a monolithic sparse file and that it has to be converted
   to the stream-optimized format. The script can be extended to make
   hardware configuration more flexible and VMDK parser more robust.


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

SoC audio framework and RK3399 audio drivers

    URL: https://github.com/gonzoua/freebsd/tree/rk3399_audio

   Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>

   Most modern SoCs and devboards have audio support in one form or
   another, but it's one of the areas that are overlooked by FreeBSD
   driver developers. The most common architecture for the audio pipeline
   on a single-board computer consists of two DAIs (digital audio
   interfaces): CPU and codec, connected by a serial bus.

   CPU DAI is a SoC IP block that operates with samples: obtains them from
   the driver for playback or provides them to the driver for recording
   through FIFOs or DMA requests. Audio samples leave (or arrive at) the
   SoC through a serial bus, usually I2S, that is connected to Codec DAI.

   Codec DAI is an external (to the SoC) chip that packs one or more
   DAC/ADC blocks along with mixers, amplifiers, and probably more
   specialized devices like filters and/or sound effects. The analog part
   of the codec is connected to microphones/headphones/speakers. On SBCs,
   the codec usually communicates with SoC through two interfaces: data
   path, over which audio samples travel, and a control interface that is
   used to read/write chip registers and configure its behavior. The most
   common choices for these are I2S and I2C buses, respectively.

   For FDT-enabled devices, an audio pipeline is described as a virtual
   DTB node that has links to the CPU and codec device(s), and which
   specifies the data format, and clock details that both the CPU and the
   codec chips would use. It also may have more than one CPU/codec pair.

   Using Firefly-RK3399 as a test device, I was able to implement I2S
   driver for RK3399 SoC (PIO mode, playback only), the driver for
   Realtek's RT5640 chip (headphones playback only + mixer controls) and a
   base outline of SoC audio framework. Some bits of rk_i2s and the
   framework were ported from the NetBSD code developed by Jared McNeill.
   On my WIP branch, I can play mp3 audio and control playback volume.

   The primary missing functionalities at the moment are recording
   support, multi-link audio cards, DMA support. The most critical among
   these is DMA support. In the current implementation, all buffer
   management is placed at the ausoc layer, which is not going to work for
   DMA, because only the CPU DAI driver would know about the memory
   constraints and access mechanisms. The current state of RK3399 support
   does not allow to implement DMA transfers for rk_i2s easily, but I plan
   to look into this right after adding recording support, which should
   not be a lot of work.

FreeBSD on Microsoft HyperV and Azure

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

   Contact: FreeBSD Integration Services Team <bsdic at microsoft.com>
   Contact: Wei Hu <whu at FreeBSD.org>
   Contact: Li-Wen Hsu <lwhsu at FreeBSD.org>

   Wei is working on HyperV Socket support for FreeBSD. HyperV Socket
   provides a way for host and guest to communicate using common socket
   interfaces without networking support. Some features in Azure require
   HyperV Socket support in guest.

   It is planned to commit the code by the end of February.

   This project is sponsored by Microsoft. Details of HyperV Socket is
   available at

   Li-Wen and Wei are working on improving FreeBSD release on Azure.
   During this quarter, Wei has published the 11.3-RELEASE on Azure.
   Li-Wen is working on the FreeBSD release codes related to Azure for the
   -CURRENT and 12-STABLE branches.

   This project is sponsored by Microsoft and FreeBSD Foundation.

FreeBSD on EC2 ARM64

   FreeBSD/ARM 12 in AWS Marketplace 
    URL: https://aws.amazon.com/marketplace/pp/B081NF7BY7
   FreeBSD/EC2 Patreon 
    URL: https://www.patreon.com/cperciva
   M6G vs M5 buildworld cost/time performance 
    URL: https://twitter.com/cperciva/status/1206688489518985216

   Contact: Colin Percival <cperciva at FreeBSD.org>

   In November 2018, Amazon Web Services announced the first Elastic
   Compute Cloud (EC2) instances built around the ARM64 platform. While
   FreeBSD supported the ARM64 platform, running on this specific virtual
   machines took some additional work, but by April 2019 the weekly
   snapshot builds performed by the Release Engineering Team included
   ARM64 AMIs for FreeBSD HEAD.

   In November 2019 FreeBSD 12.1 was released, including the first
   "RELEASE" FreeBSD EC2/ARM64 AMIs. A few weeks later, FreeBSD/ARM64 was
   added as a new "product" to the AWS Marketplace.

   At the re:Invent 2019 conference in December 2019, Amazon announced a
   second family of ARM64 instances, known variously as "Graviton 2" and
   "M6G". These are far more powerful than the first-generation ARM64 EC2
   instances, and have a roughly 40% price/performance advantage over the
   "M5" family of x86 EC2 instances; and existing FreeBSD 12.1 and HEAD
   AMIs run "out of the box" on these instances.

   Work is currently underway to improve kernel locking scalability on
   these instances; with high levels of parallelism (e.g. buildworld -j64)
   the G6M instances have approximately 1.5x higher sys:user ratios than
   equally-sized M5 instances, suggesting that there is room for
   improvement here.

   Two issues have been recently identified, both likely relating to ACPI:
     * EC2 "StopInstance" API calls, which translate to ACPI "power
       button" notifications, do not trigger FreeBSD to shut down; this
       results in a timeout from EC2 and a "hard poweroff".
     * Hotplugging/unplugging EBS volumes, which normally operates via
       ACPI device notifications, does not work.

   Help from developers familiar with ARM64 and ACPI would be much

   This project was sponsored by FreeBSD/EC2 Patreon.

ENA FreeBSD Driver Update

    URL: https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README

   Contact: Michal Krawczyk <mk at semihalf.com>
   Contact: Maciej Bielski <mba at semihalf.com>
   Contact: Marcin Wojtas <mw at semihalf.com>

   ENA (Elastic Network Adapter) is the smart NIC available in the
   virtualized environment of Amazon Web Services (AWS). The ENA driver
   supports multiple transmit and receive queues and can handle up to 100
   Gb/s of network traffic, depending on the instance type on which it is

   Completed since the last update:
     * Upstream of the driver v2.1.0 version, introducing:
     * Netmap support
     * Driver structure rework (split datapath code from initialization)
     * Fix for keep-alive timeout due to prolonged reset
     * Enable LLQ mode on arm64 instances by enabling memory mapped as WC

   Work in progress::
     * ENA v2.2.0 release, introducing new bug fixes, features and other

   This project was sponsored by Amazon.com Inc.


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

PowerPC on Clang

   Contact: Justin Hibbits <jhibbits at freebsd.org>
   Contact: Brandon Bergren <bdragon at freebsd.org>
   Contact: Alfredo Dal'Ava Júnior <alfredo.junior at eldorado.org.br>

   Shortly before the end of the year all 3 PowerPC targets (powerpc,
   powerpc64, powerpcspe) switched to Clang as the base compiler. This was
   an effort spanning nearly the full year, with several people involved.
   32-bit PowerPC platforms (powerpc, powerpcspe) still require GNU ld,
   but powerpc64 uses LLD as the base linker. The other two platforms will
   migrate as soon as LLD is ready, which should be in the next several

   With the switch to Clang and LLD, powerpc64 also switched to ELFv2, a
   modern ABI initially targeted for Linux powerpc64le (little endian),
   but the ABI itself is endian agnostic; however, ELFv2 is binary
   incompatible with ELFv1. FreeBSD is still big endian on all powerpc

NXP ARM64 SoC support

   Contact: Marcin Wojtas <mw at semihalf.com>
   Contact: Artur Rojek <ar at semihalf.com>

   The Semihalf team initiated working on FreeBSD support for the NXP
   LS1046A SoC

   LS1046A are quad-core 64-bit ARMv8 Cortex-A72 processors with
   integrated packet processing acceleration and high speed peripherals
   including 10 Gb Ethernet, PCIe 3.0, SATA 3.0 and USB 3.0 for a wide
   range of networking, storage, security and industrial applications.

   Completed since the last update:
     * QSPI
     * Network performance improvements

     * Upstreaming of developed features. This work is expected to be
       submitted/merged to HEAD in the Q1 of 2020.

   This project was sponsored by Alstom Group.

Userland Programs

   Changes affecting the base system and programs in it.

Linux compatibility layer update

   Contact: Edward Tomasz Napierala <trasz at FreeBSD.org>

   Linux binaries of Linux Test Projects tests are now part of the FreeBSD
   Continuous Integration infrastructure. This makes it easy to track
   progress in improving the Linux compatibility layer, and to detect

   There was a fair number of all kinds of improvements to the layer,
   ranging from updated linux(4) man page, to a new linux rc script, which
   now takes care of eg mounting Linux-specific filesystems or setting ELF
   fallback brand, to new syscalls, to tiny improvements such as making ^T
   work for Linux binaries.

   From the user point of view, when running 13-CURRENT, Linux jails are
   now in a mostly working state: you can SSH into a jail with CentOS 8
   binaries, run screen(1), Emacs, Postgres, OpenJDK 11, use yum
   upgrade... Of course there's still a bunch of things that need work:
     * There is a patch from chuck@ that makes core dumps work for Linux
       binaries; this will make debugging much easier
     * There are pending reviews for patches that add extended attributes
       support, fexecve(2) syscall, sendfile; they require wrapping up and
     * There are over 400 failing LTP tests. Some of them are false
       positives, some are easy to fix bugs, some require adding new
       system calls. Any help is welcome.

   This project was sponsored by FreeBSD Foundation.


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

Ports Collection

   About FreeBSD Ports 
    URL: https://www.FreeBSD.org/ports/
   Contributing to Ports 
    URL: https://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing/ports-contributing.html
   FreeBSD Ports Monitoring 
    URL: http://portsmon.freebsd.org/index.html
   Ports Management Team 
    URL: https://www.freebsd.org/portmgr/index.html

   Contact: René Ladan <portmgr-secretary at FreeBSD.org>
   Contact: FreeBSD Ports Management Team <portmgr at FreeBSD.org>

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

   2019Q4 closed with a total of 38,200 ports and 2180 open PRs of which a
   small 470 PRs are unassigned. Last quarter saw 7907 commits from 157
   committers to the HEAD branch and 358 commits from 61 committers to the
   2019Q4 branch. This seems to suggest a small increase in activity
   compared to the quarter before.

   During the last quarter, we welcomed Oleksii "Alex" Samorukov (samm@)
   and Scott Long (scottl@, already a source committer) as new ports
   committers. We also said goodbye to az@, brd@, dtekse@, eadler@, and
   johans at .

   The default versions of some ports changed: Lazarus is now at version
   2.0.6, Samba at 4.10, and Python at 3.7. The web browsers received
   their updates too: Chromium is now at version 78.0.3904.108, Firefox at
   version 72.0 and its ESR counterpart at version 68.4.0. Finally, the Qt
   stack got updated to version 5.13.2.

   Some modernizations took place: the "palm" category was removed as well
   as the virtual "ipv6" category. IPv6 support (next to IPv4) is now
   considered the norm. Lastly, the CentOS 6 ports were removed after
   their CentOS 7 counterparts were made the default in the previous

   As always, antoine@ was happy to take your exp-runs, this time a total
   of 30, for various ports and framework updates, default version
   updates, and the removal of OpenJDK 6 and OpenJRE 6.

KDE on FreeBSD

   KDE FreeBSD           
    URL: https://freebsd.kde.org/
   KDE Community FreeBSD 
    URL: https://community.kde.org/FreeBSD

   Contact: Adriaan de Groot <kde at FreeBSD.org>

   The KDE on FreeBSD project packages the software produced by the KDE
   Community for FreeBSD. The software includes a full desktop
   environment, the art application https://kdenlive.org and hundreds of
   other applications that can be used on any FreeBSD desktop machine.

   The monthly releases of KDE Frameworks, bugfix-releases of KDE Plasma
   Desktop and the quarterly feature release of KDE Plasma Desktop were
   all landed in the ports tree shortly after upstream releases. There
   were also monthly KDE Applications bugfix-releases which also landed in
   a timely manner.

   Digikam landed a new release thanks to Dima Panov. We hope this gets
   rid of the instability caused by the previous release update from last

   The open bugs list grew to 32 this quarter with a handful of strange
   build failures. We welcome detailed bug reports and patches. KDE
   packaging updates are prepared in a copy of the ports repository on
   GitHub and then merged in SVN. We welcome pull requests there as well.

Java on FreeBSD

   OpenJDK 11 repository at FreeBSD GitHub 
    URL: https://github.com/freebsd/openjdk-jdk11u

   Contact: Greg Lewis <glewis at FreeBSD.org>

   During Q4 the FreeBSD java porting effort features smaller updates than
   those of the previous quarters. However, the following changes are
   worth mentioning:
     * Updated ports for OpenJDK 8u232, 11.0.5, and 13.0.1
     * Removal of the EOL'ed Java 6, 9, and 10 ports
     * Fixed remote debugging for Java 11+
     * Fixed a problem with running external processes for Java 11+

   This project was sponsored by FreeBSD Foundation.

Electron and VSCode

   Electron port 
    URL: https://github.com/tagattie/FreeBSD-Electron
   VSCode port   
    URL: https://github.com/tagattie/FreeBSD-VSCode

   Contact: Hiroki Tagato <tagattie at yandex.com>
   Contact: Luca Pizzamiglio <pizzamig at FreeBSD.org>

   Electron is a popular framework to build desktop application using
   JavaScript, HTML and CSS. Few months ago, electronjs has been added to
   the ports tree. Currently version 4.x and 6.x are supported.

   In the last quarter, a popular application, the powerful VSCode editor,
   has been added to the ports tree as well. VSCode is based on electron

   atom, another popular editor, is still a work in progress and it's
   based on electron 4.x

   Many thanks to Hiroki, for the hard work, and to Antoine, for support
   of the special poudriere configuration needed to build VSCode.


   Bastille GitHub    
    URL: https://github.com/BastilleBSD/bastille
   Bastille Templates 
    URL: https://gitlab.com/bastillebsd-templates
   Bastille Website   
    URL: https://bastillebsd.org

   Contact: Christer Edwards <christer.edwards at gmail.com>

What is Bastille?

   Bastille is an open-source system for automating deployment and
   management of containerized applications on FreeBSD.

   Bastille uses FreeBSD jails as a container platform and adds template
   automation to create a Docker-like collection of containerized
   software. The template collection currently validates 30-40
   applications from the ports tree, and is growing!

   Templates take care of installing, configuring, enabling, and starting
   the software, providing an automated way of building containerized

   Bastille is available in ports at sysutils/bastille.

Q4 2019 Status

   In Q4 2019 Bastille published three releases (for a total of ten
   releases in 2019). Highlights from these updates include:
     * support for "thin" (shared base) and "thick" (unique base) jails
     * support for INCLUDE and FSTAB in template system
     * upgrade support for shared and unique base jails
     * GitLab CI/CD testing for all official templates
     * automatic template validation and CVE scan
     * dedicated pf table for private IP jails

   Bastille saw an increase in community contributions with six new GitHub
   contributors. These people generously improved error checking, release
   validation (sha256), firewall functionality, flexible networking and
   initial support for resource limits!

   We want to thank everyone that contributed to Bastille in 2019. Your
   support has been amazing!

Universal Packaging Tool (upt)

   Upt repositories    
    URL: https://framagit.org/upt/
   Upt itself          
    URL: https://framagit.org/upt/upt/
   The FreeBSD backend 
    URL: https://framagit.org/upt/upt-freebsd

   Contact: The upt mailing list <upt at framalistes.org>
   Contact: <#upt-packaging>

   The Universal Package Manager (upt) is a tool designed to easily port
   software from common upstream package archives (such as
   https://rubygems.org/) to various operating systems, including FreeBSD,
   of course.

   A lot of similar tools already exist: pytoport (which creates FreeBSD
   ports for PyPI packages), gem2deb (which creates Debian packages from a
   Ruby gem), and many others.

   The main difference between these tools and upt is that the latter uses
   a modular design, allowing it to handle packages from many sources and
   support many different operating systems through plugins. You may try
   upt by installing sysutils/py-upt, sysutils/py-upt-pypi and
   sysutils/py-upt-freebsd. Suppose you would like to package "upt-cran",
   which is hosted on PyPI. You could do it like so:

   # upt package -f pypi -b freebsd -o /usr/ports/sysutils/ upt-cran

   $ tree /usr/ports/sysutils/py-upt-cran /usr/ports/sysutils/py-upt-cran
   |-- Makefile |-- distinfo `-- pkg-descr

   $ cat sysutils/py-upt-cran/Makefile # $FreeBSD:
   53827 2020-01-26 13:49:47Z trasz $

   PORTNAME= upt-cran DISTVERSION= 0.1 CATEGORIES= sysutils python

   MAINTAINER= python at FreeBSD.org COMMENT= CRAN frontend for upt


   RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \
   ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \

   USES= python USE_PYTHON= autoplist distutils

   .include <bsd.port.mk>

   Note that the Rubygems and CPAN frontends are also available
   (sysutils/py-upt-rubygems and sysutils/py-upt-cpan).

   Bug reports and comments about this new tool are welcome.

Wine on FreeBSD

   Wine homepage 
    URL: https://www.winehq.org

   Contact: Gerald Pfeifer <gerald at FreeBSD.org>

   A lot has happened since our last quarterly report. The Wine 4 release
   series has been in our tree for nearly a year and proven rather stable.
   Both that port and wine-devel, which tracks bi-weekly development
   releases, have seen regular adjustments to infrastructure changes and
   small improvements, in particular also around non-default options.

   Now we need help!

   WoW64 (or Wine on Wine 64) allows running both 32-bit and 64-bit
   Windows applications in one installation. A volunteer has proposed
     * a general framework for lib32- companion libraries
     * an approach directly using our Wine ports

   to make this work and we do not have the expertise nor facilities to
   properly review, test, and maintain those ourselves.

   If you can facilitate getting (at least one of) these into the tree,
   please help! And if you'd like to assume co-maintainership or sole
   maintainership of emulators/wine*, that is an option, too.

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


    URL: https://gitlab.com/alfix/sysctlbyname-improved

   Contact: Alfonso Sabato Siciliano <alfonso.siciliano at email.com>

   The FreeBSD kernel maintains a Management Information Base (MIB) where
   a component (object) represents a parameter of the system. The sysctl()
   system call explores the MIB to find an object by its Object Identifier
   (OID) and calls its handler to get or set the value of the parameter.

   The sysctlbyname() syscall (or the old function) accepts the name of
   the object (instead of its OID) to identify it. The purpose of this
   project is to allow sysctlbyname() to handle:
     * a CTLTYPE_NODE with a no-NULL handler, example
     * an object with some level-name equals to the '\0' character,
       example "security.jail.param.allow.mount.";

   A sysctlbyname() clone is provided: sysctlbyname_improved(), the
   implementation core is a new sysctl internal node to get the OID of a
   node by its name eventually expanded with an input for its handler;
   both, can be installed via _sysutils/sysctlbyname-improved-kmod_. The
   internal node is also used by the sysctlmif_oidinputbyname() function
   of the _devel/libsysctlmibinfo2_ userland library and can be handled by
   the SYSCTLINFO_BYNAME macro of the sysctlinfo interface (described in
   the previous quarterly status report).

pot and the nomad pot driver

   Nomad pot driver 
    URL: https://github.com/trivago/nomad-pot-driver
   Pot project      
    URL: https://github.com/pizzamig/pot
    URL: https://github.com/pizzamig/minipot

   Contact: Luca Pizzamiglio <pizzamig at FreeBSD.org>
   Contact: Esteban Barrios <esteban.barrios at trivago.com>

   The pot utility added support to private bridges: a group of jail can
   now use a dedicated bridge, instead of the public one, improving
   isolation. Moreover, several small bugs have been found and fixed, and
   support to pre/post start/stop hook script has been added.

   The nomad pot driver received support for nomad restart without drain
   and improved configuration stability.

   A new port called minipot has been added: this port will install
   configuration files and dependencies, converting a FreeBSD machine in a
   single node cluster. It will install nomad, consul, pot, the nomad pot
   driver and traefik, already configured and ready to use.

   Experimental work has been done on a tool that allows to create and run
   pot images (FreeBSD jails) on other operating systems (Linux and Mac),
   adopting an approach similar to docker machine. We hope to make this
   tool available soon.

   Next steps:
     * add dual IP stack support to pot
     * add private bridge support to the nomad pot driver
     * improve usability to create images

   This project was sponsored by trivago N.V..

7 Days Challenge

   7 Days Challenge 
    URL: https://wiki.freebsd.org/MichaelCrilly/7dayschallenge

   Contact: Michael Crilly <mike at opsfactory.com.au>

   The 7 Days Challenge is an educational initiative to help people
   onboard with FreeBSD more easily.

   It will use a combination of tutorials, guides and how-tos to get users
   engaged with FreeBSD quickly, target specific end goals the user might
   have for FreeBSD, and more.

   The primary objective is to demonstrate FreeBSD's capabilities as a
   modern, relevant operating system in today's Cloud centric, automated
   business models.

   This project was sponsored by OpsFactory Pty Ltd (Australia).


   NomadBSD Website                
    URL: https://www.nomadbsd.org/
   NomadBSD Github                 
    URL: https://www.github.com/NomadBSD/NomadBSD
   NomadBSD Developer Mailing List 
    URL: https://www.freelists.org/list/nomadbsddevs

   Contact: NomadBSD Team <info at NomadBSD.org>

   NomadBSD is a persistent live system for USB flash drives, based on
   FreeBSD. Together with automatic hardware detection and setup, it is
   configured to be used as a desktop system that works out of the box,
   but can also be used for data recovery, for educational purposes, or
   testing FreeBSD's hardware compatibility.

   After one release candidate the NomadBSD Team finished and released
   NomadBSD 1.3 on December 7th. This release is based on FreeBSD 12.1,
   fixed a lot of bugs and added new packages and features. Along those
   features are the option to install NomadBSD on ZFS and the use of an
   automatic configuration when running NomadBSD in VirtualBox.

   New tools developed by the NomadBSD Team and added to version 1.3 are
   nomadbsd-dmconfig to select a display manager theme, nomadbsd-adduser
   which adds new user accounts and DSBBg to change the background image.
   All these are using the Qt-Toolkit.

   In Q4 we added two mirrors in France and Germany and would like to
   thank nosheep.fr and fau.de for them.

   We are looking for people to help the project. Help is much appreciated
   in all areas:
     * Translation of program interfaces
     * Design artwork
     * Programming new tools, extend existing ones
     * Tests and Bug reports / UX and feature suggestions
     * Mirrors outside of Europe

   Open tasks:
     * Support installation on disk partitions and add a partition editor
     * Complete disk encryption
     * Add a user-friendly network manager

More information about the freebsd-announce mailing list