X-Git-Url: https://gitweb.dragonflybsd.org/ikiwiki.git/blobdiff_plain/2968516672b1463b6c478a5839147766743ada68..HEAD:/docs/developer/ProjectsPage.mdwn diff --git a/docs/developer/ProjectsPage.mdwn b/docs/developer/ProjectsPage.mdwn index 5b3972a5..b29d72b6 100644 --- a/docs/developer/ProjectsPage.mdwn +++ b/docs/developer/ProjectsPage.mdwn @@ -1,10 +1,10 @@ -# DragonFly Projects +[[!meta title="DragonFly Projects"]] 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. Projects that can be clearly used for Google Code-In are marked with their category, where applicable. Some unmarked items may be eligible; it depends on how the student wants to tackle the project. -[[!toc levels=3 ]] +[[!toc levels=2 startlevel=2]] ## Documentation projects @@ -21,10 +21,6 @@ Projects that can be clearly used for Google Code-In are marked with their categ * Add lwp support to ptrace/gdb/core dumps. * UTF8 support in the console -### dma -* Make dma(8) our default MTA -* Remove sendmail (optional) - ### Scalability (algorithmic performance) (GCI:Research) * [http://bulk.fefe.de/scalability/](http://bulk.fefe.de/scalability/) * [http://bulk.fefe.de/lk2006/talk.pdf](http://bulk.fefe.de/lk2006/talk.pdf) @@ -33,7 +29,7 @@ Projects that can be clearly used for Google Code-In are marked with their categ * 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) -### Port BSD-licensed tools (ex: `grep`, `diff` and `sort`) (GCI:Code) +### Port BSD-licensed tools (ex: `diff` and `sort`) (GCI:Code) * The OpenBSD 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, ...). @@ -62,16 +58,22 @@ Projects that can be clearly used for Google Code-In are marked with their categ * Port this core functionality into a public libhammer library so that other base and third party utilities may take advantage of it. * See commit: cb7575e6a89409a2041a37fcfc22ce9e41297ab8 -- libHAMMER already exists, port functionality into it! -### Clean up crypt(3) consumers -* crypt(3) can legitimately return NULL on error, but many consumers do not check for this, instead passing the return directly to str[n]cmp. Fix these cases. -* Fix these cases in pkgsrc as well. +### Live images enhancement + +The live images could be made easier to use by not assuming a QWERTY keyboard layout. + +Not beeing able to choose a localized keyboard layout before having to type 'installer' or 'root' may be a deal breaker for some users. +A simple menu replacing login(1) and displaying the following three choices could be a good solution: + +1. Set keyboard layout +2. Launch the installer +3. Login as root ## Kernel projects ### One-liners * Port the BSDL OSS code to DragonFly * 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. -* Implement [`sem_open()`](http://www.opengroup.org/onlinepubs/000095399/functions/sem_open.html), [`sem_close()`](http://www.opengroup.org/onlinepubs/000095399/functions/sem_close.html), and [`sem_unlink()`](http://www.opengroup.org/onlinepubs/000095399/functions/sem_unlink.html). (GCI:Code) * Port or update drivers from other systems. * Port Linux emulation to x86-64 @@ -80,7 +82,6 @@ Projects that can be clearly used for Google Code-In are marked with their categ * Bring in support for UFS2, just the changes to extend the width of some fields from 32 bits to 64 bits. (GCI:Code) * hardware drivers. * ext2fs -* DTrace ### Code to port/sync from OpenBSD * Add support for the NoExecute bit as described in [http://www.openbsd.org/papers/auug04/index.html](http://www.openbsd.org/papers/auug04/index.html). @@ -91,10 +92,6 @@ Projects that can be clearly used for Google Code-In are marked with their categ * A scheduler API supporting multiple scheduler implementations already exists * Add a Solaris-like dispatcher framework that can handle more than one installed scheduling policy -### I/O scheduler -* A pluggable kernel I/O scheduler already exists -* Implement additional disk scheduling policies - ### Implement boot cache * Effectively a smart readahead. * Store the pattern of incoming read requests of the boot disk. @@ -184,16 +181,6 @@ Projects that can be clearly used for Google Code-In are marked with their categ ### Tear out condvars * Conditional vars -- condvar(9), could be replaced with other locking primitives and our tsleep/wakeup interlock. -### Make karc4random in libkern per-cpu (or at least wrap its own token around it) -* Verify that it is possible and safe to do this, what care would need to be taken, especially with respect to the random seeding? -* Pull out locks around calls to karc4rand* - -### Improve kernel spinlock debug-ability -* Add a const char *descr field to the spinlock structure. -* Adjust spin_init() and all use cases, SPINLOCK_INITIALIZER() could juse use macro string extensions (# head) to install the name there. -* Adjust error messages to print the spinlock desc field. -* This change will require a full world & kernel recompile. - ### Partially rewrite buffer cache * Buffer cache buffers map VM pages from the filesystems VM-backed vnodes, the "buffer space" is the maximum amount of virtual space to allocate to these buffers. * When the buffer_map KVA space gets fragmented it caused very expensive defrag operations, the buffer_map KVA was recently increased to double the actual buffer space to allow full space utilization in the face of fragmentation and reduce the frequency of defrag operations. @@ -297,15 +284,5 @@ Projects that can be clearly used for Google Code-In are marked with their categ 1. machdep.cpu.core_count: 1 1. machdep.cpu.thread_count: 1 -## Live images enhancement - -The live images could be made easier to use by not assuming a QWERTY keyboard layout. - -Not beeing able to choose a localized keyboard layout before having to type 'installer' or 'root' may be a deal breaker for some users. -A simple menu replacing login(1) and displaying the following three choices could be a good solution: - -1. Set keyboard layout -2. Launch the installer -3. Login as root For more theoretical projects and project concepts see [[ResearchProjects|/docs/developer/ResearchProjectsPage]]