Tweak *rfc822-show-all* manual text
[s-mailx.git] / TODO
blobe4c3f0b372121a5d2eb326a6a04e593988f695e4
1 TODO reminder.
2 Before you start making additions to (Heirloom mailx and) S-nail,
3 subscribe to the development mailing list at
4 <https://lists.sourceforge.net/lists/listinfo/nail-devel>
5 to coordinate your efforts with the maintainer and other people.
7 Backward-compatibility breakers
8 -------------------------------
10 - Is anybody actually using the NSS code?  Does this still apply?
11   Check and verify -- or remove it!
12   [Note: due to lack of personal interest...  Please complain.]
13 - Recipients specified on the command line should be added to those
14   specified in the message when the -t option is set.
15 - The -q option makes me sad as it doesn't use *indentprefix* for the
16   quoted file.  So either there should be -Q which does so, or -q should be
17   changed.  Also see ~R below.
18   [Note: i think i go for the latter.  Please complain.]
19 - NetBSD mailx(1) removes all recipients in up Cc: and To: that are also
20   specified in Bcc.  At least configurable.
21   [Note: i plan to make this default.  Please complain.]
22 - At least optionally disallow silent discarding of invalid addresses,
23   i.e., cause sending to be aborted if not all recipient addresses pass the
24   validity test.
25   And shouldn't it generally be marked as an error and reported when the
26   program exits?  At least in non-interactive mode??  Yet there is no
27   indication that anything has happened at all!
28   [Note: i plan to report error in non-interactive mode.  Please complain.]
29 - POSIX says that, when written to DEAD: "If the file exists, the message
30   shall be written to replace the contents of the file".  This is mentioned
31   for ASYNCHRONOUS EVENTS, but it's the only description of what should be
32   done in which way to DEAD.  savedeadletter() yet appends.
33 - Furthermore, *all* file operations yet append, even recipient target
34   files are appended.  I don't know if this is really desirable behaviour,
35   but i have not thought about that for real.  Maybe this should be at
36   least configurable.
37 - The current maintainer really would like to make the new
38   *rfc822-no-body-from_* option the default, or, even better, get rid of
39   these "pseudo From_"s that were introduced in
40   50fef89 (* A mbox-style "From " line is now generated.., 2004-11-06).
42 Non-breakers
43 ------------
45 - [v13:started] Reformat the manual.
46   roff style is fine, but lines should be ~70 characters, not only ~25.
47 - IDNA.
48 - Mail-Followup-To:.
49 - Make it possible to reply to/save/write/xy part X.Y[.Z] by allowing its
50   specification directly, as in, e.g., ':w 1.2'.  (Martin Neitzel)
51 - I want to have a ~R tilde command that works like ~r except it performs
52   quoting of the input just as ~m does.  Also see -q above.
53 - Offer the possibility to work with certificate fingerprints instead of
54   full certificates, in equal spirit to the current maintainers S-Postman
55   and Mercurial.  S-nail(1) could simply offer something in equal spirit to
56   the formers --fingerprint, so that no other tool is necessary for
57   certificate management (for secure transport at least).
58 - Think about a name bypass hashmap cache, and whenever we have to skin or
59   nalloc() or whatever, look in there.  Maybe even an additional link for
60   non GFULL(/GSKIN) and fully skinned struct name objects.
61   The amount of duplicated work in this codebase if frustrating, but the
62   real healing would make necessary a complete rewrite of the name handling!
63   Such a cache would work without touching the current code flow ... or
64   allow a smooth transition to a new one anyway.
65 - It would be nice if it would be possible to define a format string for
66   *quote*, like 'set quote="format=some formats"'.
67 - Deal with faulty message selection that may occur when selecting threads
68   via & (when at least mixed with other selectors).
69 - On the long run -- try to add command line editing.
70 - For those who use S-nail(1) only with a MTA it may be desirable to have
71   some "smopts" expansion mechanism in equal spirit to NetBSD mailx(1).
72 - While talking about NetBSD mailx(1), the author can imagine that being
73   able to use the optional -H:xy stuff is sometimes nice.
74 - Add the possibility to simply place whatever header in the editor (and
75   in the mail read in due to the -t command line option, and...).
76 - Check against RFC 5322.
77   Really recheck all the header parsing code.
78 - What about RFC 6531?
79 - Check against newest POSIX.
80 - Maybe add a bash(1)ish POSIXLY_CORRECT (or so) switch that can be used to
81   disallow extensions (e.g. specification of "full" addresses on command
82   line).
83 - Maybe there should be an additional ZOMBIE directive that is served in
84   equal spirit to DEAD, but that could be a valid MBOX... ?
85   What i want is a *real* resend, best if possible from command line.
86   Meaning, also the possibility to postpone a message.
87 - mime.c:prefixwrite() tracks state internally instead of having a cookie
88   argument.  That doesn't really make sense.  Either it is capable to work
89   with multiple files concurrently and prefix-quotes them correctly in the
90   same fashion, or it doesn't track anything at all.  It even tracked those
91   calls that do not write a prefix at all before, just to make this
92   mechanism work ... Or not?  Well, if you track the last file and if there
93   was a newline last, and you switch files, then the last newline state is
94   lost, and you do write the prefix even if in the other file there was no
95   newline last.  I'm confused now.  Change this, please.
97 - Revise the code:
98   + Add C99-likeish typedefs for integers and use them everywhere.
99   + Don't use magic constants/values.
100   + Try to thin out the onion and reduce work that is done over and over
101     again.  Maybe introduce objects to represent header[field/body] and
102     content and find a way to pass those all through that vegetable.
103   + The current codebase assumes that in multibyte encodings plains ASCII
104     characters can be tested "as-is".  This assumption is wrong for some
105     encodings that use U+001B (escape) or another ASCII thing to introduce
106     shift states.  The only real solution to this problem would be to
107     rewrite the entire codebase and use wide characters (IMO) everywhere.
108   + Document the functions in the interface declarators.
109   + [v13:started] Resort the functions and where they are implemented.
110     It's really terrible.  Just think about outof(), savedeadletter(),
111     savemail() etc..
112 - The current maintainer doesn't like longjmp()s.
113 - The current maintainer doesn't like signals.
114 - The current maintainer would like to see that compilation with a C++
115   compiler is possible, though that would be a long way and be especially
116   problematic due to the (C ish) way enums are used.  He never understood
117   why there is not "bitenum", btw.
118 - The current maintainer worked with all-tabs for almost one and a half
119   decade and turned over to all-spaces afterwards.
121 vim:set fenc=utf-8 syntax=txt ts=8 sts=2 sw=2 et tw=75: