Cleanup
[ikiwiki.git] / docs / developer / ProjectsPage.mdwn
1
2 # DragonFly Projects 
3
4 This page shall serve as a common place to look if you're in search of a DragonFly related project. It's also the place to check if someone else is already working on it (to prevent project collision) or should be contacted.
5
6
7
8 [[!toc levels=3 ]]
9
10
11
12 ## Website projects 
13
14
15 * Correct [mailing lists page](http://www.dragonflybsd.org/community/mail.cgi) and [news page](http://www.dragonflybsd.org/community/news.cgi) to better describe the content of each list.
16
17
18 * Create layout for http://bugs.dragonflybsd.org that matches the main site.
19
20
21 * Check through all the [DragonFly mirrors](http://www.dragonflybsd.org/community/download.cgi) and report on any that aren't working
22
23
24 * Create short list of tasks for a new DragonFly user (this information is all available elsewhere, but it's buried in a lot of other data):
25
26
27 * how to upgrade the operating system
28
29
30 * how to get to a working desktop
31
32
33 * and where and how to report issues.
34
35
36
37 ## Documentation projects 
38
39
40 * Check all chapters of the handbook and do the following:
41
42
43 * Check if the content applies to DragonFly.  If not, change it.
44
45
46 * Add new content and enhance the previous chapters
47
48
49 * Check for syntax error, typos and wiki errors.
50
51
52 * Add prev/next buttons to all pages.
53
54
55 * Reorder `/usr/src/UPDATING` to put more relevant information at top; remove data no longer relevant.
56
57
58 * Help out in http://bugs.dragonflybsd.org (try to reproduce, diagnose, propose fixes ...)
59
60
61 * Organize, contribute to, and finish the C book project.
62
63
64
65 ## Userland projects 
66
67
68 * Bring in BSD-licensed versions of some text tools like `grep`, `diff` and `sort`. The Open***BSD guys already did some work related to that.  If you manage to bring the tools to DragonFly, check if everything works as expected (e.g. rc.d scripts, make world runs, ...).  Of course the new tools need to have at least all the features of the old GNU tools.
69
70
71 * Update the [contributed software](ContribSoftware) which is out-of-date.
72
73
74 * Remove `NOINET6` build option
75
76
77 * `WARN` corrections to utilities
78
79
80 * Clean our code to make it [style(9)](http://leaf.dragonflybsd.org/cgi/web-man?command#style&sectionANY) compatible.  Compile and test your changes.  Verify that the checksum (sha(1)) of the unmodified object matches the checksum of the cleaned object.  Check also with strip(1)+sha(1)
81
82
83 * Bring in code from other *BSDs:
84
85
86 * smbfs changes from FreeBSD
87
88
89 * pf changes from OpenBSD
90
91
92 * Randomize mmap() offsets as described in http://www.openbsd.org/papers/ven05-deraadt/index.html
93
94
95 * Add extended slice support to `fdisk`
96
97
98 * Install Coverity and fix the FreeBSD bugs that were uncovered by Coverity, but do not just blindly pull over the FreeBSD patches. Make sure that you first understand what the patch does.
99
100
101 * C99 Standards Conformance. The todo list is on http://wiki.dragonflybsd.org/index.cgi/StandardsConformanceProject (original http://www.in-nomine.org/~asmodai/df/conformance/).
102
103
104 * Setup a regression testing machine/system to register and find problems and new improvements..
105
106
107 * Networking performance scalability
108
109
110 * scalability (algorithmic performance) - ideas: http://bulk.fefe.de/scalability/  and http://bulk.fefe.de/lk2006/talk.pdf
111
112
113 * RegressionTest
114
115
116 * also check HowToStressTest
117
118
119 * Add lwp support to ptrace/gdb/core dumps.
120
121
122 * CheckpointFeatures
123
124
125 * Linuxulator update (Free***BSD did a lot of work in this area.  Look [here](http://wiki.freebsd.org/linux-kernel),
126
127
128 * Bringing in version 2.0 of the BSD Installer
129
130
131 * Build a Live CD with a DragonFly-specific X desktop, integrated into nrelease build. Check ongoing LiveDVD project: [LiveDVD for Google SoC](LiveDVDGSoC) 
132
133
134 * UTF8 support in the console
135
136
137 * Write a tool to monitor changes in other code bases such as FreeBSD, NetBSD, OpenBSD. corecode is busy with this one (http://oly.corecode.ath.cx/~corecode/cgi-bin/crosscgi.py) (svn repository (https://fortunaty.net/svn/crossref/)).
138
139
140 * Work relating GDB:
141
142
143 * ptrace/gdb follow-fork-mode support and more (peek at linux)
144
145
146 * Change the build to create one libbfd for gdb and binutils
147
148
149 * Separate RPC code from NFS into separate library.
150
151
152
153 ## Kernel projects 
154
155
156 * Make our sound system support surround sound
157
158
159 * Port the BSDL OSS code to DragonFly
160
161
162 * Complete Path MTU Discovery by adding a host route to remember the Path MTU and setting a timer to expire old host routes. See netinet/if_ether.c for an example of this mechanism as used by ARP. Periodically increase MTU of hosts that have had its MTU decreased.
163
164
165 * Look for places in the kernel that can benefit from Solaris-style caching of preconstructed slab allocator objects. If we can find enough of these uses, we can add this functionality to the kernel memory allocator.
166
167
168 * Implement `sem_open()`, `sem_close()`, and `sem_unlink()`.
169
170
171 * Clean our code to make it [style(9)](http://leaf.dragonflybsd.org/cgi/web-man?command#style&sectionANY) compatible.  Compile and test your changes.  Verify that the checksum (sha(1)) of the unmodified object matches the checksum of the cleaned object.  Check also with strip(1)+sha(1)
172
173
174 * Setup a regression testing machine/system to register and find problems and new improvements..
175
176
177 * Networking performance scalability
178
179
180 * scalability (algorithmic performance) - ideas: http://bulk.fefe.de/scalability/  and http://bulk.fefe.de/lk2006/talk.pdf
181
182
183 * RegressionTest
184
185
186 * also check HowToStressTest
187
188
189 * fix `APIC_IO` on SMP
190
191
192 * Port drivers from other systems. (Being able to support most of the wireless adapters out there would be nice.)
193
194
195 * Port TMPFS.  Look [here](http://wiki.freebsd.org/TMPFS) for the work the Free***BSD guys did.
196
197
198 * Port ZFS.  Look [here](http://wiki.freebsd.org/ZFS) for the work the Free***BSD guys did.
199
200
201 * Port NFSv4.  [This mail](http://leaf.dragonflybsd.org/mailarchive/kernel/2008-01/msg00065.html) is a good starting point.
202
203
204 * Port/sync the following from FreeBSD:
205
206
207 * PCI code (to take advantage of power saving features)
208
209
210 * cpufreq and powerd
211
212
213 * netgraph modules. Contact joerg.
214
215
216 * Bring in support for UFS2, just the changes to extend the width of some fields from 32 bits to 64 bits.
217
218
219 * hardware drivers.
220
221
222 * Port/sync the following from OpenBSD:
223
224
225 * Add support for the NoExecute bit as described in http://www.openbsd.org/papers/auug04/index.html.
226
227
228 * After that, make user stacks and data heaps non-executable. (W^X)
229
230
231 * hardware drivers, specially wireless.
232
233
234 * Import/Update DRM from the DRM git repository (http://dri.freedesktop.org/wiki/DRM).
235
236
237 * CPU scheduler work:
238
239
240 * Design & implement a run-time switchable scheduler framework. (see Luigi's FreeBSD4 scheduler framework at http://info.iet.unipi.it/~luigi/ps_sched.20020719a.diff)
241
242
243 * The next step is to add a Solaris-like dispatcher framework that can handle more than one installed scheduling policy, all running on top of the base fixed lwkt priorities.
244
245
246 * I/O scheduler work:
247
248
249 * factor out, and make the IO scheduler plugabble.
250
251
252 * start with a "NOP" scheduler for RAM based devices
253
254
255 * implement a anticipatory scheduler (see documentation about the linux anticipatory scheduller)
256
257
258 * implement a Fair Queuing scheduler (even out the access to IO between competing processes/users)
259
260
261 * Work relating LWKT (LightWeightKernelThreading)
262
263
264 * Implement lazy IPI cross-processor lwkt message passing.
265
266
267 * Add timeout functionality to lwkt_waitmsg().
268
269
270 * Write man pages for the lwkt message passing API.
271
272
273 * A real slab allocator. Contact corecode for patches.
274
275
276 * clean up buildworld/kernel compilation warnings
277
278
279 * Make the kernel more robust. Do this by removing any cases causing a kernel panic on memory allocation failure. Contact Devon H. O'Dell for information and ideas about how this might work.
280
281
282 * Port XFS. (Contact joerg)
283
284
285 * Computer Architecture related:
286
287
288 * Port DragonFly over to Xen.
289
290
291 * Port DragonFly over to amd64 (look [here](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/src/README.amd64) for more information).
292
293
294 * Port DTrace
295
296
297 * Capriccio threads
298
299
300 * Xen support as domU and dom0 platform
301
302
303 * DistributedFileSystem
304
305
306
307 [[SimonsTODOs]] contain some more or less important things of various sizes and colors
308