3/13/04 Still hackin'...
Been busy hacking away for the past 2 weeks or so. I've now fixed up the Mbox implementation
a bit after I wrote a simple mailx-like front-end to libspruce (called spruce-cli for now). I've also
implemented POP and POP/S which seems to work in so much as the front-end allows me to login to a POP
server. However, since POP doesn't implement a summary, spruce-cli won't actually give me a message-list
for the POP folder and so I have no way of knowing if retrieving messages will actually work (it should, tho).
I've also started hacking on an IMAP and IMAP/S implementation which so far is successful in logging me into the
server and getting a SpruceFolder object instantiated. The IMAP Folder class is still too bare to
actually begin to use tho, but CREATE, DELETE, RENAME, LIST, LSUB,
SUBSCRIBE, and UNSUBSCRIBE are all implemented.
Oh, I've also created a new CVS module named 'spruce' which contains all my more recent changes. Shortly after
my last update, I created the new module with a new directory layout. To get it:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/spruce login
(No password needed)
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/spruce co spruce
Or, you can browse the CVS Web Interface
At the toplevel, you'll find 4 directories: gmime/, spruce/, src/ and util/
- gmime/: contains the GMime sources (needed for MIME parsing and basic streams)
- spruce/: libspruce sources (similar to the JavaMail API)
- src/: source code for front-ends (so far only a simple console client)
- util/: utility libraries used by GMime and libspruce (moved to a shared location so they would't
need to be duplicated in both gmime/ and spruce/).
Whew. 75,000 lines of code. That's already 3x the size of the original Spruce codebase :-)
2/23/04 Slow but steady progress
Since the last update I've rolled out GMime
which was a MIME library that I had started working on for Spruce back in 2000 or so. At some point before
GMime 1.0, Charles Kerr of Pan fame contacted me with some suggestions
which kept me busy for a while. Hacked on Spruce a little here and there to try and shoehorn GMime into Spruce
without having to totally rework the backend (you can find the results in the spruce-gmime-rewrite-branch
branch in CVS).
A while later Kristoffer began porting Spruce to Gtk+-2.0. In the meantime, I was working on porting GMime
to Glib-2.0 with the aspiration of joining forces with Kristoffer with the intent on trying to reuse the
shoehorning work from earlier. Unfortunately, by the time I got GMime-2.0 near ready, I came to the realisation
that Spruce was going to need an overhaul. Since I've been working on
Evolution, I had really grown fond of Camel (Evolution's mailer
backend) which was based on the JavaMail APIs. So, I began work on libspruce which is once again based on the
JavaMail APIs but a bit closer than Camel is.
So far, I've managed to implement the abstract Provider, Service, Transport, Store,
and Folder classes. I've only gotten around to implementing Mbox and Maildir Store and Folder
classes but I have started working on SMTP and IMAP as well. JavaMail didn't seem to have a SASL
class (though I'm sure it must?), so I designed my own (which I also happened to use in Evolution) and wrote
ANONYMOUS, PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5, KERBEROS_V4, and GSSAPI
class implementations.
For those who are interested in checking out libspruce, you can do so by checking out the SPRUCE_GTK2 branch in cvs
cvs -z3 co -r SPRUCE_GTK2 spruce-devel
3/04/01 Spruce 0.7.6 released
It's been a long long time since the last release of Spruce. This revision mostly just fixes
some bugs that people have reported over the past few months about 0.7.5 - hopefully most (if not all) of
the nastiest bugs have been fixed.
For those of you who have been wondering why the development of Spruce has all but ceased, the reason is
because I've been hired by Ximian, Inc. (Back in April of 2000) and have
had a chance to start anew with their mail client called
Evolution. I believe that Evolution contains some
of the very best code that I have ever written and sincerely hope that you give it a try. Just like Spruce,
Evolution is licensed under the GNU General Public License and is even more standards
compliant than Spruce.
Maybe someday I'll port all my hard work back to Spruce, but odds are the days of Spruce are coming to
an end.
9/02/00 Spruce 0.7.5 released
Added support for PGP clearsigning and preliminary support for SSL with POP and IMAP.
Spruce now will warn users of problems via warning dialogs rather than console messages and there
is a new feature that allows a user to have Spruce beep when new mail arrives.
8/23/00 Spruce 0.7.4 released
Major improvements to PGP encryption/decryption support - now supports
GnuPG, PGP 5 and PGP 2. Some of the new features are the ability to edit your
addressbook information, more word-wrap functionality including the ability to
convert tabs to a set number of spaces, etc. This releases fixes a number of bugs as
well.
8/4/00 Spruce 0.7.3 released
This release adds In-Reply-To and References headers to outgoing messages in order to not break
message threads on mailing lists. It should also now build on FreebSD systems thanks to Todd Cohens help. It
also fixes the SMTP issues that a few people were having.
5/11/00 Spruce 0.7.1 released
This release fixes a lot of the bugs in the Spruce 0.7.0 release and can now be considered almost
ready for prime time. Most people should be fine with using this release as their primary mailer, however I do
suggest backing up your mail just in case.
The main fixes in this release are the same fixes as in Spruce 0.6.5 and also a major fix dealing with mutex locking.
This last fix should make it virtually impossible for mailbox corruption to occur (unless multiple instances of
spruce are running and manipulating mailboxes at the same time - which means I'll probably still have to add some
sort of file locking).
I am keenly aware of the fact that some systems may not correctly display your mail list and I am working to fix
that, but I am unsure of where the problem lies. If you have a problem with this version of Spruce, please send me
the output of spruce --debug-info along with any other data that you can think of including but not
limited to: libc version, distribution/release, and any other information you see as being possibly vital.
5/11/00 Spruce 0.6.5 released
Minor improvements over 0.6.4 making it more compliant to RFC standards. You're probably asking "what
happened to spruce-0.6.4?" The answer is that I got lazy and forgot to announce it, but I did upload it to all the
download sites :-)
4/24/00 Spruce 0.7.0 released
This is the first of the next generation series of Spruce. Currently you will
probably notice almost no change in the interface or much else, except for the fact that
it should not be quite a bit faster and will support infinite composer windows. Remember,
this is a development release and is deemed "unstable" and thus it would be a
wise move to backup your mailbox files before trying this version (or any later 0.7.x
version). I doubt anything horrible will happen, but be warned.
4/22/00 Spruce 0.6.3 released
Minor improvements over 0.6.2 including Cut/Copy/Paste support, improved E/SMTP support
and all reported bugs from 0.6.2 have been fixed.
4/16/00 Spruce on BSD
It has come to my attention that many of the BSD users are having
problems building Spruce on their systems. Those users who have brought it to my
attention inform me that BSD systems don't have a libpthread, and instead
use libc_r. Unfortunately, these libs do not seem to be "compatable". I thank
Erich Ziegler for informing me that one possible solution to this is to install the BSD
linuxthreads port.
4/01/00 Spruce Online User Manual now up
John Fleck wrote up some beautiful documentation on spruce. Just click on
the Online User Manual link on the lower left and be amazed :-)
4/01/00 Spruce 0.6.2 released
Not much to say except that IMAP and MIME have both been slightly improved and
the configure script now checks specifically for Glib 1.2.7 to avoid the confusion that
came with the 0.6.1 release.
3/17/00 Notice: Spruce 0.6.1 has been found to require glib 1.2.7
If you're having problems with Spruce 0.6.1 freezing up when you either close the
compose window or else when sending a message, you are likely to be running a buggy version of
glib. At this time, it is assumed that versions 1.2.6 and earlier are affected. Please upgrade
to glib 1.2.7 (RPMS can be found here).
If, after you upgrade, you are still experiencing the same problem, do
contact me and provide system information,
library versions, and anything else that you may deem important.
Project Manager/Lead Developer,
Jeffrey Stedfast
3/24/00 Spruce 0.6.1 released
This releases fixes a number of bugs that were reported in the last week. Changes include
the imap-accounts patch, a fix to really remove attachments and not just from the clist,
a new composer window, fixes for Solaris, imap namespaces no longer require a '/' at the end (spruce will now
auto-detect if it's not there and append it for you), the imap namespaces no longer appear as part of the mailbox
name in the mailbox tree, changed the "Expunge" key accelerator to Control E to avoid accidently expunging emails,
and hopefully fixed the UIDL problem that spruce was having with a few POP daemons.
3/17/00 Spruce 0.6.0 released!
This marks the beginning of the next generation of "stable" releases of Spruce. Please see the
ChangeLog for a list of changes.
Project Manager/Lead Developer,
Jeffrey Stedfast
3/13/00 Spruce 0.5.18 released!
This should (hopefully) be the last development version before I release my next stable version, 0.6.0.
The clock is ticking folks, so if you have bugs to report please send them right away or they will have to wait until
0.6.x to be fixed. Also, I welcome feature requests but please realise that it's too late in the game to be adding them to
0.6 - new features will now have to wait until the 0.7.x development series. Thank you.
3/10/00 Spruce begins it's move to SourceForge
Due to the need for services such as mailing lists, bug tracking, etc and because my good friend at
aspect.net was fearing that he may not be able to host spruce much longer, I decided to make the move here. It's
taking time, but eventually this will be spruce's new home :-)