Uploading to the CPAN used to be really annoying: checking every detail, building a dist, ftp, claiming the file. Sure, they're all easy, but they're boring. Then came cpan-upload, which at least made it easy to get the file onto the CPAN.
release goes much further. It checks your CVS, it tags releases, it catches lots of the bonehead mistakes you (read: I) make. I'm going to use this on all my distributions from now on, and you should, too!
This is my way of releasing stuff for CPAN and keeping a semblance of organization in my cvs. release makes it all into one easy step, as everything is set up once for every module. It checks that your tests pass, your distribution is complete, your cvs is up to date. What would I want more?
This makes releasing software so incredibly easy. And thanks to recent modularization, it is easily customizable to your own needs.
Once set up (which can take some work, but the more distributions you have, the easier it is, as you copy over all the files you need from one to the other and make slight modifications), to release a distribution -- once you have made all your changes, bumped your module version, checked it all in -- you just type "release". That's it.
It makes the distribution, tests it, checks the manifest and cvs, tags cvs, uploads it to CPAN and SF.net, and then claims/releases the file on those systems. All with one word!
(I've modified my local copy to also send a note to my use.perl.org journal after everything has been uploaded.)