The "best" depends a lot on what you need ...
I use pfSense for my home network, and I am very happy about it. It runs fine on low power, small form factor hardware (in my cas an Alix2d13). The user interface is easy to understand and well designed. It supports advanced features if you need them (CARP, Multi WAN, ...). The only more or less advanced feature that I use is bridging between my wireless and my wired network.
I did use Shorewall, installed on a Debian system in multiple small enterprises setups. I didnt have any web interface on them, but I find that editing text files to add rules is actually a better solution in this setup. It becomes easy to backup your rules, version them, run diffs over them ...
I did try quite a few other solutions (IPCop, Smoothwall, ...) but I never sticked with them (not that they were bad, I just prefer Shorewall and pfSense).