I've started working on GMime 2.6, which unfortunately will need to break API with 2.4 in order to achieve the next level of awesome.
If you use GMime (or are thinking of using it) in your project and have some suggestions on how GMime can improve, don't hesitate to fire an email off to email@example.com (preferably after subscribing to the mailing-list first).
These are my current plans:
- Replace all uses of g_signals with my own event stuff. None of this needs to be public and my events are a lot more performant. [ DONE ]
- Need to add a Changed event to GMimeHeaderList so that GMimeMessage can listen to changes in the toplevel mime_part's headers. When they change, we need to unset the cached header stream on the GMimeMessage. (see the "Note:" comments in message_write_to_stream and message_get_headers, while this hack works, it'd be nicer if we did it based on event callbacks)
- Get rid of GMimeSession and replace it with GMimePassphraseRequestFunc or something. See GpgMe's passphrase request callback signature for ideas. [ DONE ]
- Consider optionally using GpgMe so that we can support S/MIME?
- Consider GCancellable and GError for GMimeStreams and GMimeParser
- Add GIO-based GMimeStream and bump glib dep to 2.16 [ DONE ]
- Add a g_mime_part_get_best_content_encoding()? [ DONE ]
- Rename GMimeBestEncoding enum to GMimeEncodingConstraint? This might be a better name for the enum to reflect what it's actually meant for. Maybe also move it from gmime-filter-best.h to gmime-encodings.h?
- How about a g_mime_part_get_best_charset()? This one could be awkward since it depends on the content being UTF-8 text
- Should either rename g_mime_filter_best_encoding() to get_encoding() or else make sure that GMime.metadata 'fixes' the method name to be GetEncoding so that it will appear as a C# property getter.