aboutsummaryrefslogtreecommitdiff
path: root/www/cleanup.html
blob: bb5da4cc0507a42092510aa959d10a6f4cf97bf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<!--#include file="header.html" -->

<h1>Cleaning up the toybox code.</h1>

<p><a href=http://landley.net/notes.html#31-03-2013>Toybox
hasn't always taken proper advantage of external contributions</a>.
Lots of people want to help, but their contributions languish out of tree
or in the "pending" directory, awaiting cleanup.</p>

<p>Toybox's design goals require simpler, tighter, and more explicit code
than most other implementations, among other reasons to allow better security
auditing. Writing "another" implementation of standard command line tools
isn't very interesting, they should be _better_ implementations.
Unfortunately, this means existing, working commands often take more effort to
clean up to Toybox's standards than writing a new one from scratch, not
because they don't work, but because we require an unusual level of polish.</p>

<p>In hopes of teaching more people how to do this
cleanup work, I've started breaking cleanup changes into smaller chunks and
posting explanations of each change to the mailing list.
Below are indexes of each cleanup series. Line/byte totals of completed
series are given for scale, but the point of this work is simplicity, not
size.</p>

<p>(Note: mercurial's web viewer doesn't follow renames, so the commit list
links may not show the final version of each file moved from the "pending"
directory to its final location. The summaries link the initial and cleaned
versions of each file when giving line counts.)</p>

<hr>

<p>General advice and/or policy:</p>

<p><a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000850.html>Error messages and internationalization.</a></p>

<p><a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000891.html>Why not "const"?</a></p>

<p>(I leave the <a href=http://lkml.indiana.edu/hypermail/linux/kernel/1308.3/03890.html>Why not "bool"?</a> explanation to Linus Torvalds.)</p>

<p><a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000893.html>Rationale for removing debug code</a>, the interesting bit says:</p>
<blockquote><p>Rule of thumb: other people's debugging printfs are seldom as
useful as your own debugging printfs. Because you know what your output
_means_, and if you can't annotate the code to dump what you need you haven't
read enough of it yet.
</p></blockquote>

<hr>

<h1><a href=/hg/toybox/log/900/toys/pending/uuencode.c>uuencode</a> and
<a href=http:/hg/toybox/log/900/toys/pending/uudecode.c>uudecode</a>
</h1>

<p>This is an example of cleaning up something
that started in a condition most projects would be quite happy with.
The initial submission of uuencode and uudecode was a good high
quality contribution, written by a seasoned developer who did an excellent
job. It was still possible to shrink uuencode almost by half:</p>

<ul>
<li>old total: <a href=/hg/toybox/file/828/toys/pending/uuencode.c>116 lines (2743
bytes) in 7 functions</a></li>
<li>new total: <a href=/hg/toybox/file/841/toys/posix/uuencode.c>67 lines (1440
bytes) in 1 function</a></li>
</ul>

<ul>
<li>commit: <a href=/hg/toybox/rev/830>830</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000904.html>part 1</a> and
<a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000903.html>part 2</a></li>
<li>commit: <a href=/hg/toybox/rev/831>831</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000919.html>inline, default Y, move to toys/posix</a></li>
<li>commit: <a href=/hg/toybox/rev/837>837</a>,
description: test suite.</li>
</ul>

<p>Status: COMPLETE</p>

<p>I tried to do the uudecode cleanup in smaller stages:</p>

<ul>
<li>old: <a href=/hg/toybox/file/828/toys/pending/uudecode.c>175
lines (4534 bytes) in 9 functions</a></li>
<li>new: <a href=/hg/toybox/file/840/toys/posix/uudecode.c>107 lines
(2300 bytes) in 1 function</a></li>
</ul>

<ul>
<li>commit: <a href=/hg/toybox/rev/833>833</a>,
description: preparatory adjustments to test suite.</li>
<li>commit: <a href=/hg/toybox/rev/835>835</a>,
description: todo</a></li>
<li>commit: <a href=/hg/toybox/rev/838>838</a>,
description: todo</a></li>
<li>commit: <a href=/hg/toybox/rev/839>839</a>,
description: todo</a></li>
<li>commit: <a href=/hg/toybox/rev/839>839</a>,
description: todo (finish, move pending->posix, default y)</a></li>
</ul>

<p>Status: COMPLETE</p>

<h1><a href=/hg/toybox/log/tip/toys/pending/ifconfig.c>ifconfig</a></h1>

<p>The largest (ongoing) documented cleanup to date, still in progress:</p>

<ul>
<li>commit: <a href=/hg/toybox/rev/843>843</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000882.html>Explaining the ifconfig cleanup: part I.</a></li>
<li>commit: <a href=/hg/toybox/rev/844>844</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000881.html>Explaining more ifconfig cleanup.</a></li>
<li>commit: <a href=/hg/toybox/rev/852>852</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000921.html>cleanup</a></li>
<li>commit: <a href=/hg/toybox/rev/856>856</a>,
description: A one line portability fix from Isaac Dunham</li>
<li>commit: <a href=/hg/toybox/rev/861>861</a>
and <a href=/hg/toybox/rev/863>863</a>,
description:
<a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000910.html>Help
infrastructure cleanup from Isaac Dunham</a>
which I mis-applied and then <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000920.html>fixed plus some whitespace changes</a></li>

<li>commit: <a href=/hg/toybox/rev/862>862</a>,
<a href=/hg/toybox/rev/864>864</a>,
<a href=/hg/toybox/rev/866>866</a>: todo</li>

<li>commit: <a href=/hg/toybox/rev/869>869</a> and <a href=/hg/toybox/rev/870>870</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000928.html>here</a></li>
<li>commit: <a href=/hg/toybox/rev/878>878</a> and <a href=/hg/toybox/rev/879>879</a>:
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000946.html>here</a></li>
<li>commit: <a href=/hg/toybox/rev/883>883</a>,
description: todo</li>
<li>commit: <a href=/hg/toybox/rev/898>898</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/000974.html>here</a></li>
<li>commit: <a href=/hg/toybox/rev/905>905</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/000992.html>here</a></li>
<li>commit: <a href=/hg/toybox/rev/906>906</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/000994.html>here</a></li>
<li>commit: <a href=/hg/toybox/rev/907>907</a>,
<a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/000995.html>here</a></li>
</ul>

<p>Status: in progress.</p>

<h1><a href=/hg/toybox/log/tip/toys/pending/find.c>find</a></h1>

<pre>
814 Initial version by Gurang Shastri.
815
816
847 Felix Janda
848 Whitespace (reindent from tabs -> 2 spaces)
849 More cleanup
867 Felix Janda Improve operator processing.
874 Felix Janda
875 Felix Janda
887 Felix Janda fix -mtime
</pre>

<ul>
<li>commit: <a href=/hg/toybox/rev/849>849</a>,
description: <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-April/000895.html>here</a></li>
</ul>

<p>Status: in progress.</p>

<h1><a href=/hg/toybox/log/917/toys/pending/stat.c>stat</a></h1>

<pre>
747 initial submission
810 whitespace
811
871 whitespace (reindent from 4 spaces to 2)
872 Felix Janda cleanup
885 Felix Janda
  move permission formatting (777 -> -rwxrwxrwx) from ls to lib so stat can reuse it.
886 Felix Janda remove unimplemented options and clean up help text
910 Felix Janda Add support for stating multiple files.
911 Felix Janda Separate stat and statfs.
912 <a href=/hg/toybox/rev/912>commit</a> <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/001019.html>description</a>
<a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-May/001024.html>design pondering</a>

 914 916
</pre>
<ul>
<li>commit: <a href=/hg/toybox/rev/917>917</a></li>
<li>commit: <a href=/hg/toybox/rev/918>918</a>,
description: move to posix, default y.</li>
</ul>

<p>Status: COMPLETE.</p>

<!--#include file="footer.html" -->