summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2006-05-19 20:47:55 +0000
committerRob Landley <rob@landley.net>2006-05-19 20:47:55 +0000
commitdf4cdaf341daa24f517d008b1f7f67271edb88a8 (patch)
treeefe2dc4352f1fc9a60e050a2da71648a182ed68d /TODO
parent80b8ff07ca4c39114875c7fd3230c4e9ae823f83 (diff)
downloadbusybox-w32-df4cdaf341daa24f517d008b1f7f67271edb88a8.tar.gz
busybox-w32-df4cdaf341daa24f517d008b1f7f67271edb88a8.tar.bz2
busybox-w32-df4cdaf341daa24f517d008b1f7f67271edb88a8.zip
First quick stab at organizing TODO under whose TODO item it is.
Diffstat (limited to 'TODO')
-rw-r--r--TODO199
1 files changed, 100 insertions, 99 deletions
diff --git a/TODO b/TODO
index b3d950790..2c30f8762 100644
--- a/TODO
+++ b/TODO
@@ -1,28 +1,111 @@
1Busybox TODO 1Busybox TODO
2 2
3Stuff that needs to be done. All of this is fair game for 1.2. 3Stuff that needs to be done. This is organized by who plans to get around to
4doing it eventually, but that doesn't mean they "own" the item. If you want to
5do one of these bounce an email off the person it's listed under to see if they
6have any suggestions how they plan to go about it, and to minimize conflicts
7between your work and theirs. But otherwise, all of these are fair game.
8
9Rob Landley <rob@landley.net>:
10 Migrate calloc() and bb_calloc() occurrences to bb_xzalloc().
11 Remove obsolete _() wrapper crud for internationalization we don't do.
12 Figure out where we need utf8 support, and add it.
13
14 sh
15 The command shell situation is a big mess. We have three or four different
16 shells that don't really share any code, and the "standalone shell" doesn't
17 work all that well (especially not in a chroot environment), due to apps not
18 being reentrant. I'm writing a new shell (bbsh) to unify the various
19 shells and configurably add the minimal set of bash features people
20 actually use. The hardest part is it has to configure down as small as
21 lash while providing lash's features. The rest is easy in comparison.
22 bzip2
23 Compression-side support.
24 init
25 General cleanup.
26 Unify base64 handling.
27 There's base64 encoding and decoding going on in:
28 networking/wget.c:base64enc()
29 coreutils/uudecode.c:read_base64()
30 coreutils/uuencode.c:tbl_base64[]
31 networking/httpd.c:decodeBase64()
32 And probably elsewhere. That needs to be unified into libbb functions.
33 Do a SUSv3 audit
34 Look at the full Single Unix Specification version 3 (available online at
35 "http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
36 figure out which of our apps are compliant, and what we're missing that
37 we might actually care about.
38
39 Even better would be some kind of automated compliance test harness that
40 exercises each command line option and the various corner cases.
41 Internationalization
42 How much internationalization should we do?
43
44 The low hanging fruit is UTF-8 character set support. We should do this.
45 (Vodz pointed out the shell's cmdedit as needing work here. What else?)
46
47 We also have lots of hardwired english text messages. Consolidating this
48 into some kind of message table not only makes translation easier, but
49 also allows us to consolidate redundant (or close) strings.
50
51 We probably don't want to be bloated with locale support. (Not unless we
52 can cleanly export it from our underlying C library without having to
53 concern ourselves with it directly. Perhaps a few specific things like a
54 config option for "date" are low hanging fruit here?)
55
56 What level should things happen at? How much do we care about
57 internationalizing the text console when X11 and xterms are so much better
58 at it? (There's some infrastructure here we don't implement: The
59 "unicode_start" and "unicode_stop" shell scripts need "vt-is-UTF8" and a
60 --unicode option to loadkeys. That implies a real loadkeys/dumpkeys
61 implementation to replace loadkmap/dumpkmap. Plus messing with console font
62 loading. Is it worth it, or do we just say "use X"?)
63
64 Individual compilation of applets.
65 It would be nice if busybox had the option to compile to individual applets,
66 for people who want an alternate implementation less bloated than the gnu
67 utils (or simply with less political baggage), but without it being one big
68 executable.
69
70 Turning libbb into a real dll is another possibility, especially if libbb
71 could export some of the other library interfaces we've already more or less
72 got the code for (like zlib).
73 buildroot - Make a "dogfood" option
74 Busybox 1.1 will be capable of replacing most gnu packages for real world
75 use, such as developing software or in a live CD. It needs wider testing.
76
77 Busybox should now be able to replace bzip2, coreutils, e2fsprogs, file,
78 findutils, gawk, grep, inetutils, less, modutils, net-tools, patch, procps,
79 sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The resulting
80 system should be self-hosting (I.E. able to rebuild itself from source
81 code). This means it would need (at least) binutils, gcc, and make, or
82 equivalents.
83
84 It would be a good "eating our own dogfood" test if buildroot had the option
85 of using a "make allyesconfig" busybox instead of the all of the above
86 packages. Anything that's wrong with the resulting system, we can fix. (It
87 would be nice to be able to upgrade busybox to be able to replace bash and
88 diffutils as well, but we're not there yet.)
89
90 One example of an existing system that does this already is Firmware Linux:
91 http://www.landley.net/code/firmware
92 initramfs
93 Busybox should have a sample initramfs build script. This depends on
94 bbsh, mdev, and switch_root.
95
96
97Bernhard Fischer <rep.nop@anon.at>:
98 Makefile stuff:
99 make -j is broken, -j1 is forced atm
100
101As yet unclaimed:
4 102
5build system
6 make -j is broken, -j1 is forced atm
7 Make sure that the flags get pinned in e.g. Rules.mak so when expanding them
8 later on you get the cached result without the need to re-evaluate them.
9---- 103----
10find 104find
11 doesn't understand (), lots of susv3 stuff. 105 doesn't understand (), lots of susv3 stuff.
12---- 106----
13sh
14 The command shell situation is a big mess. We have three or four different
15 shells that don't really share any code, and the "standalone shell" doesn't
16 work all that well (especially not in a chroot environment), due to apps not
17 being reentrant. Unifying the various shells and figuring out a configurable
18 way of adding the minimal set of bash features a given script uses is a big
19 job, but it would be a big improvement.
20
21 Note: Rob Landley (rob@landley.net) is working on a new unified shell called
22 bbsh, but it's a low priority...
23---
24diff 107diff
25 Also, make sure we handle empty files properly: 108 Make sure we handle empty files properly:
26 From the patch man page: 109 From the patch man page:
27 110
28   you can remove a file by sending out a context diff that compares 111   you can remove a file by sending out a context diff that compares
@@ -45,18 +128,9 @@ man
45 128
46 (How doclifter might work into this is anybody's guess.) 129 (How doclifter might work into this is anybody's guess.)
47--- 130---
48bzip2
49 Compression-side support.
50---
51init
52 General cleanup.
53---
54ar 131ar
55 Write support? 132 Write support?
56--- 133---
57mdev
58 Micro-udev.
59---
60crond 134crond
61 turn FEATURE_DEBUG_OPT into ENABLE_FEATURE_CROND_DEBUG_OPT 135 turn FEATURE_DEBUG_OPT into ENABLE_FEATURE_CROND_DEBUG_OPT
62 136
@@ -74,46 +148,6 @@ bb_close() with fsync()
74 You need to call fsync() if you care about errors that occur after write(), 148 You need to call fsync() if you care about errors that occur after write(),
75 but that can have a big performance impact. So make it a config option. 149 but that can have a big performance impact. So make it a config option.
76--- 150---
77Unify base64 handling.
78 There's base64 encoding and decoding going on in:
79 networking/wget.c:base64enc()
80 coreutils/uudecode.c:read_base64()
81 coreutils/uuencode.c:tbl_base64[]
82 networking/httpd.c:decodeBase64()
83 And probably elsewhere. That needs to be unified into libbb functions.
84---
85Do a SUSv3 audit
86 Look at the full Single Unix Specification version 3 (available online at
87 "http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
88 figure out which of our apps are compliant, and what we're missing that
89 we might actually care about.
90
91 Even better would be some kind of automated compliance test harness that
92 exercises each command line option and the various corner cases.
93---
94Internationalization
95 How much internationalization should we do?
96
97 The low hanging fruit is UTF-8 character set support. We should do this.
98 (Vodz pointed out the shell's cmdedit as needing work here. What else?)
99
100 We also have lots of hardwired english text messages. Consolidating this
101 into some kind of message table not only makes translation easier, but
102 also allows us to consolidate redundant (or close) strings.
103
104 We probably don't want to be bloated with locale support. (Not unless we can
105 cleanly export it from our underlying C library without having to concern
106 ourselves with it directly. Perhaps a few specific things like a config
107 option for "date" are low hanging fruit here?)
108
109 What level should things happen at? How much do we care about
110 internationalizing the text console when X11 and xterms are so much better
111 at it? (There's some infrastructure here we don't implement: The
112 "unicode_start" and "unicode_stop" shell scripts need "vt-is-UTF8" and a
113 --unicode option to loadkeys. That implies a real loadkeys/dumpkeys
114 implementation to replace loadkmap/dumpkmap. Plus messing with console font
115 loading. Is it worth it, or do we just say "use X"?)
116---
117Unify archivers 151Unify archivers
118 Lots of archivers have the same general infrastructure. The directory 152 Lots of archivers have the same general infrastructure. The directory
119 traversal code should be factored out, and the guts of each archiver could 153 traversal code should be factored out, and the guts of each archiver could
@@ -129,39 +163,6 @@ Text buffer support.
129 a whole file into memory and act on it. There might be an opportunity 163 a whole file into memory and act on it. There might be an opportunity
130 for shared code in there that could be moved into libbb... 164 for shared code in there that could be moved into libbb...
131--- 165---
132Individual compilation of applets.
133 It would be nice if busybox had the option to compile to individual applets,
134 for people who want an alternate implementation less bloated than the gnu
135 utils (or simply with less political baggage), but without it being one big
136 executable.
137
138 Turning libbb into a real dll is another possibility, especially if libbb
139 could export some of the other library interfaces we've already more or less
140 got the code for (like zlib).
141---
142buildroot - Make a "dogfood" option
143 Busybox 1.1 will be capable of replacing most gnu packages for real world use,
144 such as developing software or in a live CD. It needs wider testing.
145
146 Busybox should now be able to replace bzip2, coreutils, e2fsprogs, file,
147 findutils, gawk, grep, inetutils, less, modutils, net-tools, patch, procps,
148 sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The resulting
149 system should be self-hosting (I.E. able to rebuild itself from source code).
150 This means it would need (at least) binutils, gcc, and make, or equivalents.
151
152 It would be a good "eating our own dogfood" test if buildroot had the option
153 of using a "make allyesconfig" busybox instead of the all of the above
154 packages. Anything that's wrong with the resulting system, we can fix. (It
155 would be nice to be able to upgrade busybox to be able to replace bash and
156 diffutils as well, but we're not there yet.)
157
158 One example of an existing system that does this already is Firmware Linux:
159 http://www.landley.net/code/firmware
160---
161initramfs
162 Busybox should have a sample initramfs build script. This depends on
163 bbsh, mdev, and switch_root.
164---
165Memory Allocation 166Memory Allocation
166 We have a CONFIG_BUFFER mechanism that lets us select whether to do memory 167 We have a CONFIG_BUFFER mechanism that lets us select whether to do memory
167 allocation on the stack or the heap. Unfortunately, we're not using it much. 168 allocation on the stack or the heap. Unfortunately, we're not using it much.