Note HAMMER2 is the default and has compresson support
[ikiwiki.git] / docs / developer / Code_Bounties.mdwn
1 [[!toc  ]]
2
3 # Explanation 
4
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!).
6
7 # Rules 
8
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.
10
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.
12
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.
14
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.
16
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.
18
19 # Active bounties 
20
21 ## Port uhidd HID daemon from FreeBSD
22
23 ### Description
24
25 *Shamelessly copied from the FreeBSD Wiki - https://wiki.freebsd.org/uhidd: 
26 "uhidd is a userland driver/daemon for USB HID devices like mouse, keyboard etc. It is based on libusb20 and currently only works for FreeBSD 8.x and above".
27
28 *The uhidd driver would allow USB gaming controllers and joysticks to be used on DragonFlyBSD. uhidd also provide support for multimedia keys found on USB keyboards.
29
30
31 ### Technical details 
32
33 * This mainly involves porting uhidd and related items from FreeBSD.
34
35
36 ### Main goals
37
38 * Being able to use USB game controllers and joysticks on DragonFly.
39
40 ### Actuality
41
42 Bounty created at: 2020-02-17
43
44 ### Estimated time
45
46 Unknown.
47
48 ### Donators 
49 <table>
50 <tr>
51 <th>Donor</th>
52 <th>Amount</th>
53 </tr>
54
55 <tr>
56 <td>kerma</td>
57 <td>100 USD</td>
58 </tr>
59
60
61 <tr>
62 <td>TOTAL AMOUNT</td>
63 <td>100 USD</td>
64 </tr>
65
66 </table>
67 <br>
68
69
70 ## Extend vkernel(7) to run on any POSIX OS
71
72 ### Description
73
74 * vkernel(7) allows for running DragonFly kernels in userland. Still, it requires a DragonFly operating system.
75
76 * Similar to NetBSD's rumpkernel, allow the vkernel application to be independent of the operating system. Using a cross-compiler,
77   this would allow us to run a DragonFly kernel for instance on Linux or NetBSD (I know that running it within a virtual machine would be faster...).
78
79
80 ### Technical details 
81
82 * This mainly involves rewriting parts of the page-table handling code and interrupt-related code.
83
84
85 ### Main goals
86
87 * Being able to run a vkernel binary on any POSIX OS.
88
89 ### Actuality
90
91 Bounty created at: 2020-02-12
92
93 ### Estimated time
94
95 Unknown.
96
97 ### Donators 
98 <table>
99 <tr>
100 <th>Donor</th>
101 <th>Amount</th>
102 </tr>
103
104 <tr>
105 <td>mneumann</td>
106 <td>100 USD</td>
107 </tr>
108
109
110 <tr>
111 <td>TOTAL AMOUNT</td>
112 <td>100 USD</td>
113 </tr>
114
115 </table>
116 <br>
117
118
119 ## Hypervisor for DragonFly/x86_64
120
121 ### Description
122
123 * Port nvmm (NetBSD) or bhyve (FreeBSD) to DragonFly.
124
125 ### Technical details 
126
127
128 ### Main goals
129
130 * Hardware-accelerated virtualization to run guest operating systems like Linux or Windows 10 on DragonFly.
131 * Support both Intel and AMD CPUs.
132
133 ### Actuality
134
135 Bounty created at: 2020-02-12
136
137 ### Estimated time
138
139 Unknown.
140
141 ### Donators 
142 <table>
143 <tr>
144 <th>Donor</th>
145 <th>Amount</th>
146 </tr>
147
148 <tr>
149 <td>mneumann</td>
150 <td>500 USD</td>
151 </tr>
152
153 <tr>
154 <td>tuxillo</td>
155 <td>150 USD</td>
156 </tr>
157
158 <tr>
159 <td>kerma</td>
160 <td>500 USD</td>
161 </tr>
162
163 <tr>
164 <td>aly</td>
165 <td>500 CNY</td>
166 </tr>
167
168 <tr>
169 <td>TOTAL AMOUNT</td>
170 <td>1150 USD + 500 CNY</td>
171 </tr>
172
173 </table>
174 <br>
175
176
177
178
179
180 ## Bluetooth-Support
181 ### Description
182
183 * Make Bluetooth work on DragonFly.
184
185 ### Technical details 
186
187 We already have bluetooth support in the kernel which is based on netgraph6 (AFAIK). 
188 It is disabled by default and is probably out of date.
189
190 We also have a partial and old netbt port from NetBSD...
191
192 ### Main goals
193 * Research the current state of Bluetooth in DragonFly.
194 * Bluetooth is enabled by default when building the kernel/world.
195 * Bring in updates or re-port from FreeBSD/NetBSD.
196 * Bluetooth keyboard / mice is working.
197 * Bluetooth headphone is working.
198
199 ### Actuality
200
201 Bounty created at: 2020-02-12
202
203 ### Estimated time 
204 Unknown.
205
206 ### Donators 
207 <table>
208 <tr>
209 <th>Donor</th>
210 <th>Amount</th>
211 </tr>
212
213 <tr>
214 <td>mneumann</td>
215 <td>200 USD</td>
216 </tr>
217
218 <tr>
219 <td>tuxillo</td>
220 <td>50 USD</td>
221 </tr>
222
223 <tr>
224 <td>aly</td>
225 <td>300 CNY</td>
226 </tr>
227
228 <tr>
229 <td>TOTAL AMOUNT</td>
230 <td>250 USD + 300 CNY</td>
231 </tr>
232
233 </table>
234 <br>
235
236
237
238
239 ## Full Rust libc FFI binding support
240 ### Description
241
242 * Port Rust FFI libc bindings, in full to DragonFly.
243
244 ### Technical details 
245 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.
246
247 The Github URL is https://github.com/rust-lang/libc
248
249 ### Main goals 
250 * Ensure that all features available in our libc have been ported to working in the Rust FFI lib
251 * Ensure that the code builds
252 * Ensure that all tests pass
253 * 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
254
255 ### Estimated time 
256 Unknown.
257
258 ### Donators 
259 <table>
260 <tr>
261 <th>Donor</th>
262 <th>Amount</th>
263 </tr>
264
265 <tr>
266 <td>zach</td>
267 <td>400 USD</td>
268 </tr>
269
270 <tr>
271 <td>joris</td>
272 <td>150 USD</td>
273 </tr>
274
275 <tr>
276 <td>profmakx</td>
277 <td>200 USD</td>
278 </tr>
279
280 <tr>
281 <td>TOTAL AMOUNT</td>
282 <td>750 USD</td>
283 </tr>
284
285 </table>
286 <br>
287
288
289
290 ## Aarch64 support
291 ### Description
292
293 * Port DragonFly to Aarch64
294
295 ### Technical details 
296 To be defined
297
298 ### Main goals 
299 Not yet written.
300
301 ### Estimated time 
302 Unknown.
303
304 ### Donators 
305 <table>
306 <tr>
307 <th>Donor</th>
308 <th>Amount</th>
309 </tr>
310
311 <tr>
312 <td>tuxillo</td>
313 <td>100 EUR</td>
314 </tr>
315
316 <tr>
317 <td>TOTAL AMOUNT</td>
318 <td>100 EUR</td>
319 </tr>
320
321 </table>
322 <br>
323
324 ## UTF-8 support in Console 
325 ### Description 
326 Adding full UTF-8 support in console.
327
328 ### Technical details 
329 Not yet written.
330
331 ### Main goals 
332 Not yet written.
333
334 ### Estimated time 
335 Still unknown.
336
337 ### Donators 
338
339 <table>
340 <tr>
341 <th>Donor</th>
342 <th>Amount</th>
343 </tr>
344
345 <tr>
346 <td>timofonic</td>
347 <td>35 EUR</td>
348 </tr>
349
350 <tr>
351 <td>dillon</td>
352 <td>50 USD</td>
353 </tr>
354
355 <tr>
356 <td>kerma</td>
357 <td>100 USD</td>
358 </tr>
359
360 <tr>
361 <td>TOTAL AMOUNT</td>
362 <td>35 EUR + 150 USD</td>
363 </tr>
364
365 </table>
366
367
368 <br />
369 ## Port valgrind to DragonFlyBSD
370 ### Description
371 (shamelessly copied from gsoc2010 projects page)
372
373 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.
374
375 ### Technical details 
376 Not yet written.
377
378 ### Main goals 
379 (shamelessly copied from gsoc2010 projects page)
380
381 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.
382
383 ### Estimated time 
384 Unknown.
385
386 ### Donators 
387 <table>
388 <tr>
389 <th>Donor</th>
390 <th>Amount</th>
391 </tr>
392
393 <tr>
394 <td>rumko</td>
395 <td>100 EUR</td>
396 </tr>
397
398 <tr>
399 <td>tuxillo</td>
400 <td>50 EUR</td>
401 </tr>
402
403 <tr>
404 <td>dillon</td>
405 <td>100 USD</td>
406 </tr>
407
408 <tr>
409 <td>sjg</td>
410 <td>50 USD</td>
411 </tr>
412
413 <tr>
414 <td>TOTAL AMOUNT</td>
415 <td>150 EUR + 150 USD</td>
416 </tr>
417
418 </table>
419
420 <br />
421 ## HAMMER compression
422 ### Description
423 (shamelessly copied from gsoc2010 projects page)
424
425 * Compress blocks as they get written to disk.
426 * Only file data (rec_type == DATA) should be compressed, not meta-data.
427 * the CRC should be that of the uncompressed data.
428 * ideally you'd need to associate the uncompressed data with the buffer cache buffer somehow, so that decompression is only performed once.
429 * compression could be turned on a per-file or per-pfs basis.
430 * gzip compression would be just fine at first; lzo or lzjb might be preferable.
431
432 **NOTE**:
433 HAMMER2 has replaced HAMMER to be the default filesystem on DragonFly and is under active development and maintenance.  HAMMER2 also has compression support.
434
435 ### Technical details 
436 (shamelessly copied from gsoc2010 projects page)
437
438 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.
439
440 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).
441
442 ### Main goals 
443 Not yet written.
444
445 ### Estimated time 
446 Unknown.
447
448 ### Donators 
449 <table>
450 <tr>
451 <th>Donor</th>
452 <th>Amount</th>
453 </tr>
454
455 <tr>
456 <td>rumko</td>
457 <td>50 EUR</td>
458 </tr>
459
460 <tr>
461 <td>dillon</td>
462 <td>100 USD</td>
463 </tr>
464
465 <tr>
466 <td>vsrinivas</td>
467 <td>50 USD</td>
468 </tr>
469
470 <tr>
471 <td>TOTAL AMOUNT</td>
472 <td>50 EUR + 150 USD</td>
473 </tr>
474
475 </table>
476 <br />
477
478 ## Native NTFS support
479 ### Description
480 (shamelessly copied from gsoc2010 projects page)
481
482 * Port Apple's native NTFS driver
483
484 ### Technical details 
485 (shamelessly copied from gsoc2010 projects page)
486
487 Apple's NTFS native driver could be ported to DragonFly BSD. Latest code as of now is:
488
489 http://opensource.apple.com/source/ntfs/ntfs-84.40.1/kext/
490
491 ### Main goals 
492 Not yet written.
493
494 ### Estimated time 
495 Unknown.
496
497 ### Donators 
498 <table>
499 <tr>
500 <th>Donor</th>
501 <th>Amount</th>
502 </tr>
503
504 <tr>
505 <td>tuxillo</td>
506 <td>75 EUR</td>
507 </tr>
508
509 <tr>
510 <td>TOTAL AMOUNT</td>
511 <td>75 EUR</td>
512 </tr>
513
514 </table>
515
516
517 <br />
518 ##Card reader driver
519 ###Description
520 As swildner wrote on 18th Septmber 2017: we need a new driver for a card reader.
521
522 RTS5209 PCI Express Card Reader
523
524 ### Estimated time 
525 Unknown.
526
527 ### Donators 
528 <table>
529 <tr>
530 <th>Donor</th>
531 <th>Amount</th>
532 </tr>
533
534 <tr>
535 <td>ferz</td>
536 <td>20 EUR</td>
537 </tr>
538
539 <tr>
540 <td>TOTAL AMOUNT</td>
541 <td>20 EUR</td>
542 </tr>
543
544 </table>
545 <br />
546
547
548
549 <br />
550
551 # Completed bounties
552 ##Port autofs from FreeBSD
553 ###Description
554 Autofs allows dynamic filesystem mapping to render filesystems accessible, without keeping them mounted. It is designed as a modern, simpler, cleanroom reimplementation of amd.
555
556 ### Main goals 
557 Not yet written.
558
559 ### Estimated time 
560 Unknown.
561
562 ### Donators 
563 <table>
564 <tr>
565 <th>Donor</th>
566 <th>Amount</th>
567 </tr>
568
569 <tr>
570 <td>kerma</td>
571 <td>50 USD (paid)</td>
572 </tr>
573
574 <tr>
575 <td>TOTAL AMOUNT</td>
576 <td>50 USD</td>
577 </tr>
578
579 </table>
580
581 <br />
582 ## Bring in usb4bsd
583 ### Description
584 * Completely rip out our usb stack and replace it with FreeBSD's new usb4bsd (or whatever the FreeBSD-current USB stack is called nowadays).
585 * 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.
586
587 ### Technical details 
588 Not yet written.
589
590 ### Main goals 
591 Not yet written.
592
593 ### Estimated time 
594 Unknown.
595
596 ### Donators 
597
598 <table>
599 <tr>
600 <th>Donor</th>
601 <th>Amount</th>
602 </tr>
603
604 <tr>
605 <td>alexh</td>
606 <td>300 USD (paid)</td>
607 </tr>
608
609 <tr>
610 <td>sjg</td>
611 <td>100 USD (paid)</td>
612 </tr>
613
614 <tr>
615 <td>ferz</td>
616 <td>50 EUR (paid)</td>
617 </tr>
618
619 <tr>
620 <td>tuxillo</td>
621 <td>50 EUR (paid)</td>
622 </tr>
623
624 <tr>
625 <td>TOTAL AMOUNT</td>
626 <td>100 EUR + 400 USD</td>
627 </tr>
628
629 </table>
630
631 <br />