5.0 project list ("Help Wanted")
Jordan Hubbard
jkh at freebsd.org
Mon Sep 10 17:38:24 PDT 2001
Many people, upon hearing of 5.0's untimely delay for a full year,
have asked what they can do to help 5.0 get back on track. What
follows, in no particular order, is a list of outstanding projects for
5.0 and as much information on them as I've been able to collect
thus far. Thanks!
- Jordan
o SMPng
This is the next-generation SMP project which is slated to replace
the SMP implementation FreeBSD currently uses. Though FreeBSD
already gets surprisingly good performance out of multi-processor
machines by juggling user processes between CPUs and simply allowing
only one CPU in the kernel at a time (the so-called "Giant lock"
model), there's no question that it can be done better. The entire
kernel can be internally multi-threaded and individual sections
given their own locks so that multiple CPUs can execute in the
kernel at once, also making execution pre-emptable and the kernel
fully re-entrant. Multi-threading the kernel is interesting from a
wide number of architectural angles, from real-time applications to
parallel processing, and it's a very big job. Some of the subsystems
affected by this are:
Network
CAM (scsi)
Audio
Filesystems
VM system
So if you have a specific area of interest, you might tackle some
of the lock-pushdown issues there.
Prerequisites: C and BSD/Unix internals. Useful: Understanding
threading and, in some cases, x86 assembly.
Resources:
Mailing list: smp at freeBSD.ORG
Project lead: John Baldwin <jhb at FreeBSD.ORG>
Project info: http://people.freebsd.org/~jasone/smp/
All queries should be directed towards the mailing list unless
you have something truly earth-shattering to communicate, in
which case you can talk to the project lead.
o KSE
Kernel Scheduled Entities represent a fundamentally different way of
dispatching kernel threads and, while not actually a part of the
SMPng project, represent an important step in that project
fulfilling its potential. KSEs, or "scheduler activations" as
they're also sometimes known, allow for multi-threaded applications
to scale much better in performance, especially in multi-CPU
environments. They do, however, require considerable re-working of
various kernel data structures, which is why this is another big
kernel project.
Prerequisites: C and BSD/Unix internals, the fundamentals of
threaded programming.
Resources:
Project lead: Julian Elischer <julian at FreeBSD.ORG>
Project info: http://people.freebsd.org/~jasone/kse/
http://people.freebsd.org/~julian/threads/
You should take care to read the various papers at the cited URLs in
order to gain a better understanding of the project, after which you
can contact the project lead directly to volunteer for either
testing or generating patches.
o NEWCARD
NEWCARD is a project to substantially re-write the aging PCCARD
support code in FreeBSD, on which many laptops currently rely. Not
only does NEWCARD interface more properly with FreeBSD's NewBus
driver abstractions, it also supports the more modern 32-bit CARDBUS
family of cards. This project can use testers, developers and
donations of hardware where more the esoteric types of laptop or
CARDBUS technology are concerned.
Prerequisites: A good working knowledge of C and Unix internals.
Useful: Familiarity with mobile computing applications.
Resources:
Mailing list: mobile at FreeBSD.ORG
Project lead: Warner Losh <imp at FreeBSD.ORG>
This project doesn't have any known web resources associated with it
yet, but Warner Losh, the project lead, is pretty active in both the
English and Japanese mobile mailing lists. For more information,
contact Warner or monitor the mobile mailing list.
o Itanium (IA-64) Port
This is a project to port to Intel's IA-64 architecture, also called
the Itanium. It is a wholly new CPU design with no backwards
compatibility for the x86 (IA-32) architecture and is 64 bit. It
also relies substantially on compiler support to achieve proper
performance and a number of people are working on this from various
angles. Itanium machines also have a very different BIOS
architecture and require a substantially different system bootstrap.
Prerequisites: A thorough knowledge of C and FreeBSD internals.
Useful: A knowledge of IA-64 assembly language. It also helps to have
one of these machines.
Mailing list: ia64 at FreeBSD.ORG
Project leads: Peter Wemm <peter at FreeBSD.ORG>
Doug Rabson <dfr at FreeBSD.ORG>
If you're interested in this project, you should probably first join
the mailing list and then indicate your specific areas of interest
there.
o AMD 64 bit ("Hammerhead") port.
This project is quite a bit simpler than the Itanium port since AMD
has taken pains to ensure quite a bit of backwards-compatibility
with their earlier chipsets, but there is still some work to be done
in making this platform perform to its fullest potential.
Prerequisites: Be a close, personal friend of AMD so that you can
get your hands on one of these nice machines.
Project lead: David O'Brien <obrien at FreeBSD.ORG>
There is not a lot in the way of information on this port yet, so
talk to the project lead if you're interested in helping out.
o PowerPC Port
This project is a fairly straight-forward port to the PowerPC
architecture, with Apple Macintosh G3/G4 machines serving as the
initial porting target. This gives FreeBSD the choice of another
desktop platform in addition to making its code base more relevant
to the embedded-systems market, for which the PowerPC is a popular
architecture.
Prerequisites: A thorough knowledge of C and FreeBSD internals.
Useful: PowerPC assembly language and Macintosh hardware.
It also helps to have one of these machines.
Mailing list: ppc at FreeBSD.ORG
Project lead: Benno Rice <benno at FreeBSD.ORG>
Project info: http://people.freebsd.org/~benno/
If you're interested in this project, you should probably first join
the mailing list and then indicate your specific areas of interest
there. Benno is also receptive to offers of help with the "heavy
lifting" on this project.
o Sun UltraSPARC Port
This project is another fairly straight-forward port to Sun's
UltraSPARC (64 bit) architecture. The UltraSPARC is very popular in
server environments, making it a natural target for FreeBSD.
Prerequisites: A thorough knowledge of C and FreeBSD internals.
Useful: UltraSPARC assembly language and UltraSPARC hardware.
It also helps to have one of these machines.
Mailing list: sparc at FreeBSD.ORG
Project lead: Jake Burkholder <jake at FreeBSD.ORG>
Project info: http://people.freebsd.org/~jake/
This project is fairly young, so you may wish to contact Jake
directly if you're really keen to get involved at the ground
floor, so to speak.
o FreeBSD binary updater
This project seeks to make it possible to update FreeBSD systems in
the field via binary update packages, appropriately checksummed and
stamped for security. It should also be possible to easily reverse
the state of an update if it produces unwonted results and to update
machines regularly or on an infrequent basis, following whatever
chosen release track desired. The binary updater is partially
finished, with a sample server and client available, but has some
ways to go before it's "mission capable".
Project lead: Murray Stokely <murray at FreeBSD.ORG>
Project info: http://people.freebsd.org/~murray/updater.html
Prerequisites: A thorough knowledge of C.
Useful: Some familiarity with security fundamentals.
This project is also fairly young, so talk to Murray if you're
interested in shaping its design or (best yet) helping to implement
it.
o libh package system / installer
This project, now in progress for a little over a year, seeks to
provide a complete replacement for sysinstall and the pkg_install
package management suite. It is based on C, C++ and Secure TCL and
already offers an abstract UI mechanism which allows for both CUI
and GUI interfaces using the same script-based installation and
packaging tools, as well as a DB-based package management and
registration system. A good deal of the fundamentals are already
finished and this project simply need one concentrated push to
achieve its full potential.
Mailing list: libh at FreeBSD.ORG
Project lead: Alexander Langer <alex at FreeBSD.ORG>
Project info: http://people.freebsd.org/~alex/libh
Prerequisites: A thorough knowledge of C, C++ and TCL
Useful: UI design. A thick skin for working on installers.
o CITRUS
This is a project to significantly increase FreeBSD's support
for foreign locales, conforming to ISO C/SUSV2.
Prerequisites: A thorough knowledge of I18N issues and multi-byte
character formats.
Useful: Speaking some language other than English.
Mailing list: i18n at freeBSD.ORG
Project lead: Warner Losh <imp at FreeBSD.ORG>
Project info: http://people.freebsd.org/~imp/index-en.html
This is the moderated mailing list freebsd-announce.
The list contains announcements of new FreeBSD capabilities,
important events and project milestones.
See also the FreeBSD Web pages at http://www.freebsd.org
To Unsubscribe: send mail to majordomo at FreeBSD.org
with "unsubscribe freebsd-announce" in the body of the message
More information about the freebsd-announce
mailing list