Pan Newsreader

Pan is a Usenet newsreader that's good at both text and binaries. It supports offline reading, scoring and killfiles, yEnc, NZB, binary uploading, PGP handling, multiple servers, and secure connections. It's also the only Unix newsreader to get a perfect score on the Good Net-Keeping Seal of Approval evaluations. It runs on Unix and Unix-like operating systems, Mac OS X, and Windows.

Hacking Pan

Everybody with a good understanding of GTK+, GLib or newsreaders and the Usenet in general is encouraged to participate. Feel free to drop in any time in either the channel or the mailing lists.

The following is a small collection of useful links for our aspiring developers:

Coding Style

Pan is a GTK+ application written in C++, so we would prefer if you adhered to the coding styles mentioned here: GTK+/BestPractices

Also, please try to embed your additions to the code as good as possible into the structure of the existing source.

Overview of the Pan Latest Enhancements

Some of these features need tweaking or bugfixing, most are reported to work flawlessly or without any issues.

  • PGP signing / encryption support
  • TLS / SSL support for encryption
  • Gnome Keyring support for password storage
  • Automatic actions based on article scores (delete, cache, mark read etc.)
  • D-Bus Support for multiple instances ( articles can be batch-queued by command prompt)
  • Iconv, gtkspell3 support, custom CTE

Ideas for Feature Development

  • GnuPG code review/cleanup
  • Make GTK3 the new target, fix all the bugs there (unwanted resizing of tabs etc.)
  • Don't throw away server settings on name update
  • Apply server SSL settings / cert settings right away
  • Re-implement wrap algorithm
  • Add flag to (not) revert wrap on loading new article/refreshing Header Pane
  • HTML preview in Body Pane
  • Bring back draft, sent, trash , .... folders (?)
  • Database integration with sqlite3 (see the details)

  • Fix all errors on bugzilla

Code Overview

Follow this link to get a brief overview of the appropriate sections in code belonging to the features mentioned above. /CodeOverview

Making a Release

Follow the generic instructions on the MaintainersCorner/Releasing page. Instructions specific to Pan are as follows.

  1. Get updates for the NEWS file by running:
    • ./mknews PREVTAG

  2. Check that the README file is updated.
  3. git commit the changes.
  4. Run a command similar to the following to make the release tarballs and a checksum file:
    • ./ && make && make distcheck && sha256sum pan-VERSION.tar.bz2 pan-VERSION.tar.gz > checksum.sha256

  5. Check the generated tarballs.
  6. git push the changes.
  7. git tag the release:

  8. Increment the version number, VERSION_MINOR and VERSION_TITLE, and update the release name in
  9. Upload the tarballs and the checksum file to the download/releases/VERSION/source/ folder on
  10. Update the website.
  11. Compose the announcement email and send copies to,, and

  12. Optionally, download the website content and sync it with

    • wget -m -nH -X /download/extras,/download/releases

  13. Get the release party started!


Apps/Pan (last edited 2018-05-20 20:26:30 by PetrKovar)