(no commit message)
[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 ### Bounty taken by
142
143 Point of Contact: Kamil Rytarowski (kamil at netbsd dot org)
144
145 Repository: https://github.com/Moritz-Systems/DragonFlyBSD
146
147 ### Donators 
148 <table>
149 <tr>
150 <th>Donor</th>
151 <th>Amount</th>
152 </tr>
153
154 <tr>
155 <td>mneumann</td>
156 <td>500 USD</td>
157 </tr>
158
159 <tr>
160 <td>tuxillo</td>
161 <td>150 USD</td>
162 </tr>
163
164 <tr>
165 <td>kerma</td>
166 <td>500 USD</td>
167 </tr>
168
169 <tr>
170 <td>aly</td>
171 <td>500 CNY</td>
172 </tr>
173
174 <tr>
175 <td>TOTAL AMOUNT</td>
176 <td>1150 USD + 500 CNY</td>
177 </tr>
178
179 </table>
180 <br>
181
182 ## Bluetooth-Support
183 ### Description
184
185 * Make Bluetooth work on DragonFly.
186
187 ### Technical details 
188
189 We already have bluetooth support in the kernel which is based on netgraph6 (AFAIK). 
190 It is disabled by default and is probably out of date.
191
192 We also have a partial and old netbt port from NetBSD...
193
194 ### Main goals
195 * Research the current state of Bluetooth in DragonFly.
196 * Bluetooth is enabled by default when building the kernel/world.
197 * Bring in updates or re-port from FreeBSD/NetBSD.
198 * Bluetooth keyboard / mice is working.
199 * Bluetooth headphone is working.
200
201 ### Actuality
202
203 Bounty created at: 2020-02-12
204
205 ### Estimated time 
206 Unknown.
207
208 ### Donators 
209 <table>
210 <tr>
211 <th>Donor</th>
212 <th>Amount</th>
213 </tr>
214
215 <tr>
216 <td>mneumann</td>
217 <td>200 USD</td>
218 </tr>
219
220 <tr>
221 <td>tuxillo</td>
222 <td>50 USD</td>
223 </tr>
224
225 <tr>
226 <td>aly</td>
227 <td>300 CNY</td>
228 </tr>
229
230 <tr>
231 <td>TOTAL AMOUNT</td>
232 <td>250 USD + 300 CNY</td>
233 </tr>
234
235 </table>
236 <br>
237
238
239
240
241 ## Full Rust libc FFI binding support
242 ### Description
243
244 * Port Rust FFI libc bindings, in full to DragonFly.
245
246 ### Technical details 
247 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.
248
249 The Github URL is https://github.com/rust-lang/libc
250
251 ### Main goals 
252 * Ensure that all features available in our libc have been ported to working in the Rust FFI lib
253 * Ensure that the code builds
254 * Ensure that all tests pass
255 * 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
256
257 ### Estimated time 
258 Unknown.
259
260 ### Donators 
261 <table>
262 <tr>
263 <th>Donor</th>
264 <th>Amount</th>
265 </tr>
266
267 <tr>
268 <td>zach</td>
269 <td>400 USD</td>
270 </tr>
271
272 <tr>
273 <td>joris</td>
274 <td>150 USD</td>
275 </tr>
276
277 <tr>
278 <td>profmakx</td>
279 <td>200 USD</td>
280 </tr>
281
282 <tr>
283 <td>TOTAL AMOUNT</td>
284 <td>750 USD</td>
285 </tr>
286
287 </table>
288 <br>
289
290
291
292 ## Aarch64 support
293 ### Description
294
295 * Port DragonFly to Aarch64
296
297 ### Technical details 
298 To be defined
299
300 ### Main goals 
301 Not yet written.
302
303 ### Estimated time 
304 Unknown.
305
306 ### Donators 
307 <table>
308 <tr>
309 <th>Donor</th>
310 <th>Amount</th>
311 </tr>
312
313 <tr>
314 <td>tuxillo</td>
315 <td>100 EUR</td>
316 </tr>
317
318 <tr>
319 <td>TOTAL AMOUNT</td>
320 <td>100 EUR</td>
321 </tr>
322
323 </table>
324 <br>
325
326 ## UTF-8 support in Console 
327 ### Description 
328 Adding full UTF-8 support in console.
329
330 ### Technical details 
331 Not yet written.
332
333 ### Main goals 
334 Not yet written.
335
336 ### Estimated time 
337 Still unknown.
338
339 ### Donators 
340
341 <table>
342 <tr>
343 <th>Donor</th>
344 <th>Amount</th>
345 </tr>
346
347 <tr>
348 <td>timofonic</td>
349 <td>35 EUR</td>
350 </tr>
351
352 <tr>
353 <td>dillon</td>
354 <td>50 USD</td>
355 </tr>
356
357 <tr>
358 <td>kerma</td>
359 <td>100 USD</td>
360 </tr>
361
362 <tr>
363 <td>TOTAL AMOUNT</td>
364 <td>35 EUR + 150 USD</td>
365 </tr>
366
367 </table>
368
369
370 <br />
371 ## Port valgrind to DragonFlyBSD
372 ### Description
373 (shamelessly copied from gsoc2010 projects page)
374
375 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.
376
377 ### Technical details 
378 Not yet written.
379
380 ### Main goals 
381 (shamelessly copied from gsoc2010 projects page)
382
383 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.
384
385 ### Estimated time 
386 Unknown.
387
388 ### Donators 
389 <table>
390 <tr>
391 <th>Donor</th>
392 <th>Amount</th>
393 </tr>
394
395 <tr>
396 <td>rumko</td>
397 <td>100 EUR</td>
398 </tr>
399
400 <tr>
401 <td>tuxillo</td>
402 <td>50 EUR</td>
403 </tr>
404
405 <tr>
406 <td>dillon</td>
407 <td>100 USD</td>
408 </tr>
409
410 <tr>
411 <td>sjg</td>
412 <td>50 USD</td>
413 </tr>
414
415 <tr>
416 <td>TOTAL AMOUNT</td>
417 <td>150 EUR + 150 USD</td>
418 </tr>
419
420 </table>
421
422 <br />
423 ## HAMMER compression
424 ### Description
425 (shamelessly copied from gsoc2010 projects page)
426
427 * Compress blocks as they get written to disk.
428 * Only file data (rec_type == DATA) should be compressed, not meta-data.
429 * the CRC should be that of the uncompressed data.
430 * ideally you'd need to associate the uncompressed data with the buffer cache buffer somehow, so that decompression is only performed once.
431 * compression could be turned on a per-file or per-pfs basis.
432 * gzip compression would be just fine at first; lzo or lzjb might be preferable.
433
434 **NOTE**:
435 HAMMER2 has replaced HAMMER to be the default filesystem on DragonFly and is under active development and maintenance.  HAMMER2 also has compression support.
436
437 ### Technical details 
438 (shamelessly copied from gsoc2010 projects page)
439
440 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.
441
442 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).
443
444 ### Main goals 
445 Not yet written.
446
447 ### Estimated time 
448 Unknown.
449
450 ### Donators 
451 <table>
452 <tr>
453 <th>Donor</th>
454 <th>Amount</th>
455 </tr>
456
457 <tr>
458 <td>rumko</td>
459 <td>50 EUR</td>
460 </tr>
461
462 <tr>
463 <td>dillon</td>
464 <td>100 USD</td>
465 </tr>
466
467 <tr>
468 <td>vsrinivas</td>
469 <td>50 USD</td>
470 </tr>
471
472 <tr>
473 <td>TOTAL AMOUNT</td>
474 <td>50 EUR + 150 USD</td>
475 </tr>
476
477 </table>
478 <br />
479
480 ## Native NTFS support
481 ### Description
482 (shamelessly copied from gsoc2010 projects page)
483
484 * Port Apple's native NTFS driver
485
486 ### Technical details 
487 (shamelessly copied from gsoc2010 projects page)
488
489 Apple's NTFS native driver could be ported to DragonFly BSD. Latest code as of now is:
490
491 http://opensource.apple.com/source/ntfs/ntfs-84.40.1/kext/
492
493 ### Main goals 
494 Not yet written.
495
496 ### Estimated time 
497 Unknown.
498
499 ### Donators 
500 <table>
501 <tr>
502 <th>Donor</th>
503 <th>Amount</th>
504 </tr>
505
506 <tr>
507 <td>tuxillo</td>
508 <td>75 EUR</td>
509 </tr>
510
511 <tr>
512 <td>TOTAL AMOUNT</td>
513 <td>75 EUR</td>
514 </tr>
515
516 </table>
517
518
519 <br />
520 ##Card reader driver
521 ###Description
522 As swildner wrote on 18th Septmber 2017: we need a new driver for a card reader.
523
524 RTS5209 PCI Express Card Reader
525
526 ### Estimated time 
527 Unknown.
528
529 ### Donators 
530 <table>
531 <tr>
532 <th>Donor</th>
533 <th>Amount</th>
534 </tr>
535
536 <tr>
537 <td>ferz</td>
538 <td>20 EUR</td>
539 </tr>
540
541 <tr>
542 <td>TOTAL AMOUNT</td>
543 <td>20 EUR</td>
544 </tr>
545
546 </table>
547 <br />
548
549
550
551 <br />
552
553 # Completed bounties
554 ##Port autofs from FreeBSD
555 ###Description
556 Autofs allows dynamic filesystem mapping to render filesystems accessible, without keeping them mounted. It is designed as a modern, simpler, cleanroom reimplementation of amd.
557
558 ### Main goals 
559 Not yet written.
560
561 ### Estimated time 
562 Unknown.
563
564 ### Donators 
565 <table>
566 <tr>
567 <th>Donor</th>
568 <th>Amount</th>
569 </tr>
570
571 <tr>
572 <td>kerma</td>
573 <td>50 USD (paid)</td>
574 </tr>
575
576 <tr>
577 <td>TOTAL AMOUNT</td>
578 <td>50 USD</td>
579 </tr>
580
581 </table>
582
583 <br />
584 ## Bring in usb4bsd
585 ### Description
586 * Completely rip out our usb stack and replace it with FreeBSD's new usb4bsd (or whatever the FreeBSD-current USB stack is called nowadays).
587 * 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.
588
589 ### Technical details 
590 Not yet written.
591
592 ### Main goals 
593 Not yet written.
594
595 ### Estimated time 
596 Unknown.
597
598 ### Donators 
599
600 <table>
601 <tr>
602 <th>Donor</th>
603 <th>Amount</th>
604 </tr>
605
606 <tr>
607 <td>alexh</td>
608 <td>300 USD (paid)</td>
609 </tr>
610
611 <tr>
612 <td>sjg</td>
613 <td>100 USD (paid)</td>
614 </tr>
615
616 <tr>
617 <td>ferz</td>
618 <td>50 EUR (paid)</td>
619 </tr>
620
621 <tr>
622 <td>tuxillo</td>
623 <td>50 EUR (paid)</td>
624 </tr>
625
626 <tr>
627 <td>TOTAL AMOUNT</td>
628 <td>100 EUR + 400 USD</td>
629 </tr>
630
631 </table>
632
633 <br />