FreeBSD src: A Publish-Only Repository for an Operating System's Core
The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....
At a glance
- What is it?
- The freebsd/freebsd-src repository is the public face of FreeBSD's source tree, a C-heavy codebase that powers servers, desktops, and embedded systems. It is a publish-only mirror, not a development hub, and that distinction matters for anyone considering it as a base for their own work.
- Who is it for?
- Adopt freebsd/freebsd-src if you need the canonical, authoritative source for building FreeBSD userland and kernels, or if you want to track the project's development branches. Do not use it if you expect a collaborative pull-request workflow; the repository is publish-only, and contributions go through the FreeBSD Project's own review systems.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 14, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What This Repository Actually Is
The freebsd/freebsd-src repository is the top level of the FreeBSD source directory, but it is not a typical open source project where pull requests are welcome. The description explicitly calls it a publish-only repository and mentions experimenting with 'simple' pull requests. That is a warning sign for anyone used to GitHub-centric development. FreeBSD is a thirty-year-old operating system with a large community, and its source tree is the foundation for servers, desktops, and embedded platforms. The repository is a mirror of the official tree, not a fork or a playground. If you want to contribute, you need to go through FreeBSD's own processes, which are not documented in this README. The repository exists to publish the code, not to manage its evolution.
The Source Tree Layout: Where Everything Lives
The README provides a roadmap that is essential for navigating the tree. The sys directory holds kernel sources, which is where most of the low-level work happens. The lib directory contains system libraries, and bin, sbin, usr.bin, and usr.sbin split user and system commands. The contrib directory is for third-party software, and crypto holds cryptographic libraries and commands. The stand directory has boot loader sources, which are critical for understanding how the system starts. The release directory contains makefiles and scripts for building releases and VM images, which is useful if you need to produce a custom image. The tests directory is for Kyua-based tests, and tools holds ancillary utilities that are not part of the build. This structure is conventional for a BSD system, but the separation between base system components and third-party code is clear, which helps when you need to isolate a specific piece of code.
Building FreeBSD from This Source
The README points to the Makefile in the top directory, which supports targets for building components or the whole system. It references build(7), config(8), and the FreeBSD handbook for setting make(1) variables. The handbook sections on 'make world' and kernel configuration are the canonical guides. The README does not give explicit commands, so you should not expect a quick 'make && make install' like a typical Linux package. The build process is intricate, with separate steps for building the toolchain, the kernel, and the userland. The targets directory mentions experimental DIRDEPS_BUILD, which is an alternative build system that is not the default. If you are new to FreeBSD, the README's pointers to the handbook are the right starting point, but you should be prepared to read the documentation before running anything.
The Publish-Only Model: A Real Limitation
The most significant limitation is the repository's publish-only nature. The description says it is experimenting with 'simple' pull requests, which implies that the standard workflow is not to accept contributions via GitHub pull requests. This is a failure mode for developers who expect to fork, modify, and submit changes. The FreeBSD Project has its own review system, likely Phabricator or a mailing list, but that is not mentioned in the README. If you need to contribute a patch, you cannot just open a pull request here. You must find the correct channel, which is a barrier. For users who only want to build or customize FreeBSD, this is not an issue, but for contributors, it is a critical difference from many other projects.
Alternatives: The Official FreeBSD Git Repository vs. This Mirror
The primary alternative is the official FreeBSD Git repository, which is hosted on the FreeBSD Project's own infrastructure, not on GitHub. The README mentions synchronizing your source tree with the Project's development branches, but it does not provide a direct URL. The official repository is the authoritative source for development, and it likely has a different workflow for contributions. In contrast, freebsd/freebsd-src is a mirror, which means it may lag behind the official tree or have a different branching strategy. The difference in approach is that the official repository is the place where changes are actually committed and reviewed, while this GitHub mirror is for public visibility and convenience. If you need the absolute latest code, you should use the official repository, not this mirror. The README's roadmap and build instructions apply to both, but the development process is not the same.
Licensing and Third-Party Code
The repository license is listed as NOASSERTION, which is not a standard open source license identifier. That is a red flag for anyone who needs to know the exact licensing terms. The README points to a COPYRIGHT file in the top directory, and it notes that additional copyright information exists in specific source directories. The cddl directory contains third-party software under the Common Development and Distribution License (CDDL), and crypto and secure have their own licensing considerations. The README does not specify a single license for the entire tree, which is common for an operating system with mixed components. You must check the COPYRIGHT file and the individual directories before redistributing any code. The NOASSERTION value means GitHub's license detection could not determine a single license, so do not assume the whole tree is under one license.
Maintenance and Upgrade Costs
The README does not provide specific release notes or a release schedule, but it mentions the Platforms page for supported architectures. The repository is not archived, and the default branch is main, but recent releases were not retrieved. This suggests that the repository is continuously updated, but the release process is separate, likely on the FreeBSD website. The cost of maintaining a custom FreeBSD build is high: you need to track the development branches, understand the build system, and handle the fact that the tree changes frequently. The tests directory provides a way to run tests with Kyua, which is a real tool for validating changes, but the README does not detail how to use it. If you adopt this repository, you should be prepared for a significant learning curve and a need to monitor the FreeBSD Project's announcements for updates.
Editorial conclusion
Adopt freebsd/freebsd-src if you need the canonical, authoritative source for building FreeBSD userland and kernels, or if you want to track the project's development branches. Do not use it if you expect a collaborative pull-request workflow; the repository is publish-only, and contributions go through the FreeBSD Project's own review systems. Before relying on it, verify your target architecture against the Platforms page, check the current branch's stability (stable vs. current), and confirm that the build tools and make(1) variables you plan to use match the documented handbook procedures. The repository is a mirror, so treat it as a snapshot of official development, not a living project you can fork with expectations of upstream merging.
Frequently asked questions
Is FreeBSD still used today?
The README describes FreeBSD as an operating system used to power modern servers, desktops and embedded platforms, developed by a large community for more than thirty years. It names advanced networking, security and storage features as the reason it became the platform of choice for busy web sites and embedded networking and storage devices.
Does make world build a kernel in the FreeBSD source tree?
No. The Makefile describes world as buildworld plus installworld, no kernel. Kernel targets are separate: buildkernel, installkernel, installkernel.debug, reinstallkernel, reinstallkernel.debug, and kernel, which is buildkernel plus installkernel.
Where do I get an official bootable FreeBSD image from GitHub?
Not from this repository, which is publish-only and has no GitHub releases. The README points to the release page under ftp/releases/ISO-IMAGES/ on download.freebsd.org for official bootable images.
Which variables limit the universe target in freebsd-src?
MAKE_JUST_KERNELS or WITHOUT_WORLDS restrict the build to kernels, and MAKE_JUST_WORLDS or WITHOUT_KERNELS restrict it to userland. Build documentation for the full target list is in build(7), with the handbook chapters on building userland and on kernels linked from the README.
How does the FreeBSD source tree decide what files are obsolete?
The check-old, check-old-dirs, check-old-files, check-old-libs, delete-old and delete-old-dirs targets all read ObsoleteFiles.inc at the top of the tree. The check variants list what the revision considers obsolete, and the delete variants remove those directories and files.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/freebsd-freebsd-src)