This is my first open source project that I’ve started and maintained, so I’m pretty excited about it. I was upset at the current offerings of Hashcash for the various MUAs, so I set out to do something about it. You’ve already read on my blog about my solutions for minting and verifying Hashcash tokens with Mutt. Well, a good friend of mine suggested that I start an open source project out of it, put it into revision control and get my rear in gear. So, I did just that.
Announcing Penny Red, a Python solution to integrate Hashcash into Mutt, licensed under the GPLv3. I chose the name “Penny Red” for a two reasons:
- Penny Red was the second British postal stamp which was debuted in 1841, the first being the Penny Black stamp. The color was changed, so the black cancellation mark could be easily seen on a red stamp, versus the previous black stamp. Because the goal of the project is to implement a payment system through minted tokens, and a previous solution had existed in Perl (without documentation, mind you), this seemed appropriate.
- Unfortunately, in the English language, the words “red” and “read” have the same sound, yet different spelling. After reading your email, you would say “I have read my mail”. Because it had postage attached in the headers, you read mail that was paid for. So, “Penny Red” is a play on “Penny Read”
The great thing with the Python scripts in Penny Red is their portability. The “mint_hashcash.py” script reads a file as a passed argument, and then writes to the headers. The “verify_hashcash.py” script reads the mail from STDIN and prints the message and the verified tokens back to STDOUT. Nothing specific about Mutt is in either script! As a result, as long as the MUA supports STDIN and STDOUT with each message, and modifying the headers, these scripts can be used. I guess what I’m saying is, I would like to extend these scripts to Pine, Alpine, Gnus (although not really necessary as Gnus supports Hashcash out of the box), Elm, and others, without forking the project. Penny Red should be able to support multiple MUAs.
At any event, I just wanted to get this post out there, seeing as though I just barely setup the project. I’m pretty excited. Should be fun, and give me something to do after graduation.