Home | History | Download | only in doc
      1 #	$NetBSD: ROADMAP,v 1.24 2008/08/06 19:52:43 perry Exp $
      2 
      3 *** THIS FILE IS OBSOLETE ***
      4 
      5 Although many of the projects in this file are still current and
      6 valid, roadmap information is now stored in the src/doc/roadmaps
      7 directory.
      8 
      9 This file is temporarily retained to allow the information in it to be
     10 transitioned.
     11 
     12 ------------------------------------------------------------
     13 
     14 
     15 A high-level roadmap for NetBSD
     16 
     17 This file contains a general map of where we would like to take
     18 NetBSD over the next N years.  It is not highly detailed or overly
     19 specific about each item.  There are several different "TODO" files
     20 and "NetBSD Projects" lists in various places that contain some
     21 more detailed plans.  This is the framework in which those projects
     22 and plans are expected to fit.
     23 
     24 As this is a volunteer project, there are no specific dates beside
     25 these items.  These items may or may not get picked up in any order,
     26 and the roadmap may change as technologies and perceived needs
     27 change.
     28 
     29 The roadmap, of course, is constructed in the context of the
     30 Project's (broad) goals:
     31 
     32 	* clean design		* stable		* fast 
     33 	* clean licensing	* portable		* interoperable
     34 	* conformant		* commercial-ready	* research-ready
     35 	* hobby-ready
     36 
     37 In general, we are headed for:
     38 
     39 	* "State of the art" tools (current (and stable) GNU tools,
     40 	  addition of Solaris's dtrace or similar functionality, kernel
     41 	  core dumps on all platforms and post-mortem analysis tools,
     42 	  performance analysis tools with support for hardware assists
     43 	  like PMCs)
     44 
     45 	* Support for all devices without encumbered code
     46 
     47 	* Managed growth of the base system
     48 
     49 	* Minimal GPL / LGPL code in the base system
     50 
     51 	* Maximal performance without compromising portability
     52 
     53 	* "State of the art" technology in the kernel and userland
     54 
     55 	* No bugs, no security vulnerabilities
     56 
     57 	* In combination with pkgsrc, a complete system for a variety
     58 	  of users, administrators, and researchers: desktops, embedded
     59 	  devices, servers, workstations, and portables
     60 
     61 This is, by no means, a comprehensive list, and purposefully aggressive.
     62 One of the many challenges will be to achieve excellence in each arena
     63 we tackle and not settle for being a "jack of all trades, master of none."
     64 
     65 The following, more specific, items are divided into rough categories:
     66 	1. Platform independent kernel
     67 	2. Platform independent userland
     68 	3. Platform dependent kernel
     69 	4. Platform dependent userland
     70 	5. Other
     71 
     72 If you'd like to take on a project, please record your name/email,
     73 the date that you're claiming a project (or part of a project--if
     74 a part, please specify the part), and an expected completion date.
     75 This will hopefully avoid both duplication of effort and too many
     76 or too-extended stalls.
     77 
     78 PLEASE NOTE THAT THIS IS A VOLUNTEER PROJECT, AND THAT NONE OF THESE 
     79 RELEASE VERSIONS, OR NAMES, IS A GUARANTEE OF THE FUNCTIONALITY BEING  
     80 COMPLETE OR EVEN STARTED.  INTERESTED PARTIES SHOULD CONTACT
     81 
     82         core (a] NetBSD.org
     83 
     84 FOR MORE INFORMATION.
     85 
     86 
     87 1. Platform independent kernel
     88 ==============================
     89 aa. Scheduler works
     90     Separation of context switching and thread scheduling.
     91 	Responsible: yamt
     92 	ETA: 5.0 (yamt-idlelwp branch)
     93     Generic scheduler API for modular implementations.
     94 	Responsible: dsieger
     95 	ETA: 5.0 (merged in yamt-idlelwp branch)
     96     New scheduler supporting POSIX Real-time features, CPU affinity and
     97     having a better support for MP systems.
     98 	Responsible: rmind
     99 	ETA: 5.0
    100 
    101 ab. Reduction of the giant lock
    102     There are several proposals for the best way forward on this, but
    103     we really need a couple of people with time to step forward and
    104     lead us here.
    105 	Responsible: ad
    106 	ETA: 5.0 (vmlocking2 branch)
    107 
    108 ac. Expansion of wedge support
    109     Complete the development of wedges and retire disklabels except
    110     where needed for compatibility.
    111 	Responsible: thorpej (possibly)
    112 	ETA: 5.0
    113 
    114 ad. Volume management
    115     Allow us to grow, shrink, and move partitions (and, where possible,
    116     filesystems).
    117 	Responsible: TBD
    118 	ETA: ?
    119 
    120 ae. High-performance, maybe log-based, journalled fs w/ snapshot support
    121     Addition of logs, journals, and snapshots to FFS is a lot, another
    122     filesystem could be cleaner and faster.
    123 	Responsible: simonb
    124 	ETA: 5.0 (journaling + snapshots don't work together yet though)
    125 
    126 af. Expansion of ieee1394 support
    127     Where possible, fully support DV, disk, and network devices.
    128 	Responsible: TBD
    129 	ETA: Preliminary firewire support is in 4.0
    130 
    131 ag. Generic device hotplug support
    132     Support hotplug of all devices and busses that support it.  This
    133     should be divided into subcategories and does cross over some into
    134     platform-dependent areas.  SATA, SCSI, FC, USB, Firewire,
    135     PCI (PCI-X, and PCI-Express), etc.  There is some rudimentary
    136     support present, but it is far from comprehensive.
    137 	Responsible: bouyer
    138 	ETA: ?
    139 
    140 ah. Suspend and resume support
    141     We should be able to fully use suspend and resume on PCs, macppc,
    142     and anyone else who supports it in hardware (sparc, hpcsh, hpcarm, etc).
    143 	Responsible: jmcneill, joerg
    144 	ETA: 5.0
    145 
    146 ai. Complete support for LWPs
    147     There are still vestiges of the kernel that predate LWPification
    148     and should be updated.  [ What other than ktrace? ]
    149 	Responsible: darrenr, skrll, christos did ktrace-lwp
    150 	ETA: 4.0
    151 
    152 aj. PTHREAD_CONCURRENCY > 1 support
    153     A single process that uses threads should be able to reliably
    154     use more than one CPU.
    155 	Responsible: ad
    156 	ETA: 5.0  (1:1 pthread come with newlock2)
    157 
    158 ak. AIO support
    159     POSIX aio_*() with full support for Asynchronous I/O (AIO) in the
    160     kernel.
    161 	Responsible: rmind
    162 	ETA: 5.0
    163 
    164 al. Modern parallel port support
    165     Complete support for bidirectional and "advanced" functionality
    166     from parallel ports.
    167 	Responsible: jdolecek
    168 	ETA: ?
    169 
    170 am. NFSv4
    171     Bring our NFS up to current standards.
    172 	Responsible: TBD
    173 	ETA: ?
    174 
    175 an. Update the locking mechanisms in the kernel
    176     This requires some platform support.  A good bit of work is on the
    177     now-archaic "newlock" branch, from thorpej.  It requires some
    178     overhaul of cpu_switch/scheduler so that mutex_*(9) and ltsleep(9)
    179     can interlock.
    180 	Responsible: ad
    181 	ETA: 5.0  (newlock2)
    182 
    183 ao. Review TCP/IP developments
    184     Fix NewReno
    185 	Responsible: mycroft
    186 	ETA: 3.0
    187     Add SACK support to the kernel.
    188 	Responsible: kurahone
    189 	ETA: 3.0
    190     Add ECN support to the kernel.
    191 	Responsible: rpaulo
    192 	ETA: 5.0
    193     Look into other "recent" and current TCP/IP research. Adapt our stack
    194     to the more modern world.
    195 	Responsible: TBD
    196 	ETA: ?
    197 
    198 ap. Kernel linker (ala FreeBSD's kld)
    199 	Responsible: TBD
    200 	ETA: ?
    201 
    202 aq. CARP/VRRP
    203     Functionality is great, but there might be some concern here over
    204     Cisco patents.
    205 	Responsible: liamfoy
    206 	ETA: 4.0
    207 
    208 ar. UDF filesystem support
    209     OpenBSD has recently added this.
    210 	Responsible: reinoud
    211 	ETA: 4.0
    212 
    213 as. RAIDFrame support for 3-way RAID 1
    214 	Responsible: TBD
    215 	ETA: ?
    216 
    217 at. RAIDFrame support for RAID 6
    218 	Responsible: oster
    219 	ETA: 5.0?
    220 
    221 au. More modern drivers
    222     We lack support for a number of more modern devices (PCI-Express,
    223     RAID cards, etc.) that are supported on other open source OSes.
    224 	Responsible: TBD
    225 	ETA: ?
    226 
    227 av. iSCSI initiator support
    228     We should be able to use iSCSI volumes.
    229 	Responsible: agc
    230 	ETA: 5.0
    231 
    232 aw. Run-time changeable limits to SysV IPC
    233     Some of the limits for SysV IPC are hardcoded in the kernel
    234     configuration--these should be changable via sysctl.
    235 	Responsible: rmind
    236 	ETA: 4.0
    237 
    238 ax. NUMA support
    239     To achieve this goal, the CPU scheduler should be modified to take into
    240     account the distances and grouping of CPUs.  Also, support of memory
    241     blocks should be implemented in the VM subsystem.
    242 	Responsible: TBD
    243 	ETA: ?
    244 
    245 2. Platform independent userland
    246 ================================
    247 aa. Keep up with the X world
    248     Track X.org progress.  Maintain existing XFree86.
    249 	Responsible: a cast of thousands
    250 	ETA: ongoing
    251 
    252 ab. Reentrant libraries
    253     Make sure that all libraries are re-entrant and usable for threaded
    254     applications.
    255 	Responsible: ginsbach and others
    256 	ETA: 5.0?
    257 
    258 ac. gcc updates
    259     This requires some work to rework the gcc4 builds to work with BSD
    260     make(1) or update BSD make(1) or consider the unthinkable.
    261 	Responsible: mrg, matt
    262 	ETA: 4.0
    263 
    264 ad. gdb updates
    265 	Responsible: skrll
    266 	ETA: 5.0
    267 
    268 ae. binutils updates
    269     Probably go along with gdb updates.
    270 	Responsible: skrll
    271 	ETA: 4.0
    272 
    273 af. Better post-mortem debugging tools
    274     It would be useful to have something between ps/*stat/etc. and
    275     gdb with a core file.  Something, perhaps, like SysV(?) crash(8).
    276 	Responsible: TBD
    277 	ETA: ?
    278 
    279 ag. Better 802.11 utilities and support
    280     To truly support mobile users, we need better support for scanning
    281     for base stations and affiliating with them.
    282 	Responsible: dyoung, skrll, scw and others
    283 	ETA: 4.0
    284 
    285 ah. Internationalization
    286     Citrus, wide-char curses (SoC integration?), collation, localized
    287     printf with positional parameter support, time & currency
    288     support, etc.  NetBSD has a global user and developer base and
    289     our i18n support should reflect that.
    290         (a) Support cond. printf fmt. 4.0 will have vfwprintf with
    291 	    positional parameter support; 5.0 will have vfprintf with
    292 	    positional parameter support.
    293 		Responsible: christos
    294 		ETA: 5.0
    295         (b) Support LC_COLLATE
    296         (c) mklocale(1) -> localedef(1)
    297         (d) wchar_t in C++
    298         (e) i18nize userland commands
    299         (f) in-kernel iconv
    300 		Responsible: TBD
    301 		ETA: ?
    302 
    303 ai. System packages
    304     In some fashion, we need to support system packages.  This is at
    305     least to allow for sane binary audits and binary patches.
    306 	Responsible: apb
    307 	ETA: 4.0
    308 
    309 aj. Provide support for binary packages in install
    310     We should have an integrated install that can install a desktop as
    311     functional as other free operating systems.  Without sacrificing
    312     the quick and clean basic installs that we have now.  An extension
    313     of sysinst might fit the bill.  Or a tool that's both invoked by
    314     sysinst and available on a running system, e.g. pkgsrc-wip/pkg_select.
    315 	Responsible: agc and others
    316 	ETA: 4.0
    317 
    318 ak. Native signing/privacy software
    319     This could be BPG (from SoC) or openpgp-sdk.
    320 	Responsible: agc, cjs and others
    321 	ETA: 4.0?
    322 
    323 al. Userland version identification
    324     What binaries are installed?  Who really knows?  This relates at
    325     least somewhat to (ai).
    326 	Responsible: TBD
    327 	ETA: ?
    328 
    329 3. Platform dependent kernel
    330 ============================
    331 aa. Move evb ports to evb* if they're not already there (sandpoint)
    332     The existing evb* ports are kind of catch-all ports for eval boards.
    333     Some of the existing non-evb* ports really belong in the evb* category.
    334 	Responsible: TBD
    335 	ETA: ?
    336 
    337 ab. m68k ports need to share more code
    338     Some progress has been made here in recent years, but there is more
    339     work to be done.
    340 	Responsible: TBD
    341 	ETA: ?
    342 
    343 ac. Kernel core dump support for all platforms
    344     Some platforms (PowerPC ports, ARM ports, etc.) don't have full
    345     support for kernel core dumps and post-mortem debugging through
    346     libkvm.  This should be updated.
    347 	Responsible: TBD
    348 	ETA: ?
    349 
    350 ad. NDIS
    351     Support for binary network drivers on x86 platforms.
    352 	Responsible: rittera
    353 	ETA: 4.0
    354 
    355 4. Platform dependent userland
    356 ==============================
    357 ab. m68k should be able to share sets
    358     Some progress has been made here in recent years, but there is more
    359     work to be done.
    360 	Responsible: TBD
    361 	ETA: ?
    362 
    363 5. Other
    364 ========
    365 aa. More and better regression tests
    366     The suite of tests that we have now is limited.  We should expand
    367     these and provide systems (or manage a volunteer pool?) to run the
    368     tests on -current and release branches on a variety of platforms.
    369     We also need to migrate all the tests that currently live in
    370     'regress' to 'tests' so that they can make use of ATF.
    371     ( Need to virtualize some with qemu or similar? )
    372 	Responsible: jmmv
    373 	ETA: 5.0 should have most of regress converted
    374 
    375 ab. Native Java on multiple platforms
    376     Getting i386, amd64, sparc64, and PowerPC would be a good start,
    377     although PowerPC will require more work.  We have the go-ahead,
    378     but we need the people to work on it.
    379 	Responsible: the Java porting crew
    380 	ETA: ?
    381 
    382 ac. Power control framework
    383     Related to suspend/resume support, we should have some framework
    384     for dynamically stepping processor speed, controlling fans, shutting
    385     down and/or powering subsystems to conserve power and keep the system
    386     with thermal limits.
    387 	Responsible: TBD
    388 	ETA: ?
    389