From 78abf72df7a0f1cf9ea9a7e0f912f41edccd2684 Mon Sep 17 00:00:00 2001 From: Joel Dahl Date: Thu, 1 Jun 2006 14:33:39 +0000 Subject: [PATCH] Rewrite the ideas page: - Sort everything alphabetically. - Adjust, fix, and clean up a lot of descriptions. - Update outdated/obsolete information. - Remove a few entries from the list. - Add ZFS to the list. --- en/projects/ideas/index.sgml | 1597 ++++++++++++++++------------------ 1 file changed, 768 insertions(+), 829 deletions(-) diff --git a/en/projects/ideas/index.sgml b/en/projects/ideas/index.sgml index 3e174478c2..ac80984c9c 100644 --- a/en/projects/ideas/index.sgml +++ b/en/projects/ideas/index.sgml @@ -1,11 +1,12 @@ - + %navincludes; %includes; %developers; vi(1)"> +wi(4)"> ]> @@ -30,115 +31,83 @@ FreeBSD source tree.

If you have any non-technical questions about this list, please contact &a.netchild; or &a.netchild; and &a.joel;. Technical questions should be directed to the Technical contact for each project, or to the hackers mailinglist.


-

Project ideas

-

File System

Kernel

Networking

+

Ports

+

Security

Userland / Installation Tools

@@ -150,35 +119,12 @@
- -

Port the NetBSD tmpfs (efficient memory file system)

-

At the moment FreeBSD includes a memory-based file system called mfs. - mfs is just an implementation of the regular ffs - designed for - persistent storage - on top of the (volatile) virtual memory system. - This means that it uses the same data structures as the on-disk - implementation, rendering less than optimal performance and memory - usage. With tmpfs, FreeBSD would gain a memory file system which uses - less memory and is faster.

-

Goals:

- -

Rohit Jalan has begun porting - the NetBSD tmpfs to FreeBSD. More information about the current status and - progress is available here.

-

Requirements:

- - -
+ + + -

Autofs

+

AutoFS

Technical contact: &a.alfred;

Create the autofs file system from a specification. @@ -193,7 +139,7 @@


-

Implement Magic Symlinks

+

Magic Symlinks

Technical contact: &a.jwd;

Patches: -

Fix mdfs lockups when using non-sync operation modes

-

Rev. 1.115 of +

MDFS lockups

+

Fix MDFS lockups when using async operation modes. Revision 1.115 of md.c has a discussion of the problem.

Requirements:

+ + +
+ + +

TMPFS

+

At the moment FreeBSD includes a memory-based file system called mfs. + mfs is just an implementation of the regular ffs - designed for + persistent storage - on top of the (volatile) virtual memory system. + This means that it uses the same data structures as the on-disk + implementation, rendering less than optimal performance and memory + usage. With tmpfs, FreeBSD would gain a memory file system which uses + less memory and is faster.

+

Goals:

+ +

Rohit Jalan has begun porting + the NetBSD tmpfs to FreeBSD. More information about the current status and + progress is available here.

+

Requirements:

+
-

Extend dump/restore support for UFS2 to cover extended attributes

+

Extend UFS2 dump/restore support for UFS2

The UFS2 file system in FreeBSD supports extended attributes. Extended attributes are meta-data associated with vnodes representing files and directories. Unfortunately dump and restore do not backup or restore @@ -246,99 +220,123 @@


- -

Make truss(1) able to work without procfs

-

Technical contact: &a.mux;

-

Someone needs to finish the support for PT_SYSCALL in the ptrace() - subsystem, and add support for another ptrace() command that will replace - the PIOCWAIT and PIOCSTATUS ioctls of procfs (should probably be named - PT_WAIT), in order for truss(1) to be able to work without procfs.

+ +

ZFS

+

References: What is ZFS?, + Porting + ZFS

+

