5 A code bounty is a certain financial stimulant to encourage someone to put his or her effort into a project. A code bounty in the DragonFlyBSD project needs to adhere to a set of rules defined hereunder, though these are only preliminary and subject to change. One could for example imagine developers accepting sponsorship on a wholly different basis, or non-financial rewards for completing a bounty project, like free hardware (we love that!).
9 * Bounty Projects are open to anyone that has a reasonable capability of completing the project. Typically it's on first to ask basis, but the sponsor of the bounty may choose differently.
11 * If the developer can not complete the project by the given time period, the bounty agreement is void and no money will be issued for work done. DragonFly developers may extend the time period if it's reasonable and prudent to do so. Upon voiding the agreement, someone may reissue the project again to another developer.
13 * Payment for a project shall be issued in no less than 72 hours after the DragonFly developers has had ten business days to determine if the code is stable and usefulness, no major issues are left unresolved and able for being merged into the project. Payment shall be in either [[Paypal]] (preferred), some money sending company or a bank account transfer.
15 * Upon receiving payment, the project developer shall issue (within 24 hours) a message in the WIKI and to DragonFly development ML that they have received payment.
17 * All code submitted shall be of the same license as DragonFly. Any questions on the licensing issues should be directed to the DragonFly Team.
24 ## Sync DRM drivers from Linux using LinuxKPI (via FreeBSD)
28 FreeBSD supports more modern graphics drivers. Bring them to DragonFly.
30 See https://github.com/freebsd/drm-kmod
34 * working i915 driver en par with FreeBSD (support for more modern chipsets)
38 Created at: 2023-12-10
40 **NOTE**: tuxillo partially working on it.
55 <td>mneumann (Michael Neumann)</td>
66 ## WiFi-6 support and iwlwifi
70 Sync our wifi stack to support WiFi-6.
74 * working iwlwifi driver
78 Created at: 2023-12-10
93 <td>mneumann (Michael Neumann)</td>
103 ## Port tarfs from FreeBSD 14
107 FreeBSD 14 got [tarfs](https://man.freebsd.org/cgi/man.cgi?query=tarfs) which allows to mount a POSIX tar file, possibly zstd
108 compressed. The task is to port this over to DragonFly.
110 One possible use case of tarfs would be for the installer ISO image where various parts of the system could be mounted from a tar.xz file leading to a partially "compressed" ISO image.
114 * Port tarfs from FreeBSD 14.
118 Created at: 2023-12-05
133 <td>mneumann (Michael Neumann)</td>
138 <td>TOTAL AMOUNT</td>
143 ## USB device pass-through for NVMM
147 Implement USB device pass-through for NVMM.
151 * Working pass-through of USB webcam to Linux VM.
155 Created at: 2023-12-05
170 <td>mneumann (Michael Neumann)</td>
175 <td>TOTAL AMOUNT</td>
180 ## HAMMER2 offline deduplication
184 HAMMER2 has online deduplication which works well for long-running servers. But if the system is rebooted, the deduplication caches are emptied and
185 newly written data will possibly be stored duplicated.
187 HAMMER2 offline deduplication would fill the gap, allowing to deduplicate existing file systems which have
188 already gained duplicate data.
190 Ideally, a framework is developed that can be reused for similar tasks, e.g.:
192 - recompressing blocks using a different / better compression algo
193 - (re-encrypting blocks, once we would have encryption support :)
197 * Implement `hammer2 dedup-offline`, which scans the FS for duplicate blocks and replaces and free's redundant copies.
201 Created at: 2023-12-05
216 <td>mneumann (Michael Neumann)</td>
220 <td>aly (Aaron LI)</td>
225 <td>TOTAL AMOUNT</td>
231 ## Bring in support for USB webcams
235 Bring in `uvideo` from NetBSD or OpenBSD, and the dependent `video` driver. If you think that webcam support in FreeBSD is superior, feels free to bring in `cuse` etc.
237 Final result should be that USB webcams are usable from chrome or firefox for the purpose of video conferencing (e.g. via jitsi.org). Personally I only need support for low-quality webcams, no need for 4k :).
241 Bounty created at: 2021-08-08
271 <td>TOTAL AMOUNT</td>
272 <td>200 USD + 100 GBP</td>
278 ## Port uhidd HID daemon from FreeBSD
282 uhidd is a userland driver/daemon for USB HID devices like mouse, keyboard etc.
283 It is based on libusb20 and currently only works for FreeBSD 8.x and above.
285 The uhidd driver would allow USB gaming controllers and joysticks to be used on DragonFly BSD.
286 uhidd also provide support for multimedia keys found on USB keyboards.
288 (Derived from the [FreeBSD Wiki: uhidd](https://wiki.freebsd.org/uhidd))
290 ### Technical details
292 * This mainly involves porting uhidd and related items from FreeBSD.
296 * Being able to use USB game controllers and joysticks on DragonFly.
300 Bounty created at: 2020-02-17
320 <td>TOTAL AMOUNT</td>
330 * Make Bluetooth work on DragonFly.
332 ### Technical details
334 We already have bluetooth support in the kernel which is based on netgraph6 (AFAIK).
335 It is disabled by default and is probably out of date.
337 We also have a partial and old netbt port from NetBSD...
341 * Research the current state of Bluetooth in DragonFly.
342 * Bluetooth is enabled by default when building the kernel/world.
343 * Bring in updates or re-port from FreeBSD/NetBSD.
344 * Bluetooth keyboard / mice is working.
345 * Bluetooth headphone is working.
349 Bounty created at: 2020-02-12
374 <td>TOTAL AMOUNT</td>
381 ## Full Rust libc FFI binding support
385 * Port Rust FFI libc bindings, in full to DragonFly.
387 ### Technical details
389 There has intermittently been some support on this and builds and tests have gone through periods of passing and failing, but a comprehensive buildout of full support of all features would make more advanced Rust development, especially as a viable web server backend more possible.
391 The Github URL is https://github.com/rust-lang/libc
395 * Ensure that all features available in our libc have been ported to working in the Rust FFI lib
396 * Ensure that the code builds
397 * Ensure that all tests pass
398 * Ensure at least a semi automated way for the upstream team to be able to continue validation by some sort of CI/CD system so that we don't have a large support divergence
428 <td>TOTAL AMOUNT</td>
436 ## More Modern Thunderbolt Support
440 * Integrate Thunderbolt Devices
442 ### Technical Details
463 <td>Mike Carroll</td>
468 <td>TOTAL AMOUNT</td>
475 ## OpenPower9 Support
479 * Port DragonFly to OpenPower 9 CPUs
481 ### Technical Details
502 <td>Mike Carroll</td>
507 <td>TOTAL AMOUNT</td>
518 * Port DragonFly to AArch64
520 ### Technical details
546 <td>Mike Carroll</td>
551 <td>aly (Aaron LI)</td>
556 <td>TOTAL AMOUNT</td>
557 <td>100 EUR + 200 USD</td>
563 ## UTF-8 support in Console
567 Adding full UTF-8 support in console.
569 ### Technical details
605 <td>TOTAL AMOUNT</td>
606 <td>35 EUR + 150 USD</td>
612 ## Native NTFS support
616 (shamelessly copied from gsoc2010 projects page)
618 * Port Apple's native NTFS driver
620 ### Technical details
622 (shamelessly copied from gsoc2010 projects page)
624 Apple's NTFS native driver could be ported to DragonFly BSD.
626 Latest code as of now is:
627 http://opensource.apple.com/source/ntfs/ntfs-84.40.1/kext/
651 <td>TOTAL AMOUNT</td>
658 ## Card reader driver
662 As swildner wrote on 18th Septmber 2017: we need a new driver for a card reader.
664 RTS5209 PCI Express Card Reader
684 <td>TOTAL AMOUNT</td>
694 ## HAMMER compression
698 (shamelessly copied from gsoc2010 projects page)
700 * Compress blocks as they get written to disk.
701 * Only file data (rec_type == DATA) should be compressed, not meta-data.
702 * the CRC should be that of the uncompressed data.
703 * ideally you'd need to associate the uncompressed data with the buffer cache buffer somehow, so that decompression is only performed once.
704 * compression could be turned on a per-file or per-pfs basis.
705 * gzip compression would be just fine at first; lzo or lzjb might be preferable.
708 HAMMER2 has replaced HAMMER to be the default filesystem on DragonFly and is under active development and maintenance. HAMMER2 also has compression support.
710 ### Technical details
712 (shamelessly copied from gsoc2010 projects page)
714 Doing compression would require flagging the data record as being compressed and also require double-buffering since the buffer cache buffer associated with the uncompressed data might have holes in it and otherwise referenced by user programs and cannot serve as a buffer for in-place compression or decompression.
716 The direct read / direct write mechanic would almost certainly have to be disabled for compressed buffers and the small-data zone would probably have to be used (the large-data zone is designed only for use with 16K or 64K buffers).
750 <td>TOTAL AMOUNT</td>
751 <td>50 EUR + 150 USD</td>
761 ## In-kernel WireGuard port
765 [WireGuard](https://www.wireguard.com/) is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography.
766 It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache.
767 It intends to be considerably more performant than OpenVPN.
768 WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances.
769 Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable.
770 (copied from [WireGuard official website](https://www.wireguard.com/))
772 We already have the userland implementation in Golang in DPorts (i.e., [`wireguard-go`](https://github.com/DragonFlyBSD/DPorts/tree/master/net/wireguard-go)).
773 It would be better to also gain the in-kernel implementation, like OpenBSD and FreeBSD already did.
775 ### Technical details
777 * Port WireGuard directly from the upstream or from OpenBSD/FreeBSD.
778 * The crypto framework might need an update (from OpenBSD/FreeBSD).
781 The initial port by FreeBSD/Netgate was buggy, so need to investigate before using that code.
782 See: [Buffer overruns, license violations, and bad code: FreeBSD 13's close call](https://arstechnica.com/gadgets/2021/03/buffer-overruns-license-violations-and-bad-code-freebsd-13s-close-call/)
784 The re-port of WireGuard to FreeBSD: [[ANNOUNCE] WireGuard for FreeBSD in development for 13.y – and a note of how we got here](https://lists.zx2c4.com/pipermail/wireguard/2021-March/006499.html).
786 The Author (Jason A. Donenfeld) also said "the crypto needed to be re-accelerated", as detailed in [if_wg simd chapoly needs some love](https://lists.freebsd.org/pipermail/freebsd-hackers/2021-March/057076.html).
789 NetBSD has a separate from-sratch implementation [wg(4)](https://man.netbsd.org/wg.4).
790 The [code](https://github.com/NetBSD/src/blob/trunk/sys/net/if_wg.c) looks quite clean and nice.
791 So it maybe a good idea to port the NetBSD version.
793 See also the dispute between WireGuard's author and NetBSD developers:
794 ["wireguard" implementation improperly merged and needs revert](https://mail-index.netbsd.org/tech-net/2020/08/22/msg007842.html)
798 * WireGuard port in DragonFly kernel, as well as the userland tools.
800 * The port should be ideally reviewed/audited by the WireGuard project.
801 I (aly@) believe the author (Jason A. Donenfeld) would like to help.
805 Created at: 2021-08-12<br>
806 Completed at: 2024-02-21
810 Completed by: aly@ (Aaron LI)
815 - if_wg.ko kernel module; source at sys/net/wg; man page wg(4)
816 - added missing crypto code to sys/crypto
817 - ifconfig(8) support for wg(4)
818 - wg rc(8) script; man page wg.conf(5)
819 * Merged in DragonFly 6.5 master branch
820 * Announcement: [mail to users@ ML](https://lists.dragonflybsd.org/pipermail/users/2024-February/452239.html)
831 <td>aly (Aaron LI)</td>
832 <td><s>100 USD</s></td>
835 <td>bycn82 (Bill Yuan)</td>
836 <td><s>100 USD</s></td>
839 <td>tuxillo (Antonio Huete)</td>
840 <td>50 EUR (paid)</td>
844 <td>TOTAL AMOUNT</td>
845 <td>200 USD + 50EUR</td>
850 ## Port valgrind to DragonFlyBSD [TAKEN 2021-03-30]
854 (shamelessly copied from gsoc2010 projects page)
856 Valgrind is a very useful tool on a system like DragonFly that's under heavy development. Ideally, we would want the port to be usable with vkernel processes, thus enabling complex checking of the core kernel code.
858 ### Technical details
864 (shamelessly copied from gsoc2010 projects page)
866 The goal of this project is to port valgrind (3.5.0+) to the DragonFlyBSD platform so that at least the memcheck tool runs sufficiently well to be useful. Also an update for the pkgsrc package (devel/valgrind) should be made.
876 Repository: [[Github|https://github.com/1338-1/valgrind-dragonfly]]
907 <td>TOTAL AMOUNT</td>
908 <td>150 EUR + 150 USD (paid)</td>
913 ## Hypervisor for DragonFly/x86_64
917 * Port nvmm (NetBSD) or bhyve (FreeBSD) to DragonFly.
919 ### Technical details
921 Employ Intel VT-x and AMD SVM to provide fast virtualization support for running various guest OSes.
925 * Hardware-accelerated virtualization to run guest operating systems like Linux or Windows 10 on DragonFly.
926 * Support both Intel and AMD CPUs.
930 Created at: 2020-02-12<br>
931 Completed at: 2021-08-08
939 Completed by: Aaron LI (aly@)<br>
941 Previous Party: Kamil Rytarowski (kamil at netbsd dot org)<br>
942 Previous Repository: https://github.com/Moritz-Systems/DragonFlyBSD
946 * Ported NVMM from NetBSD-current (as of 2021-06-25), plus various improvements/fixes from maxv's repo.
947 * Support both Intel VMX and AMD SVM on x86_64 CPUs.
949 - nvmm(4): kernel module, including both the MI frontend and MD backends
950 - libnvmm(3): hypervisor API interacting with nvmm(4), e.g., used by QEMU
951 - nvmmctl(8): utility to inspect NVMM status (still premilinary)
952 - testcases/libnvmm: libnvmm test cases
953 - test/nvmm: examples
954 * Merged into master (6.1) on 2021-07-20.
955 * QEMU (6.0.0) has been updated to employ NVMM on DragonFly and available in [DPorts: emulators/qemu60](https://github.com/DragonFlyBSD/DPorts/tree/master/emulators/qemu60).
956 * HowTo document: [Virtualization: NVMM Hypervisor](/docs/docs/howtos/nvmm)
968 <td>500 USD (paid)</td>
973 <td>175 USD (paid)</td>
978 <td>500 USD (paid)</td>
983 <td>500 CNY (myself ;))</td>
987 <td>TOTAL AMOUNT</td>
988 <td>1175 USD + 500 CNY</td>
994 ## Port autofs from FreeBSD
998 Autofs allows dynamic filesystem mapping to render filesystems accessible, without keeping them mounted. It is designed as a modern, simpler, cleanroom reimplementation of amd.
1018 <td>50 USD (paid)</td>
1022 <td>TOTAL AMOUNT</td>
1033 * Completely rip out our USB stack and replace it with FreeBSD's new usb4bsd (or whatever the FreeBSD-current USB stack is called nowadays).
1034 * Note that some work was done here already by polachok (http://gitweb.dragonflybsd.org/~polachok/dragonfly.git/shortlog/refs/heads/usb2) but the state is unknown.
1036 ### Technical details
1058 <td>300 USD (paid)</td>
1063 <td>100 USD (paid)</td>
1068 <td>50 EUR (paid)</td>
1073 <td>50 EUR (paid)</td>
1077 <td>TOTAL AMOUNT</td>
1078 <td>100 EUR + 400 USD</td>