Skip site navigation (1) Skip section navigation (2)

Introduction

This report covers FreeBSD-related projects between October and December 2014. This is the last of four reports planned for 2014.

The fourth quarter of 2014 included a number of significant improvements to the FreeBSD system. In particular, compatibility with other systems was enhanced. This included significant improvements to the Linux compatibility layer, used to run Linux binaries on FreeBSD, and the port of WINE, used to run Windows applications. Hypervisor support improved, with FreeBSD gaining the ability to run as domain 0 on Xen's new high-performance PVH mode, bhyve gaining AMD support, and new tools for creating FreeBSD VM images arriving.

This quarter was also an active time for the toolchain, with numerous improvements to the compiler, debugger, and other components, including initial support for C++14, which should be complete by FreeBSD 10.2.

Thanks to all the reporters for the excellent work!

The deadline for submissions covering the period from January to March 2015 is April 7th, 2015.


FreeBSD Team Reports

Projects

Kernel

Architectures

Userland Programs

Ports

Documentation

Miscellaneous



    FreeBSD Team Reports


    FreeBSD Release Engineering Team

    Links
    FreeBSD development snapshots URL: http://ftp.freebsd.org/pub/FreeBSD/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 FreeBSD 10.1-RELEASE cycle completed on November 14th, marking the second official release point from the stable/10 branch, just short of three weeks later than the original schedule anticipated.

    Work to produce virtual machine images for platforms not currently supported has continued, with focus aimed primarily at Amazon EC2, Google Compute Engine, and Openstack.

    With huge thanks to Ian Lepore and Warner Losh, new ports exist for FreeBSD/arm where u-boot is required. Work has been in progress since late December to migrate the existing FreeBSD/arm release build tools to utilize the new ports.

    This project was sponsored by The FreeBSD Foundation.


    Ports Collection

    Links
    URL: http://www.FreeBSD.org/ports/
    URL: http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing-ports/
    URL: http://portsmon.freebsd.org/index.html
    URL: http://portscout.freebsd.org/
    URL: http://www.freebsd.org/portmgr/index.html
    URL: http://blogs.freebsdish.org/portmgr/
    URL: http://www.twitter.com/freebsd_portmgr/
    URL: http://www.facebook.com/portmgr
    URL: http://plus.google.com/communities/108335846196454338383

    Contact: Frederic Culot <portmgr-secretary@FreeBSD.org>
    Contact: Ports Management Team <portmgr@FreeBSD.org>

    As of the end of Q4 the ports tree holds more than 24,000 ports, and the PR count is just over 1,400. As during the previous quarter the tree saw a sustained activity with almost 6,000 commits and more than 1,600 ports PRs closed!

    In Q4, five new developers were granted a ports commit bit (gordon@, jmg@, jmmv@, bofh@, truckman@) and six were taken in for safekeeping (sylvio@, pclin@, flz@, jsa@, anders@, motoyuki@).

    On the management side, miwi@ decided to step down from his portmgr duties in November. No other changes were made to the team during Q4.

    This quarter also saw the release of the fourth quarterly branch, namely 2014Q4.

    On the QA side, 39 exp-runs were performed to validate sensitive updates or cleanups.

    Open tasks:

    1. A tremendous work was done on the PR front in Q4 and we would be very pleased to see committers dedicate themselves to closing as many as possible in 2015 as well!

    2. 2014 is the year that saw the highest number of commits in all of our ports tree's history! As for the PR front and to keep our beloved tree in good shape, we would love to see the same commitment from our developers next year!


    The FreeBSD Core Team

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

    The FreeBSD Core Team constitutes the project's "Board of Directors", responsible for deciding the project's overall goals and direction as well as managing specific areas of the FreeBSD project landscape.

    During the fourth quarter of 2014, the FreeBSD Core team saw the culmination of a long-running project to rebuild the FreeBSD Forums. The chosen solution was to license XenForo; core would like to thank the FreeBSD Foundation for paying the licensing costs of this software.

    Much discussion ensued concerning the "New Support Model" following Core's meeting at EuroBSDCon in September. It was recognised that trying to change the model immediately before 10.1-RELEASE was far too late, and the change will be targeted at 11.0-RELEASE.

    In order to ensure that 10.1-RELEASE shipped with support for up-to-date X Window Systems and KDE4, core approved the switch to 'new Xorg' as the default in time for building the packages for that release.

    Git was officially promoted from beta to an officially supported version control system. Git is available as a read-only resource for downstream consumers and contains an exported copy from SVN, the primary and only read-write repository. The FreeBSD git repositories (exported from the master SVN version control) will shortly be available at https://git.freebsd.org/, and core has been active in ensuring that there is a sufficient body of Git administrators available with access to appropriate documentation in order to maintain a good git service.

    Core mediated in disputes between a number of committers over some updates to system sources, and fielded complaints about code quality of some other work in critical areas. While such disagreements will occasionally occur, core is promoting the routine use of the Phabricator service in order to review work before committal. Catching problems early is in the project's best interests, and discussion of changes in an open review context should minimize confrontational demands for immediate back-out of changes.

    Core is working on a charter for a proposed new QA team, to encompass members of the Release Engineering and Security teams, as well as committers with interests in standards compliance. It is envisioned that the QA team will take responsibility for merging code from HEAD into the STABLE branches, run integration testing against those updates and handle merging patches and bug-fixes submitted to the FreeBSD project from third parties.

    During this quarter, core issued two new commit bits, and also took two commit bits into safe-keeping.



    Projects


    bhyve

    Links
    bhyve FAQ and talks URL: http://www.bhyve.org

    Contact: Peter Grehan <grehan@FreeBSD.org>
    Contact: Neel Natu <neel@FreeBSD.org>
    Contact: John Baldwin <jhb@FreeBSD.org>
    Contact: Tycho Nightingale <tychon@FreeBSD.org>
    Contact: Allan Jude <freebsd@allanjude.com>

    bhyve is a hypervisor that runs on the FreeBSD/amd64 platform. At present, it runs FreeBSD (8.x or later), Linux i386/x64, OpenBSD i386/amd64, and NetBSD/amd64 guests. Current development is focused on enabling additional guest operating systems and implementing features found in other hypervisors.

    Support for AMD processors was committed to -CURRENT in October 2014. This has also been merged to 10-STABLE and will be included in the 10.2 release.

    A bhyve status update presentation was given at the FreeBSD Vendor Summit in Nov 2014. The slides are available at http://people.freebsd.org/~neel/bhyve/bhyve_update_vendor_summit_2014.pdf.

    A number of improvements have been made to bhyve this quarter:

    • OpenBSD/i386 guests are now able to boot with multiple vcpus.
    • NetBSD/amd64 guests are now fully supported.
    • Improvements to the AHCI emulation to be more resilient under heavy load.
    • Various improvements to PIC emulation to be able to boot legacy guests.
    • A fully featured RTC device emulation that allows date/time changes by the guest and supports periodic and alarm interrupts.
    • Consolidate all timer emulations in vmm.ko. This enables the use of a single clocksource for all timer emulations.
    • Allow tracing of every exception incurred by a guest. This is useful when debugging guest double and triple faults.
    • Emulate platform-specific MSRs accessed by recent Linux guests.
    • Various bug fixes to grub-bhyve to boot OpenBSD/i386 and Centos 4.x guests.
    • grub-bhyve is now able to connect to an nmdm(4) console using the --cons-dev option.

    Open tasks:

    1. Improve documentation.

    2. bhyveucl is a script for starting bhyve instances based on a libUCL config file. More information at https://github.com/allanjude/bhyveucl.

    3. CSM BIOS boot support for non UEFI-aware guests.

    4. Add support for virtio-scsi.

    5. Improve virtio-net, add offload features, support multiple queues.

    6. Implement Intel 82580 and e1000 NIC emulation.

    7. Netmap support.

    8. Flexible networking backend: wanproxy, vhost-net.

    9. Move to a single process model, instead of bhyveload + bhyve.

    10. Support running bhyve as non-root.

    11. Add filters for popular VM file formats (VMDK, VHD, QCOW2).

    12. Implement an abstraction layer for video (no X11 or SDL in base system).

    13. Support for VNC as a video output.

    14. Suspend/resume support.

    15. Live Migration.

    16. Nested VT-x support (bhyve in bhyve).

    17. Support for other architectures (ARM, MIPS, PPC).


    Clang, llvm, and lldb Updated to 3.5.0

    Links
    LLVM 3.5.0 Release Notes URL: http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html
    Clang 3.5.0 Release Notes URL: http://llvm.org/releases/3.5.0/tools/clang/docs/ReleaseNotes.html

    Contact: Dimitry Andric <dim@FreeBSD.org>
    Contact: Ed Maste <emaste@FreeBSD.org>
    Contact: Roman Divacky <rdivacky@FreeBSD.org>

    Just before the end of the year, we updated clang, llvm, and lldb in the base system to 3.5.0 release. These all contain numerous improvements. Please see the linked release notes for more detailed information.

    This is the first release that requires C++11 support to build. At this point, FreeBSD 10.0 and later provide that support, at least on x86.

    In the near future, more components from llvm.org will be updated in base, with libc++ and libcompiler-rt most likely being the first to be updated.

    Thanks to Ed Maste, Roman Divacky, Andrew Turner, Justin Hibbits, and Antoine Brodin for their invaluable help with this import.

    Open tasks:

    1. While most ports that were impacted by this update have already been fixed, there are still a few that do not work with the clang 3.5.0 update.

      In most cases, this is due to relatively simple issues, such as new warnings, or slightly stricter error checking (primarily for C++ programs). Fixing those issues should not take too much work.

    2. There are still some open issues with the ARM, PowerPC, and Sparc64 architectures, and any help in this area is very much appreciated.


    External Toolchain

    Links
    URL: https://wiki.freebsd.org/ExternalToolchain

    Contact: Baptiste Daroussin <bapt@FreeBSD.org>
    Contact: Warner Losh <imp@FreeBSD.org>
    Contact: Brooks Davis <brooks@FreeBSD.org>

    The main goal of the external toolchain project is to be able to build world and kernel with a non-default toolchain. It can be helpful to:

    • Prepare a migration to a newer version of toolchain components.
    • Port FreeBSD to a new architecture
    • Upgrade from a FreeBSD that ships with GCC 4.2 to a version that ships with clang 3.5+ (which needs a more modern toolchain than GCC 4.2 to bootstrap).

    The initial external toolchain work only supported clang. It has been extended to support recent GCC (4.9.1 has been tested) and recent binutils (2.24 and 2.25).

    A large number of fixes have been committed to HEAD to support incompatible behaviour changes between ld(1) from binutils 2.17.50 (the version in base) and binutils 2.24+.

    A large number of warnings have been deactivated when building the kernel to make sure it is possible to build the kernel with recent GCC (first 4.6 and then 4.9.1)

    The build system has been changed to build libc++ as the C++ standard library implementation when a recent enough GCC (4.6+) is used to build world.

    To simplify using an external toolchain, the following pre-seeded configurations have been added to the ports tree:

    • amd64-xtoolchain-gcc
    • powerpc64-xtoolchain-gcc
    • sparc64-xtoolchain-gcc

    Those packages will depend on special versions of GCC (minimalistic cross-built ready GCC) and on binutils. To use them, run: make CROSS_TOOLCHAIN=powerpc64-gcc TARGET=powerpc TARGET_ARCH=powerpc64

    As a result of this effort, it is possible to successfully build and run a kernel and world built with GCC 4.9.1 and binutils 2.24 on sparc64, amd64 (with minor tweaks), powerpc and powerpc64.

    Open tasks:

    1. Patch GCC 4.9 to support FreeBSD mips, arm and aarch64 and submit the patches to upstream.

    2. Adapt and upstream the aarch64 patches for binutils 2.25.

    3. Add more pre-seeded configurations.


    FreeBSD on Google Cloud

    Links
    The script used to create gcloud images URL: https://github.com/swills/FreeBSD-gcloud
    More detail on how to create and use a gcloud image URL: https://plus.google.com/112202779615695172291/posts/eYajb8JKerY

    Contact: Steve Wills <swills@FreeBSD.org>

    Google Cloud is a cloud computing platform that allows users to run hosted services and servers in a cloud maintained by Google. The goal of this project is to provide an easy way to create and manage FreeBSD installations running on Google Cloud.

    The good news:

    FreeBSD 10.1 runs fine. You can create an image and start it up and login via standard ssh, via the gcloud command or via the web console (ssh in a web browser window). More details on how to do all this can be found in the links. Basically, you should be able to gcutil addimage freebsd-101-release-amd64-20150101032704 gs://swills-test-bucket/FreeBSD-10.1-RELEASE-amd64-20150101032704.tar.gz

    Then spin up an image using gcloud compute instances create --zone us-central1-b --image freebsd-101-release-amd64-20150101032704 --boot-disk-size 20GB gtest1

    These commands are part of the google-cloud-sdk port, which contains all the commands to interact with Google Cloud. There is also a google-daemon port which is used in running instances to create users and set them up and a google-startup-scripts port which handles running startup/shutdown scripts as specified in node metadata.

    Additionally, the firstboot-growfs port has been brought back so that new instances will grow their root filesystem. (Thanks to Colin Percival for having created that port initially.)

    There is also a firstboot-freebsd-update port which can be used to update a system on first boot but is currently disabled (see below). Similarly, the firstboot-pkgs port/scripts will install specified packages on first boot.

    Overall, Google Cloud Compute is quite nice; instances spin up in about 60 seconds and it is very reasonably priced with automatic discounts for longer term usage. There is a $300 credit for first time users that also makes it free to try out. That credit covers quite a lot of time, and the instances are pretty fast, as well, even the ones without SSDs.

    The bad news:

    Google does not make sharing non-official images as easy as AWS, so you have to create your own using my public tar file. The tar file was created using the script in the links section. That script can be used to produce customized images, even though there are no official image (nor will there be any time soon).

    There are some issues running FreeBSD on Google Cloud, listed in the tasks section.

    Open tasks:

    1. The 8 and 16 cpu instances seem to reboot randomly.

    2. Repeated UFS panics that Google folks have reported, but I do not think those are particular to Google Cloud. The panic message is "ffs_valloc dup alloc".

    3. Running freebsd-update causes the system to become unbootable, so updates do not work. (Reboots work fine otherwise.)

    4. There is no gcimagebundle command in the Ports Collection so you cannot easily create an image from a running machine.

    5. There are a few minor issue with the startup script that is supposed to regenerate ssh keys (for when you create an image from an existing system).

    6. 10.1 works, but 10.0 does not boot; other versions remain untested.

    7. The kern.vm_guest sysctl node does not detect that it is in a guest.

    8. The vtnet driver needs wq disabled on 16 cpu boxes, but it is just disabled everywhere for now since that is easier.

    9. There is work needed for the Google safe_format_and_mount command which formats and mounts newly attached disks, but this is just a nicety really.

    10. I need to look into irq affinity for vtnet.

    11. We need to support virtualized clocks; bryanv@ is working on this. In fact, all his ongoing work in the virtualization area would probably make things work better.

    12. It would be nice if there was the ability to disable the spinner before the loader, which clutters up the console log. The ability to disable it is in HEAD; hopefully it will be MFCd to 10-STABLE before 10.2.


    FreeBSD on the Acer C720 Chromebook

    Links
    URL: http://blog.grem.de/pages/c720.html

    Contact: Michael Gmelin <freebsd@grem.de>

    The Acer C720 Chromebook is a powerful but inexpensive laptop designed to run Google's Chrome OS. This project aims to bring FreeBSD to the C720, providing an easy way for people to experience FreeBSD on hardware which is widely available and inexpensive.

    As of this update, most system features work, including the keyboard, WiFi, sound, VESA graphics, touchpad, and USB. The battery life is a reasonable 5 to 6 hours (compare to the published 8.5 hour lifetime for Chrome OS.

    Open tasks:

    1. Streamline patches and merge them into HEAD.

    2. Make suspend/resume work (depends on Haswell support).


    Git Integration

    Links
    URL: https://lists.freebsd.org/mailman/listinfo/freebsd-git
    URL: https://www.kernel.org/pub/software/scm/git/docs/git-svn.html
    URL: https://github.com/git/git/commit/83c9433e679635f8fbf8961081ea3581c93ca778
    URL: https://wiki.freebsd.org/GitWorkflow
    URL: https://github.com/freebsd/freebsd
    URL: https://bugs.freebsd.org/bugzilla

    Contact: Git discussion list <freebsd-git@FreeBSD.org>

    Several FreeBSD developers have expressed interest in improving the tools and documentation to facilitate the use of the Git source code management (SCM) system when working with FreeBSD code. Some highlights of the work in this area include the following:

    • At Alfred Perlstein's request, a new mailing list freebsd-git@FreeBSD.org was created for discussion of git use in the FreeBSD project.
    • Alfred Perlstein submitted a patch to git. This patch allows a developer to work on a source code tree in git and use git-svn to push changes from this tree directly to a Subversion repository and set Subversion properties. Before this patch, git-svn did not properly set Subversion properties. This is important for FreeBSD developers because the FreeBSD Subversion repo will block commits which do not properly set certain Subversion properties. The git project accepted this change in changeset 83c9433.
    • Alfred Perlstein updated the Git Workflow wiki document to include information for using git-svn to commit to the FreeBSD Subversion repository.
    • Bartek Rutkowski wrote a script which integrates Github and FreeBSD Bugzilla. When a user files a Github pull request against the FreeBSD source code tree on Github, this script will open a new PR in FreeBSD Bugzilla. This will allow users to contribute code and patches via Github pull requests, and have the request tracked by FreeBSD developers in Bugzilla. Github pull requests cannot currently be directly merged into the FreeBSD source tree on Github, because the main source code repository is currently Subversion. The FreeBSD source code tree on Github is a read-only mirror of the FreeBSD Subversion repository. Craig Rodrigues coordinated with Bartek Rutkowski and bugmeister@FreeBSD.org to move forward on this, and provide Bartek Rutkowski with enough access to Bugzilla to open PR's via a script.

    Open tasks:

    1. The Github integration script is not deployed yet and is not active for all pull requests against the FreeBSD source tree on Github. Bartek Rutkowski and bugmeister@FreeBSD.org need to work out the final details for deploying this script into production. The script must be accessible via HTTP POST requests because it uses the Github REST API. Bartek Rutkowski and bugmeister@FreeBSD.org need to reach agreement on where this script lives, and do a security audit.


    Jenkins Continuous Integration for FreeBSD

    Links
    Jenkins CI server in FreeBSD cluster URL: https://jenkins.freebsd.org
    FreeBSD and Jenkins OS Testing URL: http://jenkins-ci.org/content/freebsd-project-use-jenkins-os-testing
    Kyua and Jenkins Testing Framework for BSD URL: https://wiki.freebsd.org/201411DevAndVendorSummit?action=AttachFile&do=view&target=kyua_jenkins.pdf
    PAM authentication problems in FreeBSD URL: https://issues.jenkins-ci.org/browse/JENKINS-21507
    Issue to update Jenkins to JNA 4.1.0 for FreeBSD URL: https://issues.jenkins-ci.org/browse/JENKINS-24521
    Kyua Quickstart Guide URL: https://github.com/rodrigc/kyua/wiki/Quickstart-Guide
    Igor tool for proofreading documentation URL: http://www.freshports.org/textproc/igor/
    FreeBSD_Doc-igor Jenkins build URL: https://jenkins.freebsd.org/job/FreeBSD_Doc-igor
    FreeBSD_HEAD_sparc64 Jenkins build URL: https://jenkins.freebsd.org/job/FreeBSD_HEAD_sparc64/
    Susan Stanziano from Xinuous ran kyua tests URL: https://lists.freebsd.org/pipermail/freebsd-testing/2014-November/000609.html
    Andy Zhang from Microsoft ran kyua tests URL: https://lists.freebsd.org/pipermail/freebsd-testing/2014-December/000697.html
    Ngie Cooper imported NetBSD tests URL: https://lists.freebsd.org/pipermail/svn-src-all/2014-October/092212.html
    Steve Wills ran tests in Google Compute Engine URL: http://lists.freebsd.org/pipermail/freebsd-testing/2015-January/000713.html
    Kyua submitted to Homebrew project URL: https://github.com/Homebrew/homebrew/pull/32346
    Brian Gardner submits jtreg tests URL: https://github.com/freebsd/freebsd-ci/pull/3
    Ahmed Kamal offers to help with Saltstack URL: https://lists.freebsd.org/pipermail/freebsd-testing/2015-January/000723.html
    MIPS builds URL: https://lists.freebsd.org/pipermail/freebsd-testing/2015-January/000722.html

    Contact: Craig Rodrigues <rodrigc@FreeBSD.org>
    Contact: Jenkins Administrators <jenkins-admin@FreeBSD.org>
    Contact: FreeBSD Testing <freebsd-testing@FreeBSD.org>

    Since the last status report, many people have contributed help in various areas to help with Continuous Integration and Testing in FreeBSD. Some of the highlights include:

    • The Jenkins project mentioned on their blog how FreeBSD is using Jenkins and kyua to run OS-level tests.
    • Craig Rodrigues submitted patches to upgrade Jenkins to use JNA 4.1.0. The Jenkins project accepted these patches [JENKINS-24521] in the Jenkins 1.586 release. This fixed problems with PAM authentication support in Jenkins on FreeBSD [JENKINS-21507].
    • Craig Rodrigues gave a presentation "Kyua and Jenkins Testing Framework" for BSD at the Developer and Vendor summit on November 3, 2014 in San Jose, California. In the presentation, Craig Rodrigues described how, for every commit to the FreeBSD source tree, nearly 3000 tests are run using kyua inside a bhyve virtual machine. The kyua test results are exported to JUnit XML format, which is then used by Jenkins to generate web-based test reports with graphs.
    • Li-Wen Hsu set up a Jenkins build named FreeBSD_Doc-igor to run the Igor tool written by Warren Block. Igor proofreads FreeBSD documentation and reports various errors.
    • Craig Rodrigues set up a Jenkins build named FreeBSD_HEAD_sparc64 to build the FreeBSD HEAD branch for the sparc64 architecture
    • Ngie Cooper imported more tests from NetBSD. After this import, there are now over 3000 tests in the /usr/tests directory.
    • Susan Stanziano from Xinuous ran kyua tests and provided feedback about test errors, running the tests in a bhyve VM.
    • Andy Zhang from Microsoft ran kyua tests and provided feedback about test errors running in a Hyper-V 2012R2 VM.
    • Steve Wills ran the FreeBSD tests in Google Compute Engine and provided the test results.
    • Craig Rodrigues submitted a formula to create a package for kyua in the Homebrew packaging system on OS X. The Homebrew project accepted this. Now, kyua can easily be installed on OS X via a Homebrew package. Hopefully this will make it easier to share more test infrastructure and scripts with OS X.
    • Craig Rodrigues submitted to the Debian project a kyua package. Approval for this is still pending. A package will make it much easier to install kyua on Linux distributions which use Debian packages such as Debian, Ubuntu, and Linux Mint. Hopefully this will make it easier to share more test infrastructure and scripts with Linux.
    • Brian Gardner submitted scripts to run the Regression Test Harness for OpenJDK (jtreg). The test results are in JUnit XML format, which can be natively imported into Jenkins.
    • Ahmed Kamal, an experienced devops expert and past contributor to the Ubuntu project, offered to help Craig Rodrigues with improving the automation and deployment of Jenkins nodes in the FreeBSD cluster using the Saltstack automation framework. Ahmed is interested in helping the FreeBSD project.
    • Craig Rodrigues worked with Adrian Chadd to set up Jenkins builds of MIPS targets. The next step will be to get kyua tests running inside a QEMU MIPS VM.

    Open tasks:

    1. Set up more builds based on different architectures.

    2. Improve the maintenance of nodes in the Jenkins cluster using devops frameworks such as Saltstack.

    3. Get feedback for improving the Kyua Quickstart Guide.

    4. People interested in helping out should join the freebsd-testing@FreeBSD.org list.


    Migration to ELF Tool Chain Tools

    Links
    URL: http://elftoolchain.sourceforge.net

    Contact: Ed Maste <emaste@freebsd.org>

    The ELF Tool Chain project provides BSD-licensed implementations of compilation tools and libraries for building and analyzing ELF objects. It started as part of FreeBSD but has moved to a standalone project to encourage wider participation from others in the open-source developer community. FreeBSD's libelf and libdwarf are now imported from upstream sources in contrib/elftoolchain.

    ELF Tool Chain provides a set of tools equivalent to the GNU Binutils suite. This project's goal is to import these tools into the FreeBSD base system so that we have a set of up-to-date and maintained tools that also provide support for new CPU architectures of interest, such as arm64.

    The following tools have now been imported and are available by setting the src.conf knob WITH_ELFTOOLCHAIN_TOOLS=yes:

    • addr2line
    • nm
    • size
    • strings
    • strip (elfcopy)

    A ports exp-run uncovered some bugs in these tools. The bugs are being fixed in the FreeBSD source tree and are in the process of being committed to the upstream project.

    ELF Tool Chain's readelf will be enabled as well once some missing functionality in ELF note parsing is added. ELF Tool Chain's elfcopy provides equivalent functionality to Binutils' objcopy, and accepts the same command-line arguments. For it to be a viable replacement for all uses of objcopy in the base system, it must gain support for writing portable exectuable (PE) format binaries, which are used by UEFI boot code.

    The ELF Tool Chain project does not currently provide replacements for as, ld, and objdump. For FreeBSD these tools will likely be obtained from the LLVM project.

    This project was sponsored by The FreeBSD Foundation.

    Open tasks:

    1. Import readelf.

    2. Add missing functionality to readelf.

    3. Add missing functionality to elfcopy and migrate the base system build.

    4. Fix issues found by fuzzing inputs to the tools.

    5. Switch the default to WITH_ELFTOOLCHAIN_TOOLS.


    pkg(8)

    Links
    URL: https://github.com/freebsd/pkg

    Contact: The pkg team <pkg@FreeBSD.org>

    The package development team has released pkg(8) 1.4. This release fixes lots of bugs and adds some new features:

    • Stricter checking of paths passed via the plist
    • Change the ABI string to be closer to MACHINE_ARCH
    • Add three-way merge functionality
    • Add conservative upgrade support for multi repository configurations
    • Multirepository priority

    An important part of the development direction for the 1.4 release was stabilizing the existing features and improving the pkg(8) experience on small/embedded machines (reducing memory usage and speeding up operations).

    pkg(8) is not only the FreeBSD Package Manager, but also the Package Manager for DragonflyBSD. Support has been added to build pkg(8) on OS X and Linux. This work will allow other Operating Systems the option of adopting pkg(8) to manage their packages and bring new developers into the project.

    Open tasks:

    1. Add more regression tests.

    2. Package the FreeBSD base system.

    3. Allow using mtree as a plist when creating a package.

    4. Implement flexible dependencies.

    5. Test the development branch.

    6. More developers are needed, check the Issues on Github.



    Kernel


    FreeBSD Xen

    Links
    FreeBSD PVH DomU wiki page URL: http://wiki.xen.org/wiki/FreeBSD_PVH
    FreeBSD PVH Dom0 wiki page URL: http://wiki.xen.org/wiki/FreeBSD_Dom0

    Contact: Roger Pau Monné <royger@FreeBSD.org>
    Contact: Justin T. Gibbs <gibbs@FreeBSD.org>

    During this quarter almost all pending Xen changes have been committed, enabling FreeBSD to be used as Dom0 under the new PVH mode. The set of features supported by FreeBSD is still limited, but it should allow for basic usage of FreeBSD as Dom0. Support for booting Xen from the FreeBSD boot loader will be committed very soon to HEAD.

    Apart from testing on a variety of hardware, work has now shifted to improve PVH support in Xen itself in order to have feature parity with a traditional PV Dom0 and to declare the PVH ABI as stable.

    Regarding guest improvements (running FreeBSD as a DomU), there is also ongoing work to add unmapped IO support to Xen blkfront, which is blocked pending some modifications to the generic bounce buffer code.

    This project was sponsored by Citrix Systems R&D, and Spectra Logic Corporation.

    Open tasks:

    1. Test on different hardware.

    2. Improve the performance of the netback and blkback backends.

    3. Work with upstream Xen to improve PVH and make it stable.

    4. Improve generic bounce buffer code for unmapped bios in order to support blkfront alignment requirements.


    Linux Emulation Layer, the Linuxulator

    Links
    URL: https://svnweb.freebsd.org/base/user/dchagin/lemul/
    URL: https://reviews.freebsd.org/differential/query/i9Ua2XMYQtNX/

    Contact: Dmitry Chagin <dchagin@FreeBSD.org>

    The main goal of the Linux emulation layer project is the execution on FreeBSD of multithreaded Linux applications that require the glibc library version 2.20 or later to be available. Glibc 2.20 requires a Linux kernel (or emulation thereof) of version 2.6.32 or later. The main obstacle preventing this is that the current Linuxulator uses native FreeBSD processes for emulating Linux threads. This leads to several problems, including problems with process reparenting and dethreading, wait() and signal handling. It would be much better to reuse the FreeBSD kernel code for thread management than to create a completely new codebase for pseudothread management in the Linuxulator.

    At present, the linux emulation layer project has implemented all of the necessary system calls for supporting glibc 2.20, and more, bringing the emulated Linux kernel version to 2.6.32:

    • Using native threads for emulating Linux threads
    • Implemented VDSO support, including DWARF for signal trampolines, which are needed for stack unwinding in pthread_cancel()
    • Implemented the "vsyscall hack", used by some Linux-based distributions, including CentOS 6
    • Implemented the epoll() system call emulation
    • Added support for x86_64
    • Many bugs were fixed

    The project's code is located in the FreeBSD Project's Subversion repository at base/user/dchagin/lemul (a little bit old). To facilitate merging the improvements back to head, several patches have been placed on reviews.FreeBSD.org with the tag #lemul. Nearly half of the patches have already been approved by Ed Maste and Edward Tomasz Napierała.

    Open tasks:

    1. Review and merge the lemul branch to head within the next month or two.

    2. Implement native and Linuxulator inotify() system calls.

    3. Implement the ptrace() system call for the x86_64 Linuxulator.

    4. Implement the signalfd() and timerfd() system calls for the Linuxulator.

    5. Implement Priority Inheritance Futexes for the Linuxulator.

    6. Extend xucred support, required for many Linux applications.


    PCI SR-IOV Infrastructure

    Links
    URL: https://github.com/rysto32/freebsd/commits/iov_ixl

    Contact: Ryan Stone <rstone@FreeBSD.org>

    PCI Single Root I/O Virtualization (SR-IOV) is an optional part of the PCIe standard that provides hardware acceleration for the virtualization of PCIe devices. When SR-IOV is in use, a function in a PCI device (known as a Physical Function, or PF) will present multiple Virtual PCI Functions (VF) on the PCI bus. These VFs are fully independent PCI devices that have access to the resources of the PF. For example, on a network interface card, VFs could transmit and receive packets independently of the PF.

    The most obvious use case for SR-IOV is virtualization. A hypervisor like bhyve could instantiate a VF for every VM and use PCI passthrough to assign the VFs to the VMs. This would allow multiple VMs to share access to the PCI device without having to do any expensive communication with the hypervisor, greatly increasing the performance of I/O within a VM.

    Work on the core PCI infrastructure is complete and undergoing review. Currently it is planned to commit the PCI infrastructure to head by the end of January.

    In addition to the PCI infrastructure, individual PCI drivers must be extended to implement SR-IOV. An SR-IOV implementation is in progress for the ixl(4) driver, which supports the Intel XL710 family of 40G and 10G NICs. Currently it is planned to have this in review by the end of January. An implementation for ixgbe(4) is also in progress, but there is no timeline for completion.

    This project was sponsored by Sandvine Inc..


    Process Management

    Contact: Konstantin Belousov <kib@FreeBSD.org>
    Contact: Peter Holm <pho@FreeBSD.org>

    There were several improvements made to FreeBSD's process management last quarter.

    The Reaper facility was added, allowing a process to reliably track the running and exiting state of the whole subtree of its processes. It is intended to improve tools like timeout(1) or poudriere, by making it impossible for a runaway grandchild to escape the controlling process. The feature was designed based on similar facilities in DragonFlyBSD and Linux, with some references to Solaris contracts. Committed to HEAD in r275800.

    The FreeBSD suspension code does not ensure that the system, both software and hardware, is in a steady and consistent state. One aspect is usermode process activity, which is not yet stopped, continuing to making requests to the hardware. It is not realistic to expect drivers to be able to correctly handle the calls after SUSPEND_CHILD.

    We developed a facility to stop usermode threads at safe points, where they are known to not own and to not wait for kernel resources, in particular, not waiting for device requests finishing. It is based on the existing single-threading code, but extending it to allow external thread to put some processes into stopped state. Also, a facility to sync filesystems before suspend was added, to ensure that consistent metadata and as much as possible of the cached user data are on stable storage, to minimize the damage that could be caused by a failed resume.

    The code stressed some parts of the system and has led to discovery of a number of bugs in different areas, including process management, buffer cache, and syscall handlers. The bugs were fixed, and the fixes and features commmitted by a series culminating in r275745.

    During the work described above, it was noted that process spinlock duties are significantly overloaded (the same is true for the process lock). The spinlock was split into per-feature locks in r275121. As a result, it was also possible to eliminate recursion on it in r275372.

    This project was sponsored by The FreeBSD Foundation.


    Secure Boot

    Links
    URL: https://wiki.freebsd.org/SecureBoot

    Contact: Edward Tomasz Napierała <trasz@FreeBSD.org>

    UEFI Secure Boot is a mechanism that requires boot drivers and operating system loaders to be cryptographically signed by an authorized key. It will refuse to execute any software that is not correctly signed, and is intended to secure boot drivers and operating system loaders from malicious tampering or replacement.

    This project will deliver the initial phase of secure boot support for FreeBSD and consists of:

    • creating ports/packages of the gnu-efi toolchain, Matthew Garrett's shim loader, and sbsigntools
    • extending the shim to provide an API for boot1.efi to load and verify binaries signed by keys known to the shim
    • writing uefisign(8), a BSD-licensed utility to sign EFI binaries using Authenticode, as mandated by the UEFI specification.

    This project was sponsored by The FreeBSD Foundation.

    Open tasks:

    1. Ensure that the signature format properly matches UEFI spec requirements.

    2. Verify that correctly signed, incorrectly signed, and unsigned loader components are handled properly.

    3. Investigate signed kernel ELF objects (including modules).


    Timer Function Support for Linuxulator

    Contact: Bjoern A. Zeeb <bz@FreeBSD.org>

    Since 2006, initial support for Linux timer function compatibility support was present but untested. This update corrects the initial implementation and makes it available to the 32-bit Linuxulator on amd64, not just on i386.

    Starting with FreeBSD 10.1, this enables users to run another FPGA high-level synthesis toolchain and emulation platform on a FreeBSD system.

    This project was sponsored by DARPA, and AFRL.


    Updating OpenCrypto

    Links
    r275732 changeset URL: https://svnweb.freebsd.org/changeset/base/r275732
    FreeBSD Foundation announces IPsec Enhancement Project URL: http://freebsdfoundation.blogspot.com/2014/08/freebsd-foundation-announces-ipsec.html

    Contact: John-Mark Gurney <jmg@FreeBSD.org>

    The project adds support for AES-GCM and AES-CTR modes to the OpenCrypto framework. Both software and AES-NI accelerated versions are functional, working and committed. Ermal Luçi (eri@) is working on adding support for the additional modes to IPsec.

    This project was sponsored by The FreeBSD Foundation, and Netgate.

    Open tasks:

    1. Commit the port that provides the NIST KAT vectors so that the tests committed can run.



    Architectures


    FreeBSD on POWER8

    Links
    URL: https://wiki.freebsd.org/POWER8
    URL: http://www.tyan.com/campaign/openpower/

    Contact: Nathan Whitehorn <nwhitehorn@freebsd.org>
    Contact: Justin Hibbits <jhibbits@freebsd.org>
    Contact: Adrian Chadd <adrian@freebsd.org>

    IBM and the OpenPOWER Foundation are pushing for a wider software and hardware ecosystem for POWER8-based systems. Beginning January 3, we have been doing bringup work on a Tyan GN70-BP010 POWER8 server, a quad-core 3 GHz system with 32 hardware threads.

    The main target for the port is the PowerKVM hypervisor provided on OpenPOWER hardware. This uses the same software interfaces as the PowerVM hypervisor already supported on earlier POWER hardware. The target is to have this operation mode fully supported by FreeBSD 10.2. FreeBSD currently runs under the hypervisor when using a mass storage driver other than the built-in virtualized SCSI; the issues with the SCSI driver should be solved shortly.

    The longer-term goal is to also operate on the bare system. This requires interaction with the OPAL system firmware and the development of device drivers for the on-board PCI, console, and interrupt controller hardware. As of January 4, the FreeBSD kernel had printed initial messages to the console.

    This project was sponsored by FreeBSD Foundation.

    Open tasks:

    1. Fix virtualized SCSI driver in PowerKVM.

    2. Write OPAL drivers.

    3. Integrate loader(8) with petitboot bootloader.


    FreeBSD/arm64

    Links
    URL: https://wiki.freebsd.org/arm64
    URL: https://github.com/FreeBSDFoundation/freebsd/tree/arm64-dev

    Contact: Andrew Turner <andrew@FreeBSD.org>
    Contact: Ed Maste <emaste@FreeBSD.org>
    Contact: Zbigniew Bodek <zbb@semihalf.com>

    There is growing interest in ARM's 64-bit architecture. Officially named AArch64, it is also known as ARMv8 and arm64. Andrew Turner started initial work on the FreeBSD/arm64 port at the end of 2012.

    The FreeBSD Foundation is now collaborating with ARM, Cavium, the Semihalf team, and Andrew Turner to port FreeBSD to arm64, and significant progress was made on the port over the last quarter of 2014.

    As of the end of the year, FreeBSD boots to single-user mode on arm64, executing both static and dynamic applications. Patches in review allow FreeBSD to boot to multi-user mode, and these are expected to be merged soon. This includes implementing many stub functions in userland and the kernel. With this, FreeBSD has booted to multi-user mode on both the ARM Foundation Model and the QEMU full system emulation.

    Cavium has supplied a software simulator of their Thunder X hardware. Bringup of FreeBSD has started on this including writing new drivers for the ARM Generic Interrupt Controller v3 (GICv3) and a preliminary driver for the PCIe root complex. With these, FreeBSD is able to boot on this simulator in preparation for testing on hardware. Further work is progressing to add full PCIe bringup and to add support for the GICv3 Interrupt Translation Services (ITS) for MSI-X.

    Further improvements have been made to the loader to allow it to take the Flattened Device Tree data from UEFI and pass it to the kernel. In the kernel, busdma, CPU identification, and improvements to interrupt handling have been made, along with preliminary KDB support.

    Hardware for testing the port will be installed in the FreeBSD Test Cluster hosted by Sentex Communications. The first reference platform, Cavium's ThunderX, is expected to arrive in the cluster in mid-January.

    This project was sponsored by The FreeBSD Foundation, ARM, and Cavium.

    Open tasks:

    1. Bring up and test kernel support on real hardware.

    2. Implement the remaining userland libraries and binaries.

    3. Produce installable images.



    Userland Programs


    libxo: Generate Text, XML, JSON, and HTML Output

    Links
    libxo: The Easy Way to Generate text, XML, JSON, and HTML output. URL: http://juniper.github.io/libxo/libxo-manual.html

    Contact: Marcel Moolenaar <marcel@FreeBSD.org>

    Many FreeBSD utilities provide insight into the operational state of a running FreeBSD system and as such are used regularly to monitor the system. These utilities provide their output in a human readable form and sometimes even optimized for the limited width of traditional terminals. Often times these utilities are used by other programs that want to present the output in different ways or as part of other user interfaces. For such use cases, it is infinitely better to work with machine-readable output instead of human-readable output.

    Juniper Networks has created a library called libxo, which makes it easy for utilities to emit output in various formats. By default, text output is emitted, but with the introduction of the --libxo option this can be changed to XML, JSON, and HTML. The FreeBSD project has imported this library into the base system and is in the process of rewriting utilities to use libxo.

    Related to this, FreeBSD now also has the xo utility that allows scripts to grow the same capabilities. Instead of using echo or printf in scripts, output can be done using the xo utility.

    The df, w, and wc utilities have been converted to use libxo. The netstat utility is in the process of being converted and others are planned.

    Open tasks:

    1. FreeBSD contains a lot of utilities that could benefit from having the ability to emit various output formats, too many for a few people to convert in time for FreeBSD 11.0-RELEASE. If you or your company would like to see a particular utility converted, consider learning about libxo and trying to perform the conversion of said utility to help out.


    mandoc(1) Support

    Links
    URL: http://mdocml.bsd.lv

    Contact: Baptiste Daroussin <bapt@FreeBSD.org>
    Contact: Ulrich Spoerlein <uqs@FreeBSD.org>
    Contact: The Documentation Team <docs@FreeBSD.org>

    mandoc(1) has been made the default manual page formatter on HEAD — man(1) will use mandoc(1) to format manual pages by default, then fall back to groff(1) if it fails.

    This change also fixes an issue with the FreeBSD man(1) command not being able to properly deal with ".so" in gzipped manual pages.

    The documentation team has spent a lot of time fixing issues reported by mandoc(1) in the FreeBSD manual pages. This greatly improves the quality of our manual pages.

    Most manual pages with remaining issues are from contrib/, for which changes should be reported and fixed upstream.

    The "manlint" target has also been switched to use mandoc -Tlint, which results in the target being more useful when working on manual pages.

    Some groff(1) versus mandoc(1) formatting differences have been spotted and reported to mandoc's upstream developers.

    Open tasks:

    1. Switch makewhatis(1) to the version shipped with mandoc(1).

    2. Figure out a way to detect mandoc(1)-unfriendly manpages in ports and create catpages with groff(1) for them.

    3. Remove groff(1) from the base system.



    Ports


    GNOME on FreeBSD

    Links
    FreeBSD GNOME Team website URL: http://www.freebsd.org/gnome
    FreeBSD Team development repo URL: https://github.com/freebsd/freebsd-ports-gnome
    GNOME jhbuild buildbot wiki pages. URL: https://wiki.gnome.org/Projects/Jhbuild/FreeBSD

    Contact: FreeBSD GNOME Team <gnome@FreeBSD.org>

    The FreeBSD GNOME Team maintains the GNOME, MATE, and CINNAMON desktop environments and graphical user interfaces for FreeBSD. GNOME 3 is part of the GNU Project. MATE is a fork of the GNOME 2 desktop. CINNAMON is a desktop environment using GNOME 3 technologies but with a GNOME 2 look and feel.

    This quarter was an exciting time for the GNOME Team. We imported GNOME 3.14.0 and CINNAMON 2.2.16 into the ports tree. At the same time, we removed the old GNOME 2.32 desktop. And two weeks later we updated GNOME to 3.14.2 and CINNAMON to 2.4.2, which was collected while the preparation for the initial GNOME 3.14.0 import was under way.

    We moved our development repo to GitHub. The repo is structured as follows: the master branch is vanilla FreeBSD Ports, and we have theme branches for topics such as the porting of MATE 1.9 (the mate-1.10 branch) and GNOME 3.15 (the gnome-3.16 branch). The GNOME 3.14 branch (gnome-3.14) is not used or updated any more because the content has been committed to ports, but is kept around for the history.

    Open tasks:

    1. The GNOME website is stale. Work is starting on updating the development section. We could use some help here.

    2. MATE 1.10 porting is under way; the latest 1.9 releases are available in the mate-1.10 branch.

    3. GNOME 3.16 porting is under way, and is available in the gnome-3.16 branch.


    KDE on FreeBSD

    Links
    URL: https://freebsd.kde.org/
    URL: https://freebsd.kde.org/area51.php
    URL: https://wiki.freebsd.org/KDE
    URL: https://mail.kde.org/mailman/listinfo/kde-freebsd
    URL: http://portscout.freebsd.org/kde@freebsd.org.html

    Contact: KDE on FreeBSD team <kde@FreeBSD.org>

    The KDE on FreeBSD team focuses on packaging and making sure that the experience of KDE and Qt on FreeBSD is as good as possible.

    As mentioned last quarter, Alonso Schaich (alonso@) became a committer and since then has made good progress helping his mentors Raphael Kubo da Costa (rakuco@) and Max Brazhnikov (makc@) maintain all Qt and KDE-related ports.

    This quarter, Qt 5.3 was finally committed to the ports tree. Extensive work was required, including cleaning up and/or changing a lot of the Qt5 ports infrastructure to make it both easier to maintain the Qt ports as well as finally make it possible to build newer versions when older ones are already installed on the system.

    We have also updated KDE in our experimental area51 repository and committed several updates to other ports such as KDevelop and KDE Telepathy. Overall, we have worked on the following releases:

    • CMake 3.1.0 (in area51, exp-run in progress for it to be committed to the ports tree)
    • Calligra 2.8.6 (in area51)
    • KDE 4.14.2 (committed to ports), 4.14.3 (in area51)
    • KDE Telepathy 0.8.0 (committed to ports)
    • KDevelop 4.7.0 (committed to ports)
    • Qt 5.3.2 (committed to ports)

    Tobias Berner has contributed patches to update QtCreator to 3.3.0 as well as KDE Frameworks 5 ports which are under review for inclusion in our experimental area51 repository.

    Open tasks:

    1. Update Qt5 to 5.4.0.

    2. Try to contribute to the work on getting rid of HAL on FreeBSD, which seems to be gaining more traction recently.

    3. Add KDE Frameworks 5 ports to our experimental repository.


    Linux Emulation Ports

    Links
    contains additions for CentOS 6.5 64bit ports URL: https://github.com/allanjude/linux-ports
    contains a work in progress of the Fedora 20 ports URL: https://github.com/vassilisl/freebsd-linux_base-f20
    contains base Linux emulation enhancements required for 64 bit support URL: https://svnweb.freebsd.org/base/user/dchagin/lemul/

    Contact: Johannes Meixner <xmj@FreeBSD.org>
    Contact: Allan Jude <allanjude@FreeBSD.org>
    Contact: Vassilis Laganakos <vassilis@einval.com >

    The Linux emulation stack in the ports collection was upgraded to include CentOS 6.6 on November 11. After smoothing out several bugs that had been introduced, we were able to bump the default version of the Linux userland from Fedora 10 to CentOS 6.6 on December 9th. Providing a more modern Linux userland and support libraries allows a large number of Linux applications to be run on FreeBSD.

    The goal behind providing an updated Fedora-based userland is to support more desktop-oriented applications, which require newer libraries than are provided by CentOS 6. Providing 64-bit versions of the CentOS userland will allow applications that are only available in 64-bit form, such as a number of scientific and math related applications, to be run on FreeBSD. Support for 64-bit binaries also requires the 64-bit Linux kernel emulation layer from the lemul branch, which requires more testing and review before being merged into HEAD.

    This project was sponsored by Perceivon Hosting Inc., and ScaleEngine Inc..

    Open tasks:

    1. Update Allan Jude's 64-bit Linux ports to CentOS 6.6.

    2. Add Fedora 20 base/userland ports to ports/head.

    3. Refactor Mk/bsd.linux-*.mk to facilitate the above additions.

    4. Promote testing and merging of Dmitry Chagin's lemul branch. (Updated Linux kernel emulation, and 64-bit support)


    The Graphics Stack on FreeBSD

    Links
    Graphics stack roadmap and supported hardware matrix URL: https://wiki.freebsd.org/Graphics
    Graphics stack team blog URL: http://blogs.freebsdish.org/graphics/
    Ports development tree on GitHub URL: https://github.com/freebsd/freebsd-ports-graphics

    Contact: FreeBSD Graphics team <freebsd-x11@FreeBSD.org>

    Mesa was upgraded to 10.3, then 10.4 for FreeBSD 10.1-RELEASE and 11-CURRENT. We test release candidates and therefore this port is now usually updated shortly after a new release. Mesa 10.x brings huge improvements in terms of OpenGL standards support, performance and stability, especially for Radeon owners. Mesa 9.1 is kept for FreeBSD 9.x, but we have plans to fix this; see below.

    graphics/gbm and devel/libclc are new ports used by Mesa to implement OpenCL. The next step is to finish the port for Mesa's libOpenCL.so, named Clover. This will permit users to run OpenCL programs on Radeon GPUs for now.

    xserver was upgraded from 1.12 to 1.14. This is the last version of xserver supporting Mesa 9.1. Changes are described in an article on the blog. The most noticeable one is the switch from the input device detection back-end based on HAL to the one based on devd(8). hald(8) is still required by many desktop environments, but the X.Org server itself is free from it.

    xserver was the last port supporting the WITH_NEW_XORG knob. The knob is now completely removed. This was the occasion to add WITH_NEW_XORG and WITH_KMS to the list of deprecated knobs to help people clean up their make.conf. At the same time, the new-xorg alternate pkg repository was deprecated.

    After discussion, two options were enabled by default:

    • TEXTURE_FLOAT in graphics/dri, which allows Mesa to advertise the support for OpenGL 3.0+;
    • LCD_FILTERING in print/freetype2, which enables the subpixel rendering engine, improving font anti-aliasing.

    These two packages now provide a better user experience out-of-the-box. Users who are uncomfortable with the options may unset them and rebuild the ports. There is no need to rebuild anything else.

    On the kernel side, Tijl Coosemans added AGP support back to the TTM memory manager and therefore to the Radeon driver. His work was merged back to stable/10 and will be available in FreeBSD 10.2-RELEASE.

    We migrated our Ports development tree to Git and GitHub. Tracking changes in the official Ports tree and preparing patches is much easier. Furthermore, we can accept pull requests. All of the reasons behind this change are detailed on the blog and the workflow is described on the wiki.

    The XDC 2014 (X Developer's Conference) was a great conference. Reviving the relationship with the developers of the graphics stack was a success! A report is available on the blog.

    Our next items on the roadmap are:

    1. Provide FreeBSD 10.1-RELEASE's i915 driver to FreeBSD 9.x users through a new port. This is a work in progress, but it would allow us to remove Mesa 9.1 and make Mesa 10.4 available everywhere.
    2. Once Mesa 9.1 is gone, we can update xserver to 1.16.

    Open tasks:

    1. See the "Graphics" wiki page for up-to-date information.


    Wine/FreeBSD

    Links
    Wine wiki page URL: http://wiki.FreeBSD.org/Wine
    Wine on amd64 wiki page URL: http://wiki.FreeBSD.org/i386-Wine
    Wine homepage URL: http://www.winehq.org

    Contact: Gerald Pfeifer <gerald@FreeBSD.org>
    Contact: David Naylor <dbn@FreeBSD.org>
    Contact: Kris Moore <kmoore@FreeBSD.org>

    The Wine on FreeBSD project has been steadily forging ahead for the past three quarters and has updated the ports for the following versions:

    • Stable releases: 1.6.2 (3 port revisions)
    • Development releases: 1.7.16 through 1.7.33

    The ports have packages built for amd64 (available through the ports emulators/i386-wine and i386-wine-devel) for FreeBSD 8.4, 9.1+, 10.0+, and CURRENT.

    Accomplishments include:

    • Upstreaming 33 patches to fix Wine on FreeBSD — many thanks to Gerald for this work.
    • Migrating to the USES framework.
    • Building Wine with the X compositing extension.
    • Adding support for MPG123 and V4L.
    • Backporting changes made to the -devel ports to the stable ones and fixing minutiae here and there.
    • Creating a new Wine port for the Compholio patches.
    • Changing i386-wine(-devel) to set the LD_LIBRARY_PATH_RPATH variable.
    • Improving library bundling for i386-wine(-devel).
    • Various improvements to the patch-nvidia.sh script for i386-wine(-devel).
    • Various smaller changes.

    We would like to thank all the volunteers who contributed feedback or even patches. We would also like to welcome kmoore@ to the Wine team. He has been extensively involved in bringing wine-compholio to the Ports Collection.

    Future development on Wine will focus on:

    • Creating a 64-bit capable port of Wine (aka Wine64).
    • Creating a WoW64 capable port of Wine (aka Wine + Wine64).
    • Fixing directory listing on FreeBSD 8 and 9.

    Maintaining and improving Wine is a major undertaking that directly impacts end-users on FreeBSD, including many gamers. If you are interested in helping, please contact us. We will happily accept patches, suggest areas of focus, or have a chat.

    Open tasks:

    1. Open Tasks and Known Problems (see the Wine wiki page).

    2. FreeBSD/amd64 integration (see the i386-Wine wiki page).

    3. Porting WoW64 and Wine64.


    Xfce

    Links
    URL: https://wiki.freebsd.org/Xfce

    Contact: FreeBSD Xfce Team <xfce@FreeBSD.org>

    Xfce is a free software desktop environment for Unix and Unix-like platforms, such as FreeBSD. It aims to be fast and lightweight, while still being visually appealing and easy to use.

    During this quarter, the team has kept these applications up-to-date:

    • misc/xfce4-weather-plugin 0.8.5
    • science/xfce4-equake-plugin 1.3.6
    • sysutils/xfce4-netload-plugin 1.2.4
    • sysutils/xfce4-systemload-plugin 1.1.2
    • www/midori 0.5.9
    • x11/xfce4-taskmanager 1.1.0
    • x11/xfce4-whiskermenu-plugin 1.4.2
    • x11-wm/xfce4-desktop 4.10.3

    Two new ports have also been added (taken from our repository):

    • deskutils/xfce4-volumed-pulse
    • x11/xfce4-dashboard

    Moreover, we are working on the next stable release, with these ports being updated:

    • sysutils/xfce4-power-manager 1.4.2
    • x11/xfce4-dashboard 0.3.4
    • x11-wm/xfce4-session 4.11.1

    We sent some patches to upstream.

    • bug #11104, to keep 'wallpaper settings' in Ristretto with xfdesktop >= 4.11
    • bug #11249, add 'Hidden' option in desktop item editor (refused)
    • bug #11413, to use sysctl(3) and acpi_video(4) for backlight support

    A FAQ is being written D1305.

    Open tasks:

    1. Find a workaround for when acpi_video(4) is not functional (panel crashes); OpenBSD seems to have same problem.

    2. Clean up patch in order to add new panel plugin in ports tree.

    3. Continue to work on documentation, especially the Porter's Handbook.



    Documentation


    More Michael Lucas Books

    Links
    FreeBSD Mastery: Storage Essentials page URL: https://www.michaelwlucas.com/nonfiction/freebsd-mastery-storage-essentials
    blog URL: http://blather.michaelwlucas.com

    Contact: Michael Lucas <mwlucas@michaelwlucas.com>

    The first small FreeBSD Book, "FreeBSD Mastery: Storage Essentials" is available.

    Lucas is moving on to FreeBSD books on ZFS, Specialty Filesystems, and jails. They will hopefully be available by BSDCan 2015.

    Get status updates on his blog, or follow @mwlauthor on Twitter.

    Open tasks:

    1. Push BSDCan out to June, so he has more time to write the new books.


    New Translators Mailing List

    Contact: FreeBSD Translators Mailing List <freebsd-translators@FreeBSD.org>

    A new mailing list has been created for people translating FreeBSD documents and programs from English into other languages. Discussions can include methods, tools, and techniques. Existing translators are encouraged to join so there is a single point of contact. New translators and those who wish to help with translation are welcome.

    New members are asked to introduce themselves and mention the languages they are interested in translating.

    Open tasks:

    1. Encourage existing translators to join.

    2. Welcome and educate new volunteers.

    3. Work on implementing newer and easier translation systems and tools.



    Miscellaneous


    Creating Vagrant Images with Packer

    Links
    Blog Announcement URL: http://blogs.freebsdish.org/brd/2014/12/22/freebsd-packer-vagrant/
    Git Repo URL: https://github.com/so14k/packer-freebsd

    Contact: Brad Davis <brd@FreeBSD.org>

    We have developed a recipe to use Packer to create FreeBSD Vagrant images to run on VMware and VirtualBox.

    Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.

    Vagrant is a tool to create and configure lightweight, reproducible, and portable development environments.

    To get started, clone the Git repo and follow the directions in the README. More information is available from the Packer and Vagrant websites.


    FreeBSD Forum Software Migration

    Contact: FreeBSD Forums Administration Team <forum-admins@>

    With funding from the FreeBSD Foundation, the FreeBSD forums were migrated to XenForo software. The new software is far more capable and easy to use. While the entire forum team contributed, Daniel Geržo did an excellent job importing existing users and messages and bringing back the often-requested "Thanks" feature. The upgrade was completed in time to be ready for the influx of new users from the release of FreeBSD 10.1, and we have already seen an increase in usage.

    Developers with an @FreeBSD.org address can contact forum administrators to obtain the highly-desired "@" suffix on their forum user name along with a Developer flag.

    We want to thank the Foundation for making this possible, and the users for their patience and continued presence on the forums!

    This project was sponsored by The FreeBSD Foundation.

    Open tasks:

    1. Encourage more developers and users to try the new forums.

    2. Continue getting feedback from users for tuning and improvements.


    The FreeBSD Foundation

    Links
    URL: http://www.FreeBSDFoundation.org/
    FreeBSD Journal URL: http://freebsdjournal.com/

    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 community worldwide. Most of the funding is used to support FreeBSD development projects, conferences, and developer summits; purchase equipment to grow and improve the FreeBSD infrastructure; and provide legal support for the Project.

    We ended the year exceeding our fundraising goal, by raising over $2,372,132, from 1670 donors! Thank you to everyone who made a donation in 2014.

    We produced issues five and six of the FreeBSD Journal, ending the year with over 6300 subscribers, exceeding our first-year goal of 5000 subscribers. We also added the desktop/digital edition, so people can read the magazine from their browsers. We also hosted a meeting with the Journal Editorial Board and worked out the editorial calendar for the next two years. This includes topics and articles for the future issues.

    We were a gold sponsor of EuroBSDCon 2014, and a sponsor of the preceding Developer Summit. A few of our team members attended, which allowed us to have an informal face-to-face board meeting, with a focus on supporting the European region. Kirk McKusick gave a two-day FreeBSD tutorial and Erwin Lansing helped run the Developer Summit. We sponsored 5 FreeBSD contributors to attend the conference.

    We were a sponsor of the Grace Hopper Conference. Dru Lavigne gave an "introduction to FreeBSD" presentation, that was well attended. We also sponsored Shteryana Shopova to represent FreeBSD, along with Dru, at our booth.

    We were a sponsor of MeetBSD. Most of our team members attended this conference. Kirk McKusick gave a talk on BSD history. We also had a booth, and raised over $2,200 in donations. We sponsored one person to attend this conference.

    George organized and ran the two-day Silicon Valley Vendor and Developer Summit following MeetBSD. A lot of work gets started and accomplished at these summits, for example, Kirk worked with various folks to get the ino64 (64-bit inode numbers) project moving. It started in 2011 as a Summer of Code project and has sputtered since getting pushed into the system.

    In addition to the above conferences, we helped promote FreeBSD at the following conferences:

    LISA had a great turnout for Dru Lavigne's FreeBSD BoF talk.

    We visited a few large FreeBSD users in the Bay Area to discuss their use of FreeBSD, plans, and needs, and help facilitate collaboration between them and the Project.

    Cheryl Blain joined our board, bringing a strong background in business development and fundraising.

    We received the largest donation in our history, and our treasurer put together an endowment strategy for us to follow.

    We increased our FreeBSD marketing efforts to help promote and advocate for FreeBSD, as well as educate people on FreeBSD. Some our FreeBSD marketing highlights include:

    • Created the FreeBSD 10 brochure
    • Created the Get Involved brochure for recruiting
    • Created a testimonial flyer to encourage more companies to write FreeBSD testimonials for us.
    These flyers are available on the FreeBSD Foundation site for FreeBSD advocates to promote FreeBSD at conferences around the world. We also put ads for the Foundation and FreeBSD in the FreeBSD Journal and USENIX ;login: magazine.

    We are producing a monthly newsletter to highlight what we did the previous month to support the FreeBSD Project. We also produced our December semi-annual newsletter.

    We redesigned and launched phase 1 of our website. It should be easier to navigate and find the information you need to get help from or to help the Foundation.

    Glen Barber visited the Microsoft main campus and worked with Microsoft Hyper-V developers to resolve outstanding issues with providing FreeBSD images for the Microsoft Azure platform.

    Glen also visited the NYI colocation facility to install and configure new servers purchased by the Foundation.

    We finished the 10.1-RELEASE cycle.

    Our project development staff and contractors have been working on various projects to add features to and improve FreeBSD. Some of their reports are included in this overall report. Some projects that were worked on this quarter were adding support for 64-bit ARM architecture to FreeBSD, integration work on the vt(4) updated console and UEFI boot support, Secure Boot, refining the in-kernel iSCSI target and initiator stack, an autofs-based automount daemon, migrating to the ELF Tool Chain, and implementing modern AES modes in FreeBSD's cryptographic framework.

    To read more about how we helped support the FreeBSD Project and community, read our semi-annual newsletter.


    News Home | Status Home