OpenSolaris™ gained support for a new file system called ZFS (Zettabyte + File System) as of build 27a. ZFS is a new approach to file + system design and data management, and includes several interesting features + such as transactional semantics, snapshots and good scalability. Porting ZFS + to FreeBSD is higly encouraged, but should be considered a very difficult + task since the current implementation of ZFS is extremely + Solaris-specific.

Requirements:


- -

Port the "Pluggable Disk Schedulers" SoC project to current/GEOM

+ + + + + +

4Front Technologies OSS v4 API

Technical contact: Emiliano Mennucci

-

URL: The Pluggable Disk - Schedulers SoC project, Patches

-

Our "Pluggable Disk Schedulers" SoC project resulted in code which - solved the problem where large sequential I/O requests, or certain - access patterns from one or a few processes, might almost completely - starve other processes. It is available as a patch for RELENG_4 and - RELENG_5. Unfortunately the code in FreeBSD-current (and RELENG_6) - changed too much, so that the patches can not be committed. The goal - of this project is to port the pluggable disk schedulers to the GEOM - framework.

+ href="mailto:netchild@FreeBSD.org">&a.netchild;

+

References: 4Front + Technologies

+

4Front Technologies will go live with an improved OSS API in the near future + and we are discussing syncing with this API at the freebsd-multimedia mailing + list. 4Front Technologies offered assistance. A volunteer would have + to:

+

Requirements:


- -

Sync USB code with NetBSD

+ +

Cache detection support for sparc64

+

Technical contact: &a.netchild; (Page coloring)

Mailing list: freebsd-usb@FreeBSD.org

-

There are various improvements and fixes to the USB code in NetBSD - which have not found their way into FreeBSD yet.

+ href="mailto:freebsd-sparc64@FreeBSD.org">freebsd-sparc64@FreeBSD.org

+

The current page coloring algorithm in the VM does auto tuning of the + number of colors based upon cache size and associativity. On sparc64 + the corresponding variables are not set. The goal of this entry is to + detect the cache size and associativity (this information may already + be available, or at least not much code has to be written) and set the + corresponding variables.

Requirements:


- +
+ + +

CPU usage display in top

+

The current kernel statistics do not know how to calculate the CPU usage + of threaded processes. A volunteer has to understand the current statistics + model, design a new statistics model and implement it.

+

Requirements:

+ + +
-

Document as many sysctls as possible

+

Document all sysctls

Technical contacts: &a.mat;, &a.brd;

The sysctl(8) utility retrieves kernel states and allows processes with - appropriate privilege to change kernel states. On request it is able to - display description lines which document the kernel state. Unfortunately - not every sysctl is documented. This task is possible to share with other + appropriate privilege to change kernel states. On request it is able to + display description lines which document the kernel state. Unfortunately + not every sysctl is documented. This task is possible to share with other volunteers. &a.mat has done some development in Perforce, in the mat_sysctl_cleanup branch.


@@ -357,7 +355,6 @@

Technical contacts: &a.netchild;, &a.ariff;

-

- -
- - -

Add amd64 native support to the Linuxulator

-

FreeBSD provides Linux binary compatibility through a Linux system call - table that is invoked when Linux ELF binaries are executed. The - implementation on amd64 machines only provides support for 32bit (x86) - executables. This needs to be coordinated with the emulation mailinglist regarding - the userland part of the linuxulator.

- -

Requirements:

- - -
- - -

Update the Linuxulator

-

Technical contact: &a.cracauer;

-

FreeBSD provides Linux binary compatibility through a Linux system call - table that is invoked when Linux ELF binaries are executed. This - implementation should be compared with an up-to-date Linux kernel so that - important missing syscalls can be added to ensure that all mainstream - applications continue to work on FreeBSD.

-

Requirements:

-
-

Annotate every assembler file [*.[sS]] with dwarf2 call frame - information

+

DWARF2 call frame information

