Junior Jobs
Contents
Introduction
Tasks for new src contributors that should take ~ a few days to complete.
Looking for this list, but for ports? Please see WantedPorts.
Or, for other (longer-term) src tasks, please set the IdeasPage or WiFi/IdeasPage.
General kernel work hints
Use a virtual machine: VirtualBox and bhyve are good options.
Kernel should always have debugging options enabled. CURRENT has most kernel debugging options enabled by default.
Code should follow FreeBSD Code Style Guidelines, unless there are compelling cases to make exceptions.
How to submit patches
Mail technical contact and inline the patch (don't attach, have it as a part of the mail). It may be your e-mail client or something along the way will mess with the patch, so consider providing an url as a backup. The patch should be against head and in unified format (diff -u, git diff, etc.).
Kernel projects
Various kernel man pages needed
[last updated: 2023-01-29]
Technical Contact: JohnMarkGurney
Difficulty
Easy
Description
Add missing man pages for parts of the FreeBSD kernel.
Doc/MissingManpages directs readers to start at FreeBSD bug 108980 – list of missing man pages.
Currently known missing:
- PCPU stuff: DPCPU_* dpcpu_* PCPU_*
- sched_*
- if_*, like if_setdrvflagbits and many other in if_var.h
- cold (the variable that denotes pre/post interrupts) and maybe other items in sys/systm.h
- cn* (sys/cons.h), such as cnputs
- ppsratecheck
sys/param.h/cdefs.h helper functions like: powerof2, nitems, setbit, member2struct, <underbar><underbar>offsetof,
- drivers: cesa, glxsb, sec, cryptocteon, nlmsec, rmisec
- device pager: cdev_pager_allocate, mmap_single, vm_pager_allocate
- FEATURE (macro that adds kern.features)
- tty_makedev and friends
- m_ether_tcpip_hash*
- sbuf_uionew
- cdevsw structure
- calculate_crc32c, crc32
- DIOCG* ioctls from sys/disk.h
- Document which standard libc functions are available in the kernel
Requirements
- minimal C language programming skills.
- Ability to read/write mdoc(7), though jmg@ is willing to help w/ mark up.
User space projects
Improve Test Coverage
[last updated: 2018-08-20]
Technical Contact: JohnMarkGurney
Difficulty
Easy
Description
Implement additional tests. Currently known missing:
implement missing sbuf tests, sbuf_core_test.c has a few tests that are if 0'd out at the end of the file
You can look at the atf-c(3) manpage for info on writing tests.
Requirements
- basic C language programming skills.
Tidy up some ELF toolchain loose ends
[last updated: 2015-03-27]
Technical Contact: EdMaste
Difficulty
Medium
Description
We've migrated to using the ELF toolchain version of tools like size, strip, nm, etc. Some of the ELF toolchain tools are derivatives of tools that first appeared in the FreeBSD tree, and others are new. There are a few remaining tasks in the ELF toolchain project.
- Identify differences between the ELF toolchain and FreeBSD versions of ar/ranlib and elfdump. Either incorporate ELF toolchain changes into FreeBSD, or incorporate the FreeBSD changes into ELF toolchain, and switch to using the ELF toolchain source from contrib/
- Identify missing functionality relative to contemporary GNU Binutils and implement equivalent functionality in ELF toolchain.
Requirements
- Knowledge of C
- Knowledge of the ELF format
Various man page improvements
[last updated: 2018-08-21]
Technical Contact: JohnMarkGurney
Difficulty
Easy
Description
Doc/MissingManpages directs readers to start at FreeBSD bug 108980 – list of missing man pages.
Add or improve man pages:
- intro(3) is missing MANY libraries that are now common
- libc(3) is missing, include reference and places for notable additions, and standards compliance
- timespec, sbintime_t and various sys/time.h are not documented.
Requirements
- minimal C language programming skills.
- Ability to read/write mdoc(7), though jmg@ is willing to help w/ mark up.
Build projects
(none listed at this time)
Past projects
These are provided here as examples of appropriate projects in the scope of this page.
Validate coredump format string
Technical Contact: MateuszGuzik
Committed as (TBA).
Difficulty
Easy
Description
The pattern can be set with the kern.corefile sysctl. No validation is performed.
However, errors are detected during traversal.
Modify the code so that it validates the pattern prior to accepting it.
Convert mountlist_mtx to rwlock
Technical Contact: MateuszGuzik
Committed as (TBA).
Difficulty
Easy
Description
Self-explanatory.
Rename it to mountlist_lock.
Note that mountlist is rarely modified and even shared locking with rwlocks introduces overhead. Interested person can upgrade this task to non-junior by coming up with a solution exploiting rare need to modify the list. Example approaches include designing a locking primitive with cheap shared locking (think: per-cpu) at the expense of exclusive locking.
Requirements
- C language programming skills.