Pan Newsreader
Contents
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.
- Website:
- Git repo:
- Open bugs:
- Mailing lists:
- IRC channel:
- #pan on Freenode
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.
1. Useful Links
The following is a small collection of useful links for our aspiring developers:
2. 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.
3. 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
4. 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
5. Code Overview
Follow this link to get a brief overview of the appropriate sections in code belonging to the features mentioned above. /CodeOverview
6. Making a Release
Follow the generic instructions on the MaintainersCorner/Releasing page. Instructions specific to Pan are as follows.
- Get updates for the NEWS file by running:
./mknews PREVTAG
- Check that the README file is updated.
- git commit the changes.
- Run a command similar to the following to make the release tarballs and a checksum file:
./autogen.sh && make && make distcheck && sha256sum pan-VERSION.tar.bz2 pan-VERSION.tar.gz > checksum.sha256
- Check the generated tarballs.
- git push the changes.
- git tag the release:
git tag -a PAN_VERSION_MAJOR_VERSION_MINOR
- Increment the version number, VERSION_MINOR and VERSION_TITLE, and update the release name in configure.ac.
- Upload the tarballs and the checksum file to the download/releases/VERSION/source/ folder on pan.rebelbase.com.
- Update the website.
Compose the announcement email and send copies to pan-users@nongnu.org, pan-devel@nongnu.org, pan-announce@nongnu.org and gnome-announce-list@gnome.org.
Optionally, download the website content and sync it with https://github.com/pmkovar/pan-website:
wget -m -nH -X /download/extras,/download/releases http://pan.rebelbase.com/
- Get the release party started!