A debug kernel is not able to show stack traces with cross exceptions anymore. This is because we do not emit any dwarf2 call frame information - for any assembler code, since gdb switched to the dwarf2 format.

+ for any assembler code, since gdb switched to the dwarf2 format. A volunteer + should annotate every assembler file [*.[sS]] with dwarf2 call frame + information.

Requirements:

- -
- - -

Suspend to disk

-

Technical contacts: &a.njl;, &a.bruno;

-

Implement a suspend/resume from disk mechanism. Possibly use the dump - functions to dump pages to disk, then use ACPI to put the system in S4 or - power-off. Resume would require changes to the loader to load the memory - image directly and then begin executing again.

-

Requirements:

- - -
- - -

Implement and profile various algorithms for powerd

-

Technical contacts: &a.njl;, &a.bruno;

-

Implement a range of predictive algorithms (and perhaps design your own) - and profile them for power usage and performance loss. The best - algorithm will save the most power while losing the least performance. This - has been discussed on the ACPI mailing - list and &a.bruno; has some early patches.

-

Requirements:

-
@@ -753,7 +434,7 @@
-

Add some more information in the ktrace(1)/kdump(1) output

+

Extend ktrace/kdump output

Technical contact: &a.netchild;

The ktrace(1) facility allows to monitor what running processes do. It @@ -774,9 +455,212 @@


- -

Rewrite the in-kernel file system syncer and modernize the write behind - code

+ +

FPU subsystem overhaul

+

Port DragonFly's MMX/XMM optimized memcpy/bcopy/bzero/copyin/copyout code + (this includes an FPU subsystem overhaul). Interesting files in the + DragonFly CVS are sys/i386/gnu/fpemul/fpu_system.h, + sys/i386/i386/bcopy.s, sys/i386/i386/genassym.c, sys/i386/i386/globals.s, + sys/i386/i386/machdep.c, sys/i386/i386/math_emu.h, + sys/i386/i386/mp_machdep.c, sys/i386/i386/pmap.c, sys/i386/i386/support.s, + sys/i386/i386/swtch.s, sys/i386/i386/trap.c, sys/i386/i386/vm86bios.s, + sys/i386/i386/vm_machdep.c, sys/i386/include/asmacros.h, + sys/i386/include/globaldata.h, sys/i386/include/md_var.h, + sys/i386/include/npx.h, sys/i386/include/pcb.h, sys/i386/include/thread.h + sys/i386/isa/npx.c, sys/i386/i386/bcopy.s and sys/i386/i386/bzero.s. A more + detailed writeup can be found in this compressed + file. This includes a mail from Matthew Dillon with suggestions on how + to do this in FreeBSD (including a small benchmark which shows 35%-55% speed + improvement for at least those benchmarks).

+

Attilio Rao has begun porting + this to FreeBSD, and he would like to receive some feedback.

+

Requirements:

+ + +
+ + +

Generic input device layer

+

Technical contact: &a.philip;

+

The kernel is lacking a generic input device layer analogous to the Linux + 'input core' layer. Having such a layer would make it easy to write e.g. + touchscreen support (&a.philip; has some work-in-progress regarding pointer + devices and touchscreen support, but not enough time to also cover keyboard + support or other generic features).

+

Requirements:

+ + +
+ + +

High Definition Audio (HDA) support

+

Technical contact: freebsd-multimedia@FreeBSD.org + (mailing list)

+

URL: HDA + Specification

+ +

Some work has been done, but progress is slow. More manpower is needed. Stephane E. Potvin has begun + implementing HDA support to our sound system and a patch is available here. This + is very experimental, and should not be considered stable code.

+

Requirements:

+ + +
+ + +

Implement and profile algorithms for powerd

+

Technical contacts: &a.njl;, &a.bruno;

+

Implement a range of predictive algorithms (and perhaps design your own) + and profile them for power usage and performance loss. The best + algorithm will save the most power while losing the least performance. This + has been discussed on the ACPI mailing + list and &a.bruno; has some early patches.

