diff options
| author | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-05-19 20:47:55 +0000 |
|---|---|---|
| committer | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-05-19 20:47:55 +0000 |
| commit | e6cdf78ea75f5d9b333d722d6da13c7ea2c60705 (patch) | |
| tree | efe2dc4352f1fc9a60e050a2da71648a182ed68d | |
| parent | 7a7f724a783da8a1eb3a93338e99a5f02d35f796 (diff) | |
| download | busybox-w32-e6cdf78ea75f5d9b333d722d6da13c7ea2c60705.tar.gz busybox-w32-e6cdf78ea75f5d9b333d722d6da13c7ea2c60705.tar.bz2 busybox-w32-e6cdf78ea75f5d9b333d722d6da13c7ea2c60705.zip | |
First quick stab at organizing TODO under whose TODO item it is.
git-svn-id: svn://busybox.net/trunk/busybox@15143 69ca8d6d-28ef-0310-b511-8ec308f3f277
| -rw-r--r-- | TODO | 199 |
1 files changed, 100 insertions, 99 deletions
| @@ -1,28 +1,111 @@ | |||
| 1 | Busybox TODO | 1 | Busybox TODO |
| 2 | 2 | ||
| 3 | Stuff that needs to be done. All of this is fair game for 1.2. | 3 | Stuff that needs to be done. This is organized by who plans to get around to |
| 4 | doing it eventually, but that doesn't mean they "own" the item. If you want to | ||
| 5 | do one of these bounce an email off the person it's listed under to see if they | ||
| 6 | have any suggestions how they plan to go about it, and to minimize conflicts | ||
| 7 | between your work and theirs. But otherwise, all of these are fair game. | ||
| 8 | |||
| 9 | Rob 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 | |||
| 97 | Bernhard Fischer <rep.nop@anon.at>: | ||
| 98 | Makefile stuff: | ||
| 99 | make -j is broken, -j1 is forced atm | ||
| 100 | |||
| 101 | As yet unclaimed: | ||
| 4 | 102 | ||
| 5 | build 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 | ---- |
| 10 | find | 104 | find |
| 11 | doesn't understand (), lots of susv3 stuff. | 105 | doesn't understand (), lots of susv3 stuff. |
| 12 | ---- | 106 | ---- |
| 13 | sh | ||
| 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 | --- | ||
| 24 | diff | 107 | diff |
| 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 | --- |
| 48 | bzip2 | ||
| 49 | Compression-side support. | ||
| 50 | --- | ||
| 51 | init | ||
| 52 | General cleanup. | ||
| 53 | --- | ||
| 54 | ar | 131 | ar |
| 55 | Write support? | 132 | Write support? |
| 56 | --- | 133 | --- |
| 57 | mdev | ||
| 58 | Micro-udev. | ||
| 59 | --- | ||
| 60 | crond | 134 | crond |
| 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 | --- |
| 77 | Unify 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 | --- | ||
| 85 | Do 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 | --- | ||
| 94 | Internationalization | ||
| 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 | --- | ||
| 117 | Unify archivers | 151 | Unify 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 | --- |
| 132 | Individual 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 | --- | ||
| 142 | buildroot - 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 | --- | ||
| 161 | initramfs | ||
| 162 | Busybox should have a sample initramfs build script. This depends on | ||
| 163 | bbsh, mdev, and switch_root. | ||
| 164 | --- | ||
| 165 | Memory Allocation | 166 | Memory 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. |
