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
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
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
41 - [v13:started] Reformat the manual.
42 roff style is fine, but lines should be ~70 characters, not only ~25.
45 - Offer the possibility to work with certificate fingerprints instead of
46 full certificates, in equal spirit to the current maintainers S-Postman
47 and Mercurial. S-nail(1) could simply offer something in equal spirit to
48 the formers --fingerprint, so that no other tool is necessary for
49 certificate management (for secure transport at least).
50 - Think about a name bypass hashmap cache, and whenever we have to skin or
51 nalloc() or whatever, look in there. Maybe even an additional link for
52 non GFULL(/GSKIN) and fully skinned struct name objects.
53 The amount of duplicated work in this codebase if frustrating, but the
54 real healing would make necessary a complete rewrite of the name handling!
55 Such a cache would work without touching the current code flow ... or
56 allow a smooth transition to a new one anyway.
57 - Deal with faulty message selection that may occur when selecting threads
58 via & (when at least mixed with other selectors).
59 - Try to add command line editing; problems may be signals and even
60 more longjmp()s, and how they are used at the moment. Check that.
61 - Add the possibility to simply place whatever header in the editor (and
62 in the mail read in due to the -t command line option, and...).
63 - Check against RFC 5322.
64 Really recheck all the header parsing code.
65 - What about RFC 6531?
66 - Check against newest POSIX.
67 - Maybe add a bash(1)ish POSIXLY_CORRECT (or so) switch that can be used to
68 disallow extensions (e.g. specification of "full" addresses on command
70 - Maybe there should be an additional ZOMBIE directive that is served in
71 equal spirit to DEAD, but that could be a valid MBOX... ?
72 What i want is a *real* resend, best if possible from command line.
75 + Add C99-likeish typedefs for integers and use them everywhere.
76 + Don't use magic constants/values.
77 + Document the functions in the interface declarators.
78 + Try to thin out the onion and reduce work that is done over and over
79 again. Maybe introduce objects to represent header[field/body] and
80 content and find a way to pass those all through that vegetable.
81 + The current codebase assumes that in multibyte encodings plains ASCII
82 characters can be tested "as-is". This assumption is wrong for some
83 encodings that use U+001B (escape) or another ASCII thing to introduce
84 shift states. The only real solution to this problem would be to
85 rewrite the entire codebase and use wide characters (IMO) everywhere.
86 + [v13:started] Resort the functions and where they are implemented.
87 It's really terrible. Just think about outof(), savedeadletter(),
89 - The current maintainer doesn't like longjmp()s.
90 - The current maintainer doesn't like signals.
91 - The current maintainer would like to see that compilation with a C++
92 compiler is possible, though that would be a long way and be especially
93 problematic due to the (C ish) way enums are used. He never understood
94 why there is not "bitenum", btw.
95 - The current maintainer worked with all-tabs for almost one and a half
96 decade and turned over to all-spaces afterwards.
98 vim:set fenc=utf-8 syntax=txt ts=8 sts=2 sw=2 et tw=75: