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,1366 +1,1305 @@ - + %navincludes; %includes; %developers; vi(1)"> +wi(4)"> ]> &header;

Introduction

The FreeBSD project has hundreds of active developers spread all over the world, and many of them have their own parts of the source-tree that they work on. However, there are always a lot of new interesting projects and ideas that needs to be investigated and evaluated, and this is where the FreeBSD project relies on heroic efforts from volunteers. The following list of possible projects is in no way complete, but it should serve as a nice starting point for volunteers who would like to become committers in the future.

Please note that we cannot guarantee that your work will be included in the FreeBSD source tree. This is because people tend to disagree about specifics in the implementation of new features or functionality. However, if you can find a developer who is interested in your work, and you can get him or her to review it, then you are pretty far on your way to get your code into the 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

Additional Information


- -

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. Kernel transport and interaction with the "amd" automounter needs to be completed.

Requirements:


-

Implement Magic Symlinks

+

Magic Symlinks

Technical contact: &a.jwd;

Patches: http://people.FreeBSD.org/~jwd/magiclinks.tgz

Experimental patches exist against 4-STABLE, though the DragonFly implementation using the setvar utility should be examined (interesting files in the DragonFly CVS: sys/kern/init_sysent.c, sys/kern/kern_varsym.c, sys/kern/syscalls.c, sys/kern/syscalls.master, sys/kern/vfs_lookup.c, sys/sys/syscall-hide.h, sys/sys/syscall.h, sys/sys/syscall.mk, sys/sys/sysproto.h, sys/sys/sysunion.h, bin/varsym/varsym.1, bin/varsym/varsym.c).

Andrey V. Elsukov has begun porting this to FreeBSD, and some initial patches for CURRENT can be found here. There is also some on-going development in Perforce.

Requirements:


-

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 such attributes. People interested in this should contact &a.mckusick;.

Requirements:


- -

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:


- +
-

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.

Requirements:

+

Document the sound subsystem

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

-

Requirements:


- -

Syncing with the 4Front Technologies OSS v4 API

+ +

DTrace

Technical contact: &a.netchild;

-

URL: 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:

- + href="mailto:jb@FreeBSD.org">John Birrell

+

URL: Perforce + repository, DTrace for + FreeBSD

+

DTrace is a dynamic tracing facility designed by Sun Microsystems and + released in Solaris 10. They have since released the major part of + Solaris under the banner of OpenSolaris and the Common Development and + Distribution License (CDDL) 1.0.

Requirements:

+
  • A good understanding of the FreeBSD kernel.
  • +
    - -

    Implement necessary kernel interface for 4Front Technologies ALSA to OSS - wrapper (SALSA)

    -

    Technical contact: &a.netchild;

    -

    URL: 4Front - Technologies, SALSA

    -

    + +

    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. A volunteer + should annotate every assembler file [*.[sS]] with dwarf2 call frame + information.

    Requirements:

    +
  • Knowledge of assembly code.
  • +
  • Knowledge of ".cfi_*" pseudo-ops to insert dwarf2 frame descriptors.
  • +
    - -

    Improve locking of the sound system

    + +

    Dynamic module references

    Technical contact: &a.ariff;

    -

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

    +

    Kernel modules may have dynamic references created during operation. + For example net80211 key entries reference functions in the crypto module + that implements the key's cipher. Presently there is no standard mechanism + for expressing this dependency so that module unloading is disallowed; + instead modules must track references and implement their own semantics. + This task is to define and implement a general mechanism for tracking + these references and use them in handling module unload requests.

    Requirements:

    +
  • Good knowledge of C.
  • +
  • Kernel awareness.
  • +
    - -

    Add High Definition Audio (HDA) support to our sound system

    + +

    Extend ktrace/kdump output

    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.

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

    +

    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. Some work + has been completed and committed, but a few parts still remains. More + information is available here.

    Requirements:

    - -
    - - -

    Implement a 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:

    - - -
    - - -

    Add locking to the CAM layer

    -

    Technical contact: &a.scottl;

    -

    &a.scottl; has been working on this for a while, and he has patches in - Perforce.

    -

    Requirements:

    - - -
    - - -

    Implement 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:

    - - -
    - - -

    Port DragonFly's 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 are sys/sys/ckpt.h, sys/checkpt/* and - sys/kern/imgact_elf.c.

    -

    Requirements:

    - +
  • Knowledge of C.
  • +
  • Good knowledge of POSIX interfaces or how to use man(1).
  • +
  • No fear to look into the kernel sources.
  • +
    -

    Evaluate and perhaps port DragonFly's optimized MMX/XMM 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, +

    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:

    +
    - -

    Evaluate and perhaps sync FreeBSD i386 boot code with DragonFly's boot - code

    + +

    Generic input device layer

    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 both - implementations and port interesting/good parts.

    + href="mailto:philip@FreeBSD.org">&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:

    +
    - -

    Fix the CPU usage display in top for threaded processes

    -

    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.

    + +

    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:

    +
  • HDA-based sound card.
  • +
    - -

    Implement PCI-Hotplug support

    -

    Technical contact: &a.bms;

    -

    + +

    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:

    +
  • Basic C knowledge.
  • +
  • Laptop supported by cpufreq(4).
  • +
    - -

    Port Solaris' DTrace

    + +

    iSCSI

    Technical contact: John Birrell, Devon H. O'Dell

    -

    URL: Perforce - repository, DTrace for - FreeBSD

    -

    DTrace is a dynamic tracing facility designed by Sun Microsystems and - released in Solaris 10. They have since released the major part of - Solaris under the banner of OpenSolaris and the Common Development and - Distribution License (CDDL) 1.0.

    + href="mailto:danny@cs.huji.ac.il">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:

    +
  • Knowledge about (i)SCSI/CAM.
  • +
    -

    Add amd64 native support to the Linuxulator

    +

    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 + href="mailto:emulation@FreeBSD.org">emulation mailinglist regarding the userland part of the linuxulator.

    Requirements:

    +
    - -

    Update the Linuxulator

    + +

    PCI-Hotplug support

    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.

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

    +

    Requirements:

    - -
    - - -

    Annotate every assembler file [*.[sS]] with 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.

    -

    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.

    + +

    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:


    - -

    Dynamic module references

    + +

    Process checkpointing

    Technical contact: &a.sam;

    -

    Kernel modules may have dynamic references created during operation. - For example net80211 key entries reference functions in the crypto module - that implements the key's cipher. Presently there is no standard mechanism - for expressing this dependency so that module unloading is disallowed; - instead modules must track references and implement their own semantics. - This task is to define and implement a general mechanism for tracking - these references and use them in handling module unload requests.

    + href="mailto:bruno@FreeBSD.org">&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:


    - -

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

    + +

    Remove procfs dependency from truss

    Technical contact: &a.netchild;

    -

    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. Some work - has been completed and committed, but a few parts still remains. More - information is available here.

    + href="mailto:mux@FreeBSD.org">&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 and modernize the write behind - code

    + +

    Rewrite the in-kernel file system syncer

    References: mail #1, mail #2

    Goals:

    Requirements:


    - -

    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:


    - -

    Super tunnel daemon

    + +

    Sync FreeBSD i386 boot code with DragonFly

    Technical contact: &a.phk;

    -

    IP can be tunneled over IP, UDP, TCP, SSH, DNS, HTTP and many other - protocols, and this means that it is often possible to get a - connection out through a firewall, but each of these encapsulations - require prior setup of a specific program for each encapsulation, and - the user must experiment to decide which one to use at any one time. - The super tunnel daemon should implement pluggable encapsulations and - make it automatically select the most efficient encapsulation that - works at any one time. The user should not notice transitions from one - encapsulation to another, apart from maybe a small delay.

    -

    Wanted features (not sorted or prioritized):

    + href="mailto:jhb@FreeBSD.org">&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:

    + + +
    + + + + + -

    Implement missing csup features

    +

    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:


    - -

    Add zeroconf (Rendezvous/Bonjour) support to FreeBSD

    -

    URL: NetBSD zeroconf - SoC project

    -

    + +

    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:

    +
  • Good knowledge of C.
  • +
  • Wireless networking fundamentals.
  • +
  • Wireless network setup.
  • +

    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

    + +

    Super tunnel daemon

    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.

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

    +

    IP can be tunneled over IP, UDP, TCP, SSH, DNS, HTTP and many other + protocols, and this means that it is often possible to get a + connection out through a firewall, but each of these encapsulations + require prior setup of a specific program for each encapsulation, and + the user must experiment to decide which one to use at any one time. + The super tunnel daemon should implement pluggable encapsulations and + make it automatically select the most efficient encapsulation that + works at any one time. The user should not notice transitions from one + encapsulation to another, apart from maybe a small delay.

    +

    Wanted features (not sorted or prioritized):

    +

    Requirements:

    + +
    + + +

    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:

    +
    -

    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 specification. This protocol is now commonly used to authenticate wireless stations to access points. Part of this protocol is the ability to pre-authenticate a station with one or more access points so that roaming can happen quickly. 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 pre-authentication in hostapd. This mostly involves rewriting some user-mode multicast code and testing the result.

    Requirements:


    - -

    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.

    -

    Requirements:

    + +

    Zeroconf

    +

    URL: NetBSD zeroconf + SoC project

    +

    Add Zeroconf (Rendezvous/Bonjour) support to FreeBSD.

    - -
    - - -

    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

    + + + + + +

    Build options improvements

    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.

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

    +

    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:


    - -

    Small sysinstall renovation

    -

    + +

    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:

    +
  • Knowledge of C.
  • +
  • Knowledge of NSS and LDAP.
  • +
    - -

    Extract the partition and slice table editor from sysinstall

    -

    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.

    + +

    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:


    - -

    Bundled PXE Installer

    -

    It would be great to have a bundled PXE installer. This would allow one to - boot an install server from a FreeSBIE live CD-ROM on one box, set the BIOS - on subsequent boxes to PXE boot, and then have the rest happen by magic. - This would be very helpful for installing cluster nodes, etc.

    + +

    Move NIS/YP to a NSS module

    +

    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.

    +

    Benefits:

    +

    Requirements:


    - -

    Improve our regression testing system

    -

    Technical contact: &a.nik;

    -

    &a.nik; has written a regression test infrastructure using Perl. More of - the regression tests should be made to work with libtap.

    + +

    Multibyte collation support

    +

    Currently FreeBSD supports only single byte collation. Multibyte + collation support would be nice.

    +

    Benefits:

    Requirements:


    - -

    Tracking performance over time

    -

    Technical contact: &a.brooks;

    -

    One of the major issues in a project with the size of FreeBSD is monitoring - changes in performance characteristics over time. Doing this requires - several things. Those include a suite of appropriate tests, hardware to - run the tests on, a database to store results in, and software to - extract interesting results and display them. Solving the whole problems - is probably beyond the scope of one summer's work, but an interesting - subset should be manageable.

    - -
    - -

    Write a NDMP data server

    +

    NDMP data server

    URL: The NDMP Initiative

    The NDMP initiative was launched to create an open standard protocol for network-based backup for network-attached storage. Major commercial storage systems come with a compliant service. This allows major commercial backup systems to backup such NAS devices. Including a NDMP disk server into FreeBSD would allow to play nice out of the box (modulo some configuring) regarding backups in a corporate environment.

    Requirements:


    - -

    Add support for WITHOUT_* switches to "make delete-old"

    + +

    Performance tracking

    Technical contact: &a.netchild;

    -

    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.

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

    +

    The "performance tracking" entry is meant to monitor the + performance of FreeBSD itself over the development time, e.g. someone + makes a change to the kernel and the tracking system is able to show + the performance impact to various subsystems (microbenchmarks) or to + real world applications like apache or mysql (macrobenchmarks). The + tracking system should be able to do this with multiple machines and + multiple configurations (while the goal is not to compare + configurations or machines (but different FreeBSD versions) we would + not mind if it is also able to do this. This does not need to be + implemented from scratch, it is allowed/encouraged to reuse existing + free software.

    Requirements:


    - -

    Move HESIOD out of libc into 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:

    - + +

    PXE Installer

    +

    It would be great to have a bundled PXE installer. This would allow one to + boot an install server from a FreeSBIE live CD-ROM on one box, set the BIOS + on subsequent boxes to PXE boot, and then have the rest happen by magic. + This would be very helpful for installing cluster nodes, etc.

    Requirements:


    - -

    Move NIS/YP out of libc into a NSS module

    -

    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.

    -

    Benefits:

    + +

    Regression testing system

    +

    Technical contact: &a.nik;

    +

    &a.nik; has written a regression test infrastructure using Perl. More of + the regression tests should be made to work with libtap.

    Requirements:


    - -

    Import NSS LDAP support into the base system

    -

    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:

    - + +

    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:


    - -

    Multibyte collation support

    -

    Currently FreeBSD supports only single byte collation. Multibyte - collation support would be nice.

    -

    Benefits:

    + +

    Sysinstall

    Requirements:


    Unicode support in vi

    Many base system utilities grew multibyte support in 2004. It would be nice to continue this trend by teaching &man.vi.1; to display and edit documents in UTF-8 encoding.

    Requirements:


    + + + +

    Projects at FreeBSD.org

    Additional projects may be found by browsing the FreeBSD Development Projects page. The most prominent projects are:

    Do not forget to have a look at the other projects too or by viewing some of the recent Developer Status Reports.


    Technical contacts

    If you are interested in working on a project not explicitly mentioned above, you may want to contact one of the potential technical contacts below:

    Additionally, there are a lot of interesting mailing lists that can be used when searching information about specific subjects.


    &footer;