Spruce: The Gtk+ Mail Client

Spruce Logo

Introduction
About this site...

News

ChangeLog

Getting Spruce
       Releases
       CVS Instructions

FTP Mirrors
     SourceForge

Mailing Lists
    Archives
       spruce-list
       spruce-devel

Themes

Screen Shots
     Main Window
     Composer
     Preferences
     Account Manager
     Addressbook
     more...

Documentation
     Online User Manual
     Frequently Asked Questions


News

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 :-)

Spruce is Copyright © 1999 by Jeffrey Stedfast
Contact: fejj@stampede.org