Initialize the gmime for upstream
[platform/upstream/gmime.git] / TODO
1 The following is a list of known places for possible improvement to
2 the GMime library. This list of tasks in no way indicates priority,
3 that is to say that there is no rhyme or reason to the order that the
4 tasks are presented in.
5
6
7 GMime 2.6 Planning:
8 ===================
9
10 - Replace all uses of g_signals with my own event stuff. None of this
11   needs to be public and my events are a lot more performant. [ DONE ]
12
13 - Need to add a Changed event to GMimeHeaderList so that GMimeMessage
14   can listen to changes in the toplevel mime_part's headers. When they
15   change, we need to unset the cached header stream on the
16   GMimeMessage. (see the "Note:" comments in message_write_to_stream
17   and message_get_headers, while this hack works, it'd be nicer if we
18   did it based on event callbacks) [ DONE ]
19
20 - Get rid of GMimeSession and replace it with
21   GMimePassphraseRequestFunc or something. See GpgMe's passphrase
22   request callback signature for ideas. [ DONE ]
23
24 - Consider optionally using GpgMe so that we can support S/MIME?
25   [ DONE: but needs testing ]
26
27 - Consider GCancellable and GError for GMimeStreams and
28   GMimeParser... GError being far more important than
29   GCancellable. GCancellable could be nice to have for network
30   streams, though... [ POSTPONED ]
31
32 - Add a GIO-backed GMimeStream and bump glib dep to 2.16 [ DONE ]
33
34 - Add a g_mime_part_get_best_content_encoding()? [ DONE ]
35
36 - Rename GMimeBestEncoding enum to GMimeEncodingConstraint? [ DONE ]
37
38   This might be a better name for the enum to reflect what it's
39   actually meant for. Maybe also move it from gmime-filter-best.h to
40   gmime-encodings.h?
41
42 - How about a g_mime_part_get_best_charset()? This one could be
43   awkward since it depends on the content being text and also encoded
44   in UTF-8... [ CONSIDERING ]
45
46 - Re-add a g_mime_message_get_body()? [ DONE ]
47
48
49 Other:
50 ======
51
52
53 - make thread-safe? some stuff already is, like the gmime-iconv code
54 and some of the other charset stuff. Streams and other objects,
55 however, are not. How can I do this...? And is it really needed?
56
57 - Possibly make the GMime parser incremental.
58
59 - modify address parser:
60
61 <charles> on usenet it's not uncommon to have header like "From: Joe Bob"
62 <charles> where people use no address at all to avoid spammers
63 <fejj> ok
64 <charles> It would be nice if internet-address handled this
65 <charles> have ->name == "Joe Bob" and ->value.addr == NULL
66 <fejj> oh, so only support writing them? ah, that should be easy
67 <charles> It looks like the else clause on line 582 is where a "Joe Bob" string fails
68 <fejj> I was pondering how I could possibly parse that as a name :)
69 <charles> No, I am asking about parsing
70 <fejj> oh
71 <charles> It would be nice for internet_address_parse_string() to return an 
72 InternetAddress with a name of "Joe Bob" and a NULL addr
73 <fejj> ah, okay
74 <fejj> I guess I can do that
75 <fejj> I'll have to modify my internet_address_to_string code to handle that too
76 <fejj> but that should be easy
77
78 - S/MIMEv3: http://www.ietf.org/html.charters/smime-charter.html
79
80
81
82
83 Ideas for GMime "3.0"
84 =====================
85
86 - GMimeStream's should take GError args so apps don't have to rely on
87   errno (really needed for apps that implement ssl streams or other
88   stream types which might not map well to libc's errno values)
89
90   - Maybe even drop GMimeStreams and use GIO?
91   - If not, take GCancellables?
92
93 - GMimeParser should also take a GError arg and/or return int error
94   codes.
95
96 - Would be nice if gmime-sharp could take System.IO.Stream in addition
97   to GMime.Stream.
98
99 - Combine GMimeGpgContext and GMimePkcs7Context by using GpgMe for
100   both. This could allow g_mime_multipart_encrypted_decrypt() and
101   g_mime_multipart_signed_verify() to set the appropriate protocol on
102   the CryptoContext so that the caller wouldn't have to figure that
103   out themselves. We'd actually be able to get rid of the need for
104   a GMimeCryptoContext parameter altogether if we could rely on
105   the backend using a gpg-agent for password requests.
106
107
108 All questions and comments should be directed toward the author,
109 Jeffrey Stedfast <fejj@gnome.org>