Some ignores.
[sgt/agedu] / TODO
1 TODO list for agedu
2 ===================
3
4 Before it's non-embarrassingly releasable:
5
6 - render HTTP access control more sane.
7 * we should have the configurable option to use HTTP Basic
8 authentication or Linux magic /proc/net/tcp
9 * a third option, and the default one, should be to _try_ to use
10 magic auth, and fall back to HTTP Basic if unavailable
11
12 - sort out the command line syntax
13 * I think there should be a unified --mode / -M for every
14 running mode, possibly without the one-letter option for the
15 diagnostic sorts of things
16 * there should be some configurable options:
17 + range limits on the age display
18 + server address in httpd mode
19
20 - do some configurability for the disk scan
21 * wildcard-based includes and excludes
22 + wildcards can act on the last pathname component or the
23 whole lot
24 + include and exclude can be interleaved; implicit "include
25 *" before any
26 * reinstate filesystem crossing, though not doing so should
27 remain the default
28
29 - polish up disk-scan progress reporting
30 * by default it should be conditional on isatty(2)
31 * manual override to enable or disable
32 * we should find rather than guessing the terminal width
33
34 - work out what to do about atimes on directories
35 * one option is to read them during the scan and reinstate them
36 after each recursion pop. Race-condition prone.
37 * marking them in a distinctive colour in the reports is the
38 other option.
39
40 - make a final decision on the name!
41
42 Future directions:
43
44 - run-time configuration in the HTTP server
45 * I think this probably works by having a configuration form, or
46 a link pointing to one, somewhere on the report page. If you
47 want to reconfigure anything, you fill in and submit the form;
48 the web server receives HTTP GET with parameters and a
49 referer, adjusts its internal configuration, and returns an
50 HTTP redirect back to the referring page - which it then
51 re-renders in accordance with the change.
52 * All the same options should have their starting states
53 configurable on the command line too.
54
55 - polish the plain-text output:
56 + do the same formatting as in HTML, by showing files as a
57 single unit and also sorting by size? (Probably the other way
58 up, due to scrolling.)
59 + configurable recursive output depth
60
61 - curses-ish equivalent of the web output
62 + try using xterm 256-colour mode. Can (n)curses handle that? If
63 not, try doing it manually.
64
65 - cross-module:
66 + figure out what to do about scans starting in the root
67 directory!
68 * Currently we end up with a double leading slash on the
69 pathnames, which is ugly, and we also get a zero-length
70 href in between those slashes which means the web interface
71 doesn't let you click back up to the top level at all.
72 * One big problem here is that a lot of the code assumes that
73 you can find the extent of a pathname by searching for
74 "foo" and "foo^A", trusting that anything inside the
75 directory will begin "foo/". So I'd need to consistently
76 fix this everywhere so that a trailing slash is disregarded
77 while doing it, but not actually removed.
78 * The text output gets it all wrong.
79 * The HTML output is fiddly even at the design stage: where
80 would I _ideally_ put the link to click on to get back to
81 /? It's unclear!
82
83 - more flexible running modes
84 + decouple the disk scan from the index building code, so that
85 the former can optionally output in the same format as --dump
86 and the latter can optionally work from input on stdin (having
87 also fixed the --dump format in the process so it's perfectly
88 general). Then we could scan on one machine and transfer the
89 results over the net to another machine where they'd be
90 indexed; in particular, this way the indexing machine could be
91 64-bit even if the machine owning the filesystems was only 32.
92 + ability to build a database _and_ immediately run one of the
93 ongoing interactive report modes (httpd, curses) would seem
94 handy.
95
96 - portability
97 + between Unices:
98 * autoconf?
99 * configure use of stat64
100 * configure use of /proc/net/tcp
101 * what do we do elsewhere about _GNU_SOURCE?
102 + further afield: is there in fact any non-Unix OS that supports
103 atimes and hence can be used with agedu at all?
104 * yes! http://msdn.microsoft.com/en-us/library/ms724290.aspx