Mega update:

-  Remove deadlines from the "kbdmux" and "SMP kernels for install" entries,
   since they have expired.
-  The development of csup seems to have picked up a lot during the last few
   weeks, so update this entry somewhat.  Also, csup is available as a port
   now, so add a small note about that too.
-  Add a note about the development of Magic symlinks in Perforce.
-  New entry: Extract the partition and slice table editor from sysinstall.
-  New entry: Add some more information in the ktrace(1)/kdump(1) output.
-  New entry: Bring wi(4) up to par with the current state of affairs in the
   WLAN infrastructure.
-  New entry: Re-factor Apple Talk into a kernel module.
-  New entry: Move NIS/YP out of libc into a NSS module.
-  New entry: Move HESIOD out of libc into a NSS module.
-  New entry: Import NSS LDAP support into the base system.
-  New entry: Rewrite the in-kernel filesystem syncer and modernize the write
   behind code.
-  New entry: Add support for NO_* switches to "make delete-old".
-  Various wordsmithing and cleanups.

A lot of stuff submitted by: netchild
This commit is contained in:
Joel Dahl 2006-02-02 16:38:08 +00:00
parent a41b03238b
commit 334598cb14
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=27006

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/en/projects/ideas/index.sgml,v 1.15 2006/01/17 11:20:25 joel Exp $">
<!ENTITY date "$FreeBSD: www/en/projects/ideas/index.sgml,v 1.16 2006/01/23 12:01:29 joel Exp $">
<!ENTITY title "FreeBSD list of projects and ideas for volunteers">
<!ENTITY % navincludes SYSTEM "../../includes.navdocs.sgml"> %navincludes;
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
@ -90,6 +90,16 @@
<li><a href="#p-algopowerd">Implement and profile various algorithms for
powerd</a></li>
<li><a href="#p-modrefcnt">Dynamic module references</a></li>
<li><a href="#p-ktrace">Add some more information in the
ktrace(1)/kdump(1) output.</a></li>
<li><a href="#p-hesiodlibc">Move HESIOD out of libc into a NSS
module</a></li>
<li><a href="#p-nisyplibc">Move NIS/YP out of libc into a NSS
module</a></li>
<li><a href="#p-impnssldap">Import NSS LDAP support into the base
system.</a></li>
<li><a href="#p-rewritesyncer">Rewrite the in-kernel filesystem syncer and
modernize the write behind code</a></li>
</ul>
<h3>Networking</h3>
@ -104,6 +114,9 @@
<li><a href="#p-wpa2preauth">WPA2 preauthentication support in
hostapd</a></li>
<li><a href="#p-iapp">IAPP preauthentication support in hostapd</a></li>
<li><a href="#p-wi">Bring wi(4) up to par with the current state of affairs
in the WLAN infrastructure</a></li>
<li><a href="#p-appletalk">Re-factor Apple Talk into a kernel module</a></li>
</ul>
<h3>Security</h3>
@ -115,10 +128,14 @@
<ul>
<li><a href="#p-smpinstall">SMP kernels for install</a></li>
<li><a href="#p-sysinstall">Small sysinstall renovation</a></li>
<li><a href="#p-sysinstall2">Extract the partition and slice table editor
from sysinstall</a></li>
<li><a href="#p-pxeinstaller">Bundled PXE Installer</a></li>
<li><a href="#p-regression">Improve our regression testing system</a></li>
<li><a href="#p-performancetracking">Tracking performance over time</a></li>
<li><a href="#p-ndmp">Write a NDMP data server</a></li>
<li><a href="#p-noswitches">Add support for NO_* switches to
"make delete-old"</a></li>
</ul>
<h3>Additional Information</h3>
@ -182,7 +199,8 @@
bin/varsym/varsym.c).</p>
<p><a href="mailto:bu7cher@yandex.ru">Andrey V. Elsukov</a> has begun porting
this to FreeBSD, and some initial patches for CURRENT can be found <a
href="http://butcher.heavennet.ru/patches/kernel/varsym/">here</a>.</p>
href="http://butcher.heavennet.ru/patches/kernel/varsym/">here</a>.
There is also some on-going development in Perforce.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Ability to read and understand foreign C code.</li>
@ -209,12 +227,11 @@
<h2>Working kbdmux</h2>
<p><strong>Technical contact</strong>: <a
href="mailto:emax@FreeBSD.org">&a.emax;</a></p>
<p><strong>Deadline</strong>: January 31</p>
<p>We need this for the growing number of systems that
assume that USB is the primary keyboard. Current status appears to be
that the kbdmux driver breaks very easily. We need this working well
enough where it can be enabled by default, and all attached keyboards
Just Work. This needs to be resolved before FreeBSD 6.1.</p>
Just Work. This needs to be resolved as soon as possible.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>C knowledge.</li>
@ -688,7 +705,7 @@
<a name="p-modrefcnt"></a>
<h2>Dynamic module references</h2>
<p><strong>Technical contacts</strong>: <a
<p><strong>Technical contact</strong>: <a
href="mailto:sam@FreeBSD.org">&a.sam;</a></p>
<p>Kernel modules may have dynamic references created during operation.
For example net80211 key entries reference functions in the crypto module
@ -705,21 +722,137 @@
<hr>
<a name="p-ktrace"></a>
<h2>Add some more information in the ktrace(1)/kdump(1) output</h2>
<p><strong>Technical contact</strong>: <a
href="mailto:netchild@FreeBSD.org">&a.netchild;</a></p>
<p>The ktrace(1) facility allows to monitor what running processes do. It
allows to determine if a process is stuck or if it still does useful work.
The goal of this item is to look at the kernel interfaces, add missing
"pieces" (e.g. syscall's) to the ktrace output and to extend the output
with "decoded" (translating hex/dec values into human readable
information, e.g. O_RDONLY in the case of open(2)) information.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
<li>Good knowledge of POSIX interfaces or how to use man(1).</li>
<li>No fear to look into the kernel sources.</li>
</ul>
<hr>
<a name="p-hesiodlibc"></a>
<h2>Move HESIOD out of libc into a NSS module</h2>
<p>Currently HESIOD is build statically into libc. Since LDAP is more
popular today, it isn not necessary to provide this name service to
every consumer of libc by default.</p>
<p><strong>Benefits</strong>:</p>
<ul>
<li>Less code linked to every application.</li>
<li>Less complexity in libc.</li>
<li>More flexibility for system administrators.</li>
<li>More consistent use of subsystems (NSS).</li>
<li>Allows to slim down libc further by moving XDR, RPC and the DNS
code into a separate libraries (may depend upon the NIS/YP -> NSS
entry).</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
</ul>
<hr>
<a name="p-nisyplibc"></a>
<h2>Move NIS/YP out of libc into a NSS module</h2>
<p>Currently NIS/YP is build statically into libc. Since LDAP is more
popular today, it is not necessary to provide this name service to
every consumer of libc by default.</p>
<p><strong>Benefits</strong>:</p>
<ul>
<li>Less code linked to every application.</li>
<li>Less complexity in libc.</li>
<li>More flexibility for system administrators.</li>
<li>More consistent use of subsystems (NSS).</li>
<li>Allows to slim down libc further by moving XDR, RPC and the YP
code into a separate libraries (may depend upon the HESIOD -> NSS
entry).</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
</ul>
<hr>
<a name="p-impnssldap"></a>
<h2>Import NSS LDAP support into the base system</h2>
<p>Since LDAP is very popular today, it would be beneficial to have
NSS-LDAP support available by default. The NSS license should however be
investigated first.</p>
<p><strong>Benefits</strong>:</p>
<ul>
<li>Better user management support in large scale environments out of
the box.</li>
<li>Better user management support if heterogeneous environments out of
the box.</li>
<li>Allows further work for better integration with Active Directory.</li>
<li>Allows further work to enhance the FreeBSD installation process
(guided configuration of the LDAP part).</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
<li>Knowledge of NSS and LDAP.</li>
</ul>
<hr>
<a name="p-rewritesyncer"></a>
<h2>Rewrite the in-kernel filesystem syncer and modernize the write behind
code.</h2>
<p><strong>References</strong>: <a
href="http://lists.freebsd.org/mailman/htdig/freebsd-arch/2005-March/003594.html">mail
#1</a>, <a
href="http://lists.freebsd.org/mailman/htdig/freebsd-performance/2005-February/001083.html">mail
#2</a></p>
<p><strong>Goals</strong>:</p>
<ul>
<li>Change the syncer so it can sync out to multiple physical devices
simultaneously.</li>
<li>Only write out up to X megabytes of data, remember where it
left off, and then proceed to the next dirty file (OpenBSD and
NetBSD already do this).</li>
<li>Replace the write_behind code with something (detect the existence
of a large amount of sequential dirty data and kick another thread
to flush it out synchronously, instead of doing it itself
asynchronously) integrated into the syncer (the data set size could
perhaps be increased from 64KB to 1MB).</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Ability to read and understand foreign C code.</li>
<li>Ability to write C code.</li>
<li>Some understanding of the VM system / buffer cache.</li>
</ul>
<hr>
<a name="p-csup"></a>
<h2>Contribute to the Csup project</h2>
<p><strong>Technical contact</strong>: <a
href="mailto:mux@FreeBSD.org">&a.mux;</a></p>
<p><strong>URL's</strong>: <a
href="http://mu.org/~mux/csup.html">Csup homepage</a>, <a
href="http://www.freebsd.org/cgi/cvsweb.cgi/projects/csup/">CVSWeb</a>, <a
href="http://wikitest.freebsd.org/moin.cgi/ChristophMathys">FreeBSD Csup SoC
project</a></p>
href="http://www.freebsd.org/cgi/cvsweb.cgi/projects/csup/">CVSWeb</a>
</p>
<p>Csup is a rewrite of CVSup in C, mainly developed by &a.mux;. A rewrite in
C would allow the FreeBSD project to include the functionality of CVSup into
the FreeBSD base system, instead of shipping it as a separate package.
During the Google summer of code 2005, the Csup project received help from
Christoph Mathys which resulted in a set of patches that awaits integration
with Csup. You can find snapshots of Csup and the patches from Christoph,
You can find snapshots of Csup,
along with a CVSWeb interface to the code and much more by following the
links above.</p>
links above. Csup is also available from the Ports Collection, which should
make it somewhat easier for curious people to test.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Strong knowledge of C.</li>
@ -865,6 +998,49 @@
<hr>
<a name="p-wi"></a>
<h2>Bring wi(4) up to par with the current state of affairs in the WLAN
infrastructure</h2>
<p>Many new and useful features (e.g. crypto protocols like WPA) of the WLAN
infrastructure in the kernel are not used in wi(4). While wi(4) cards are
old and can not compete with recent wireless cards, they are still in use in
a lot of places. The goal of this item is to examine the WLAN infrastructure
and other WLAN drivers in the tree for nice features and port/use them in
the wi(4) driver.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
<li>No fear to "use the source Luke" and to have a look at undocumented
parts of the kernel.</li>
<li>At least one wi(4) card and one other wireless device to test
against.</li>
</ul>
<hr>
<a name="p-appletalk"></a>
<h2>Re-factor Apple Talk into a kernel module</h2>
<p>At the moment the Apple Talk protocol is only available as a compile time
option. The goal of this item is to allow to load the Apple Talk protocol
at runtime (as part of netgraph or as a "standalone" module) and to add
appropriate locking (as a start even a generic subsystem lock would be ok,
more fine grained locking can be added later).</p>
<p><strong>Benefits</strong>:</p>
<ul>
<li>No need to rebuild the kernel.</li>
<li>No speed decrease of other network protocols when Apple Talk is used
(because of degrading the entire network stack into non-MPSAFE mode).</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
<li>Knowledge of Apple Talk.</li>
<li>Knowledge of the network stack.</li>
<li>Maybe knowledge of netgraph.</li>
</ul>
<hr>
<a name="p-securemines"></a>
<h2>SecureMines</h2>
<p><strong>Technical contact</strong>: <a
@ -885,7 +1061,6 @@
<a name="p-smpinstall"></a>
<h2>SMP kernels for install</h2>
<p><strong>Deadline</strong>: January 31</p>
<p>Right now we only install a UP kernel, for
performance reasons. We should be able to package both a UP and SMP
kernel into the release bits, and have sysinstall install both. It
@ -898,7 +1073,7 @@
case, the point is to make the process Just Work for the user, without
the user needing to know arcane loader/sysctl knobs. SMP laptops are
here, and we should be ready to support SMP out-of-the-box. This needs
to be resolved before FreeBSD 6.1.</p>
to be resolved as soon as possible.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Good knowledge of C.</li>
@ -930,6 +1105,25 @@
<hr>
<a name="p-sysinstall2"></a>
<h2>Extract the partition and slice table editor from sysinstall</h2>
<p><strong>Technical contact</strong>: <a
href="mailto:netchild@FreeBSD.org">&a.netchild;</a></p>
<p>The partition and slice table editor in sysinstall is not only useful at
system installation time, it is also a nice tool to handle new disks in an
already setup system. The goal of this entry is to extract (and perhaps
enhance) this editor from sysinstall into a standalone tool. This allows us
to remove sysinstall when the new installer enters the tree without loosing
nice functionality. Additionally novice users cannot shoot themselves in the
foot by accidentally triggering the wrong actions in unrelated parts of
sysinstall.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Knowledge of C.</li>
</ul>
<hr>
<a name="p-pxeinstaller"></a>
<h2>Bundled PXE Installer</h2>
<p>It would be great to have a bundled PXE installer. This would allow one to
@ -956,7 +1150,7 @@
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Good knowledge of scripting languages (perl preferred).</li>
<li>Good knowledge of scripting languages (Perl preferred).</li>
<li>Good knowledge of software testing.</li>
</ul>
@ -1006,6 +1200,21 @@
<hr>
<a name="p-noswitches"></a>
<h2>Add support for NO_* switches to "make delete-old"</h2>
<p><strong>Technical contact</strong>: <a
href="mailto:netchild@FreeBSD.org">&a.netchild;</a></p>
<p>The new "delete-old" and "delete-old-libs" target in /usr/src for 6.1 and
-current should be extended to support the NO_* knobs, e.g. NO_RESCUE or
NO_CRYPT, and delete files which are covered by those knobs.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Time to build and install the world several times.</li>
<li>A way to determine which files were not touched by an installworld.</li>
</ul>
<hr>
<a name="p-projects"></a>
<h2>Projects at FreeBSD.org</h2>
<p>Additional projects may be found by browsing the <a