+

Requirements:

+ + +
+ + +

iSCSI

+

Technical contact: Danny Braniss

+

Danny Braniss has been working on an iSCSI stack for FreeBSD for some time + now. His work is in Perforce, and he has posted several patch sets + and had numerous discussions on the mailing lists.

+

Requirements:

+ + +
+ + +

Linuxulator with native amd64 support

+

FreeBSD provides Linux binary compatibility through a Linux system call + table that is invoked when Linux ELF binaries are executed. The + implementation on amd64 machines only provides support for 32bit (x86) + executables. This needs to be coordinated with the emulation mailinglist regarding + the userland part of the linuxulator.

+ +

Requirements:

+ + +
+ + +

PCI-Hotplug support

+

Technical contact: &a.bms;

+

+

Requirements:

+ + +
+ + +

Pluggable Disk Scheduler

+

Technical contact: Emiliano Mennucci

+

References: The Pluggable Disk + Schedulers SoC project, Patches

+

Our "Pluggable Disk Schedulers" SoC 2005 project resulted in code which + solved the problem where large sequential I/O requests, or certain + access patterns from one or a few processes, might almost completely + starve other processes. It is available as a patch for RELENG_4 and + RELENG_5. Unfortunately the code in FreeBSD-current (and RELENG_6) + changed too much, so that the patches can not be committed. The goal + of this project is to port the pluggable disk schedulers to the GEOM + framework.

+

Requirements:

+ + +
+ + +

Process checkpointing

+

Technical contact: &a.bruno;

+

