1 # $NetBSD: ROADMAP,v 1.23 2008/08/04 15:37:05 simonb Exp $
3 *** THIS FILE IS OBSOLETE ***
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
9 This file is temporarily retained to allow the information in it to be
12 ------------------------------------------------------------
15 A high-level roadmap for NetBSD
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.
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
29 The roadmap, of course, is constructed in the context of the
30 Project's (broad) goals:
32 * clean design * stable * fast
33 * clean licensing * portable * interoperable
34 * conformant * commercial-ready * research-ready
37 In general, we are headed for:
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
45 * Support for all devices without encumbered code
47 * Managed growth of the base system
49 * Minimal GPL / LGPL code in the base system
51 * Maximal performance without compromising portability
53 * "State of the art" technology in the kernel and userland
55 * No bugs, no security vulnerabilities
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
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."
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
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.
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
87 1. Platform independent kernel
88 ==============================
90 Separation of context switching and thread scheduling.
92 ETA: 5.0 (yamt-idlelwp branch)
93 Generic scheduler API for modular implementations.
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.
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
106 ETA: 5.0 (vmlocking2 branch)
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)
114 ad. Volume management
115 Allow us to grow, shrink, and move partitions (and, where possible,
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.
124 ETA: 5.0 (journaling + snapshots don't work together yet though)
126 af. Expansion of ieee1394 support
127 Where possible, fully support DV, disk, and network devices.
129 ETA: Preliminary firewire support is in 4.0
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.
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
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
152 aj. PTHREAD_CONCURRENCY > 1 support
153 A single process that uses threads should be able to reliably
154 use more than one CPU.
156 ETA: 5.0 (1:1 pthread come with newlock2)
159 POSIX aio_*() with full support for Asynchronous I/O (AIO) in the
164 al. Modern parallel port support
165 Complete support for bidirectional and "advanced" functionality
167 Responsible: jdolecek
171 Bring our NFS up to current standards.
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)
183 ao. Review TCP/IP developments
187 Add SACK support to the kernel.
188 Responsible: kurahone
190 Add ECN support to the kernel.
193 Look into other "recent" and current TCP/IP research. Adapt our stack
194 to the more modern world.
198 ap. Kernel linker (ala FreeBSD's kld)
203 Functionality is great, but there might be some concern here over
208 ar. UDF filesystem support
209 OpenBSD has recently added this.
213 as. RAIDFrame support for 3-way RAID 1
217 at. RAIDFrame support for RAID 6
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.
227 av. iSCSI initiator support
228 We should be able to use iSCSI volumes.
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.
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.
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
252 ab. Reentrant libraries
253 Make sure that all libraries are re-entrant and usable for threaded
255 Responsible: ginsbach and others
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
269 Probably go along with gdb updates.
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).
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
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
295 (b) Support LC_COLLATE
296 (c) mklocale(1) -> localedef(1)
298 (e) i18nize userland commands
304 In some fashion, we need to support system packages. This is at
305 least to allow for sane binary audits and binary patches.
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
318 ak. Native signing/privacy software
319 This could be BPG (from SoC) or openpgp-sdk.
320 Responsible: agc, cjs and others
323 al. Userland version identification
324 What binaries are installed? Who really knows? This relates at
325 least somewhat to (ai).
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.
337 ab. m68k ports need to share more code
338 Some progress has been made here in recent years, but there is more
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.
351 Support for binary network drivers on x86 platforms.
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
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? )
373 ETA: 5.0 should have most of regress converted
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
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