Contributing to FreeBSD

Jordan Hubbard

Sam Lawrance

Mark Linimon

Revision: 5a0d1d42d7
Legal Notice
Last modified on 2020-06-08 09:55:20 +0000 by Lorenzo Salvadore.

This article describes the different ways in which an individual or organization may contribute to the FreeBSD Project.

[ Split HTML / Single HTML ]

Table of Contents
1. What Is Needed
2. How to Contribute
3. Contributing to ports
4. Getting Started in Other Areas

So you want to contribute to FreeBSD? That is great! FreeBSD relies on the contributions of its user base to survive. Your contributions are not only appreciated, they are vital to FreeBSD's continued growth.

A large and growing number of international contributors, of greatly varying ages and areas of technical expertise, develop FreeBSD. There is always more work to be done than there are people available to do it, and more help is always appreciated.

As a volunteer, what you do is limited only by what you want to do. However, we do ask that you are aware of what other members of the FreeBSD community will expect of you. You may want to take this into account before deciding to volunteer.

The FreeBSD project is responsible for an entire operating system environment, rather than just a kernel or a few scattered utilities. As such, our TODO lists span a very wide range of tasks: from documentation, beta testing and presentation, to the system installer and highly specialized types of kernel development. People of any skill level, in almost any area, can almost certainly help the project.

Commercial entities engaged in FreeBSD-related enterprises are also encouraged to contact us. Do you need a special extension to make your product work? You will find us receptive to your requests, given that they are not too outlandish. Are you working on a value-added product? Please let us know! We may be able to work cooperatively on some aspect of it. The free software world is challenging many existing assumptions about how software is developed, sold, and maintained, and we urge you to at least give it a second look.

1. What Is Needed

The following list of tasks and sub-projects represents something of an amalgam of various TODO lists and user requests.

1.1. Ongoing Non-Programmer Tasks

Many people who are involved in FreeBSD are not programmers. The Project includes documentation writers, Web designers, and support people. All that these people need to contribute is an investment of time and a willingness to learn.

  1. Read through the FAQ and Handbook periodically. If anything is poorly explained, ambiguous, out of date or incorrect, let us know. Even better, send us a fix (Docbook is not difficult to learn, but there is no objection to ASCII submissions).

  2. Help translate FreeBSD documentation into your native language. If documentation already exists for your language, you can help translate additional documents or verify that the translations are up-to-date and correct. First take a look at the Translations FAQ in the FreeBSD Documentation Project Primer. You are not committing yourself to translating every single FreeBSD document by doing this — as a volunteer, you can do as much or as little translation as you desire. Once someone begins translating, others almost always join the effort. If you only have the time or energy to translate one part of the documentation, please translate the installation instructions.

  3. Read the FreeBSD general questions mailing list occasionally (or even regularly). It can be very satisfying to share your expertise and help people solve their problems; sometimes you may even learn something new yourself! These forums can also be a source of ideas for things to improve upon.

1.2. Ongoing Programmer Tasks

Most of the tasks listed here may require a considerable investment of time, an in-depth knowledge of the FreeBSD kernel, or both. However, there are also many useful tasks which are suitable for weekend hackers.

  1. If you run FreeBSD-CURRENT and have a good Internet connection, there is a machine which builds a full release once a day—every now and again, try to install the latest release from it and report any failures in the process.

  2. Read the FreeBSD problem reports mailing list. There may be a problem you can comment constructively on or with patches you can test. Or you could even try to fix one of the problems yourself.

  3. If you know of any bug fixes which have been successfully applied to -CURRENT but have not been merged into -STABLE after a decent interval (normally a couple of weeks), send the committer a polite reminder.

  4. Move contributed software to src/contrib in the source tree.

  5. Make sure code in src/contrib is up to date.

  6. Build the source tree (or just part of it) with extra warnings enabled and clean up the warnings. A list of build warnings can also be found from our CI by selecting a build and checking "LLVM/Clang Warnings".

  7. Fix warnings for ports which do deprecated things like using gets() or including malloc.h.

  8. If you have contributed any ports and you had to make FreeBSD-specific changes, send your patches back to the original authors (this will make your life easier when they bring out the next version).

  9. Get copies of formal standards like POSIX®. Compare FreeBSD's behavior to that required by the standard. If the behavior differs, particularly in subtle or obscure corners of the specification, send in a PR about it. If you are able, figure out how to fix it and include a patch in the PR. If you think the standard is wrong, ask the standards body to consider the question.

  10. Suggest further tasks for this list!

1.3. Work through the PR Database

The FreeBSD PR list shows all the current active problem reports and requests for enhancement that have been submitted by FreeBSD users. The PR database includes both programmer and non-programmer tasks. Look through the open PRs, and see if anything there takes your interest. Some of these might be very simple tasks that just need an extra pair of eyes to look over them and confirm that the fix in the PR is a good one. Others might be much more complex, or might not even have a fix included at all.

Start with the PRs that have not been assigned to anyone else. If a PR is assigned to someone else, but it looks like something you can handle, email the person it is assigned to and ask if you can work on it—they might already have a patch ready to be tested, or further ideas that you can discuss with them.

1.4. Ongoing Ports Tasks

The Ports Collection is a perpetual work in progress. We want to provide our users with an easy to use, up to date, high quality repository of third party software. We need people to donate some of their time and effort to help us achieve this goal.

Anyone can get involved, and there are lots of different ways to do so. Contributing to ports is an excellent way to help give back something to the project. Whether you are looking for an ongoing role, or a fun challenge for a rainy day, we would love to have your help!

There are a number of easy ways you can contribute to keeping the ports tree up to date and in good working order:

1.5. Pick one of the items from the Ideas page

The FreeBSD list of projects and ideas for volunteers is also available for people willing to contribute to the FreeBSD project. The list is being regularly updated and contains items for both programmers and non-programmers with information about each project.

All FreeBSD documents are available for download at

Questions that are not answered by the documentation may be sent to <>.
Send questions about this document to <>.