Process checkpointing allows to migrate some processes to other machines or + to let some processes "survive" a reboot (subject to some constraints). + Interesting files in the DragonFly CVS repository are sys/sys/ckpt.h, + sys/checkpt/* and sys/kern/imgact_elf.c.

+

Requirements:

+ + +
+ + +

Remove procfs dependency from truss

+

Technical contact: &a.mux;

+

Someone needs to finish the support for PT_SYSCALL in the ptrace() + subsystem, and add support for another ptrace() command that will replace + the PIOCWAIT and PIOCSTATUS ioctls of procfs (should probably be named + PT_WAIT), in order for truss(1) to be able to work without procfs(5).

+

Requirements:

+ + +
+ + +

Rewrite the in-kernel file system syncer

References: mail #1, - -

Cache detection support for sparc64

-

Technical contact: &a.netchild; (Page coloring)

-

Mailing list: freebsd-sparc64@FreeBSD.org

-

The current page coloring algorithm in the VM does auto tuning of the - number of colors based upon cache size and associativity. On sparc64 - the corresponding variables are not set. The goal of this entry is to - detect the cache size and associativity (this information may already - be available, or at least not much code has to be written) and set the - corresponding variables.

+ +

Suspend to disk

+

Technical contacts: &a.njl;, &a.bruno;

+

Implement a suspend/resume from disk mechanism. Possibly use the dump + functions to dump pages to disk, then use ACPI to put the system in S4 or + power-off. Resume would require changes to the loader to load the memory + image directly and then begin executing again.

Requirements:

+ +
+ + +

Sync FreeBSD i386 boot code with DragonFly

+

Technical contact: &a.jhb;

+

DragonFly invested a lot of time to clean up and document it. Additionally + they fixed some bugs. Interesting files in the DragonFly CVS are + sys/boot/i386/bootasm.h, sys/boot/i386/bootasmdef.c, sys/boot/boot0/*, + sys/boot/boot2/*, sys/boot/i386/btx/*, sys/boot/i386/cdboot/*, + sys/boot/i386/libi386/amd64_tramp.S, sys/boot/i386/libi386/biosdisk.c and + sys/boot/i386/loader/main.c. An interested volunteer has to compare and + evaluate both implementations and port interesting/good parts.

+

Requirements:

+ + +
+ + +

Sync USB code with NetBSD

+

Mailing list: freebsd-usb@FreeBSD.org

+

There are various improvements and fixes to the USB code in NetBSD + which have not found their way into FreeBSD yet.

+

Requirements:

+ + +
+ + +

Syscons modularization

+

Separate the syscons code into distinct parts for input, output, + console handling (switching, screen savers etc.) and terminal + emulation. Also implement vt100 and vt220 emulation to supplement + the existing SCO emulation. Add a gettytab(5) capability for + specifying the terminal emulation, and add entries to /etc/gettytab + for the alternative emulations.

+

Optionally implement xterm emulation. The top line of the screen + should serve as a title bar, displaying the title set with the \e]0; + escape sequence as well as the vty number.

+

Requirements:

+ + +
+ + +

Update the Linuxulator

+

Technical contact: &a.cracauer;

+

FreeBSD provides Linux binary compatibility through a Linux system call + table that is invoked when Linux ELF binaries are executed. This + implementation should be compared with an up-to-date Linux kernel so that + important missing syscalls can be added to ensure that all mainstream + applications continue to work on FreeBSD.

+

Requirements:

+ + +
+ + + + + + +

csup improvements

+

Technical contact: &a.mux;

+

URL's: csup homepage, CVSweb +

+

&a.mux; is working on a rewrite of CVSup in C, called csup, and he has + imported csup into the FreeBSD base system. It should be ready for use in a + stable environment, but there are however still several missing features. + The following list should be a good starting point:

+ +

Requirements:

+ + +
+ + +

Flight mode for the loader

+

Not every airline allows to use radio transmitters like WLAN-NIC's in + airplanes (yet). The goal of this entry is to provide an entry in the + loader which prohibits drivers for devices which transmit radio signals + to attach to the device. One way of providing this functionality would + be to add a menu entry to the loader which sets a "flight mode" loader + tunable which would have to be queried by every driver which is able to + transmit radio signals to decide if the normal operation is allowed or + if the device has to be disabled. The loader-menu should be able to + detect this tunable in loader.conf and indicate which way of booting is + the current default (in case the user adds it there to be on the safe + side in the airplane).

+

Requirements:

+ + +
+ + +

IAPP preauthentication in hostapd

+

Technical contact: &a.sam;

+

IAPP is the Inter-Access Point Protocol, a protocol by which + cooperating access points communicate about associated wireless + stations. FreeBSD lacks support for this aspect of the protocol in the + hostapd program used to construct a WPA-enabled access point. This task + would port the Linux code that exists to support IAPP in hostapd. This + mostly involves rewriting some user-mode multicast code and testing the + result.

+

Requirements:

+ + +
+ + +

NFS Lockd (improve semantics)

+

Technical contact: &a.alfred;

+ +

Requirements:

+ + +
+ + +

NFS Lockd (kernel implementation)

+

Technical contact: &a.alfred;

+

Moving the lockd implementation into the kernel provides several key + performance and semantic improvements.

+

Requirements:

+
@@ -863,115 +933,25 @@
- -

Implement missing csup features

-

Technical contact: &a.mux;

-

URL's: csup homepage, CVSweb -

-

&a.mux; is working on a rewrite of CVSup in C, called csup, and he has - imported csup into the FreeBSD base system. It should be ready for use in a - stable environment, but there are however still several missing features. - The following list should be a good starting point:

- + +

Update wi

+

Many new and useful features (e.g. crypto protocols like WPA) of the WLAN + infrastructure in the kernel are not used in &man.wi.4;. While &man.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 &man.wi.4; driver.

Requirements:

- -
- - -

Add zeroconf (Rendezvous/Bonjour) support to FreeBSD

-

URL: NetBSD zeroconf - SoC project

-

- -

Requirements:

- - -
- - -

NFS Lockd (improve semantics)

-

Technical contact: &a.alfred;

-

- -

Requirements:

- - -
- - -

NFS Lockd (kernel implementation)

-

Technical contact: &a.alfred;

-

Moving the lockd implementation into the kernel provides several key - performance and semantic improvements.

-

Requirements:

- - -
- - -

Port Web100 to FreeBSD

-

Technical contact: &a.brooks;

-

URL: The Web100 project

-

The Web100 project was created to address the problems of TCP performance - over long-fat network pipes. They created an interesting set of tuning and - monitoring patches for Linux which enable significantly better performance - in this area. Integrating this work into FreeBSD could provide significant - benefits in terms of TCP performance in certain environments.

-

Requirements:

-
-

WPA2 preauthentication support in hostapd

+

WPA2 preauthentication in hostapd

Technical contact: &a.sam;

WPA2 is the authentication protocol defined as part of the IEEE 802.11i @@ -992,123 +972,93 @@


- -

IAPP preauthentication support in hostapd

-

Technical contact: &a.sam;

-

IAPP is the Inter-Access Point Protocol, a protocol by which - cooperating access points communicate about associated wireless - stations. FreeBSD lacks support for this aspect of the protocol in the - hostapd program used to construct a WPA-enabled access point. This task - would port the Linux code that exists to support IAPP in hostapd. This - mostly involves rewriting some user-mode multicast code and testing the - result.

+ +

Zeroconf

+

URL: NetBSD zeroconf + SoC project

+

Add Zeroconf (Rendezvous/Bonjour) support to FreeBSD.

+

Requirements:


- -

Bring wi(4) up to par with the current state of affairs in the WLAN - infrastructure

-

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.

-

Requirements:

- + + + -
+ + + - -

"Flight mode" for the loader

-

Not every airline allows to use radio transmitters like WLAN-NIC's in - airplanes (yet). The goal of this entry is to provide an entry in the - loader which prohibits drivers for devices which transmit radio signals - to attach to the device. One way of providing this functionality would - be to add a menu entry to the loader which sets a "flight mode" loader - tunable which would have to be queried by every driver which is able to - transmit radio signals to decide if the normal operation is allowed or - if the device has to be disabled. The loader-menu should be able to - detect this tunable in loader.conf and indicate which way of booting is - the current default (in case the user adds it there to be on the safe - side in the airplane).

-

Requirements:

- + + + -
- - -

RFC3442 support

-

Technical contact: &a.emaste;

-

URL's: RFC3442

-

Add support for RFC3442, the Classless Static Route option, to the DHCP - client. The original DHCP specification includes a route option but it - supports only class-based routes, which are not very useful today. - RFC3442 adds support for specifying the netmask width for each static - route. Note that the ISC dhcp server does not natively support RFC3442, but - custom options of arbitrary byte strings can be encoded in its configuration - file.

-

Requirements:

- - -
- - -

Small sysinstall renovation

-

- -

Requirements:

- - -
- - -

Extract the partition and slice table editor from sysinstall

+ +

Build options improvements

Technical contact: &a.netchild;

-

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. &a.netchild; has some working code which will (most likely) be - committed after 6.1 is released. The code is nearly finished, so no more help - is needed at the moment.

+

The new "delete-old" and "delete-old-libs" target in /usr/src for 6.1 and + -CURRENT should be extended to support the WITHOUT_* knobs, e.g. + WITHOUT_RESCUE or WITHOUT_CRYPT, and delete files which are covered by those + knobs. Some switches have already been covered. + You can view a list of all switches and what effect they have here.

+

Requirements:

+ + +
+ + +

Import NSS LDAP

+

Since LDAP is very popular today, it would be beneficial to have + NSS-LDAP support available by default. The license of the NSS + LDAP module should however be investigated first.

+

Benefits:

+ +

Requirements:

+ + +
+ + +

Move HESIOD to a NSS module

+

Currently HESIOD 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.

+

Benefits:

+

Requirements: