1) The only things that can't be installed on top of default OpenWrt, and require a kernel patch, are the module necessary for client bridging on atheros devices, and a very minor patch to the atheros ethernet driver. There are some other iptables kernel modules that are built, but these should work with a default kernel.
However.. those iptables modules are the biggest problem for building as a feed. The way I have it set up is to have a special patch script that can generate the necessary files/modifications (there's a TON of modifications necessary) to add a new iptables module. This means I don't have to re-generate a patch file every time I modify one of the modules -- all the necessary modifications just get computed at compile time. Since OpenWrt doesn't have my patch script (or anything similar), compiling these modules from a default OpenWrt build environment is problematic. These modules are absolutely essential for many of the best features of Gargoyle, in particular bandwidth quotas.
2. You can download and install packages I've made on top of a default openwrt installation with ipkg/opkg. Atheros wireless bridging won't work though. If you apply the patches in the target directory before building openwrt that will work too. The iptables modules are hard to build, but not hard to install.
3. No. Let me tell you a story:
The first back-end package I built for Gargoyle was dynamic dns, in early 2008. The lates dynamic dns package used by Gargoyle is in C so that it has support for updates via https (more secure), but that initial version was just shell scripts. I initially hoped to get a lot of the Gargoyle packages into OpenWrt, so I submitted the package, and waited. And waited. And waited. And waited. For two months, not a peep -- not even a "thanks, please wait while we look over your submission." Then, finally, two months later, it was unceremoniously added to the repository.
That two month wait really annoyed me... but what happened next made the problem worse. Someone found a bug in the code and submitted a patch. All well and good... except the patch was ignored. And ignored. And ignored. After the first person submitted a suggested fix to the TRAC, I thought maybe no one had seen it so I sent the same fix to the mailing list. That was ignored too. So, here I had
my code in their repository, which had
my name on it, which had a bug that I had no way of patching/fixing. While bugs are inevitable, I'd prefer to keep as much of the code that has my name on it as bug free as possible! Otherwise, it makes me look bad.
They finally patched the bug, something like 5-6 months later, but dealing with this insanity convinced me that anyone who submits code to the OpenWrt development team should be prepared to wait for Hell to freeze over before they get a response.
Just to drive the point home: I submitted another patch to a problem preventing client (sta) mode wireless without an AP from working on broadcom based routers in July 2008.
It was just added 6 weeks ago (June 2009), 11 months later! No one even contacted me to let me know -- I wouldn't have noticed except that when building Gargoyle I no longer needed to apply my own patch that fixed this.
Until the developers over at OpenWrt get their collective heads out of their collective asses and fix their patch submission process, I will
never submit anything to them again. Of course, my code is GPL -- anyone (you?) are perfectly free to submit it if you wish. Just don't expect a response.
4. I have no intention of making Gargoyle a fork. Despite my extreme creative differences with the OpenWrt developers, their code is very good. The first step of building Gargoyle will always be to check out the OpenWrt code base. However, I'm not sure that saying Gargoyle is "simply" a GUI is entirely correct. There's a lot of back-end functionality that I've added. A better way of looking at it, is to just say that it's built on top of OpenWrt, in much the same way
Linux Mint is built on top of
Ubuntu Linux, and Ubuntu is built on top of
Debian Linux.
5. No, for the reasons outlined in (1)
6. In Tomato there are at most 10 service classes you can have for traffic. Gargoyle allows you to define unlimited (though the realistic limit is actually about 100) classes. Also, unlike Tomato (I think -- I haven't checked this recently, it may have been implemented since then in Tomato) you can classify and limit both upload and download traffic. Finally, Tomato reports graphs of qos usage, but you can't specify what time-frame this applies to. In Gargoyle, you can specify multiple time-frames over which you can report the usage of the various service classes. The only thing reported by Tomato that I do not report is the number of connections currently in each service class.
I don't know how this compares to paid dd-wrt -- I'm not willing to pay for a version of dd-wrt.