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@freeBSD.ORG Project lead: John Baldwin <jhb@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@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@FreeBSD.ORG Project lead: Warner Losh <imp@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@FreeBSD.ORG Project leads: Peter Wemm <peter@FreeBSD.ORG> Doug Rabson <dfr@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@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@FreeBSD.ORG Project lead: Benno Rice <benno@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@FreeBSD.ORG Project lead: Jake Burkholder <jake@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@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@FreeBSD.ORG Project lead: Alexander Langer <alex@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@freeBSD.ORG Project lead: Warner Losh <imp@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@FreeBSD.org with "unsubscribe freebsd-announce" in the body of the message