March 3, 2021
Hot Topics:


  • By Robert Bernstein
  • Send Email »
  • More Articles »

The natural history of a software application, its life story, was for a long time known only to those behind the walls of the company who owned it. If one moves from working entirely with commercial software, to the world of free and open source software, it is quickly evident that projects evolve out in the open, where any major change in their direction or personnel is public knowledge. If an application is "forked," or split off into two projects with two distinct teams, then that too is announced far and wide.

Pronto (http://www.muhri.net/pronto), an MUA (Mail User Agent) written entirely in Perl, is the result of such a fork. It is the descendant of CSCMail (http://www.cscmail.net), whose author decided earlier this year to initiate a rewrite of CSCMail in C, the lingua franca of Unix computing. The balance of the CSCMail team, (everyone except its principal author,) remained dedicated to the Perl version, and Pronto was born as a fork of CSCMail. The readme file included with Pronto's source code provides some of the flavor of the event:

    "...several of us did not think it was time for CSCMail to make the leap [to] C and just enjoy hacking in Perl. So, we continued development of CSCMail in Perl, and just called it Pronto to distinguish the [Perl} effort from the current efforts of the developers of CscMail."
Like Gmail, reviewed in the last installment of this series, Pronto is coded using the GTK (Gimp ToolKit) GUI library (http://www.gtk.org), so it runs easily on the Gnome desktop or, minimally, requires the GTK libraries. Hence it is window manager/desktop independent; the author's copy of Pronto can be usually found running on a KDE 2.0 desktop. And, like Gmail, Pronto uses the MySQL database to handle message storage, sorting, and searching chores. Pronto takes its database connectivity one step farther than Gmail; while Gmail is limited to MySQL, Pronto can also use the PostgreSQL database, and will, in the absence of an SQL database, default to the time-honored but inefficient CSV (comma separated variable) file format. Indeed, the Pronto home page declares: "[Pronto] uses the Perl DBI interface now, for database flexibility. You can now use any Perl DBI compliant database with Pronto!. Not just Postgres."

Figure 1: The main Pronto window.

Getting Pronto

A familiar hallmark of good Unix and Linux applications is that they are initially somewhat tricky to set up, but once properly installed, they run very reliably. If they ever they need to be reconfigured or reinstalled, a return "refresher" trip to the documentation is often required; it's easy to forget the setup details of an application that never requires any fussing once it's installed. Pronto has this characteristic, although much of the trickiness of its installation has been alleviated by a clever Perl install script. A "manual" installation from the source code tar ball is possible, but since Pronto brings together three of its host's major software systems, Perl, MySQL, and Gnome, it has some unusual software prerequisites, and the Installer, as it's termed, will automatically retrieve almost all that is needed to meet these prerequisites.

Debian users who are following "Woody," the current "unstable" or developmental tree, can simply "apt-get pronto" and be off and running. Also, there are debs in Woody for the MySQL and PostgreSQL Perl modules. Users of other distributions may find packaged versions of Pronto, but this author can only vouch for Debian's. Unfortunately, the gnome-perl bindings required by Pronto are not available in deb format, but for the typical Debian user, getting and installing these will present no difficulty.

The Installer requires an active Internet connection, since it downloads the needed software on the fly, including Pronto itself. The installer script can be kept anywhere in the file system, because it will always create its "build" directory in /root/prontobuild/; as root superuser, start the Installer like this:

      # perl ProntoInstaller.pl
First the gnome-perl bindings are downloaded and installed, since it is unlikely these are already on the host, even if it has a fairly complete Gnome desktop already installed. (Again, Pronto does not require Gnome.) Then the host's Perl installation is examined for the needed Perl modules, and if any are missing they are downloaded and installed. Lastly Pronto itself, either in tar ball or rpm format, is downloaded and installed; if tar ball is chosen there is an opportunity to set Pronto's installation prefix: for instance, /usr/local/.

There is one glitch in the installation process, but it is easily circumvented. Pronto needs the HTML::Parser Perl module, but this module has had a recent rewrite and needs to query the user during its build about some new experimental Unicode support. The Installer will hang at this point and display a message, "Waiting for user input," but it is easy to get back on track. First issue a 'Ctrl-C' to halt the Installer, and then manually install HTML::Parser by doing the following (say "no" to the query when it pops up):

     # cd /root/prontobuild/HTML-Parser-3.13/
     # perl Makefile.PL
     # make
     # make install
Then restart the Installer. It will note HTML::Parser's presence and move through the rest of the installation. As of ver. 2.2.2 (2.2.1 is the current) this detour will be rectified.

HTML Widgets

Pronto's message viewing pane can be either a plain text widget, or one of three possible HTML widgets. All four widgets will display message quoting in color, with different colors for different quoting "depths." The default HTML widget, GtkXmHTML, built automatically by the Installer, will display clicked URLs in a user-defined Web browser such as Netscape. One of Pronto's nicer features, its "minibrowser," requires either of the other two HTML widgets, GtkHTML or CscHTML. The minibrowser is a scaled down HTML file viewer, which some users will prefer for viewing URLs found in e-mail messages rather than launching a full scale browser such as Netscape. GtkHTML can be installed by revisiting the /root/prontobuild/ directory, CDing to the gnome-perl/GtkHTML/ subdirectory, and issuing the commands used above to install the HTML-Parser module. CscHTML can be downloaded from its home page at http://www.cscmail.net/cschtml. Interestingly enough, the author found that the older CscHTML widget rendered some HTML better than GtkHTML, but by all accounts the latter is the more advanced of the two.

Pronto determines which widget to use according to a "fallback" on this list: CscHTML, GtkHTML, GtkXmHTML, text. With one of the HTML widgets, Pronto can be configured to display image attachments inline in the message viewing pane. It should be noted that Pronto does not create HTML mail, and that Pronto is not susceptible to the security risks inherent in most MUAs that do feature HTML mail. No JavaScript will be executed in Pronto! Finally, regardless of which HTML widget is in place, it is always possible to revert to the plain text widget by accessing Pronto's Options menu.

Page 1 of 2

This article was originally published on January 24, 2001

Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

Thanks for your registration, follow us on our social networks to keep up-to-date