Using an external viewer such as Johnny, CPViewer, or my CPMaker viewer has some advantages over the compiled-in viewer:
Using the internal artwork generator has some advantages over external artwork viewers.
1) Faster
2) No application switch necessary - displaying controls is seamless
3) No complicated and flaky scripts necessary.
4) More functionality than Johnny or CPViewer
5) CPMaker is open source, Johnny and CPViewer are not.
AHK is open source, however, so I endorse its use.
I'll give you #1, it is faster... not sure what you mean by the others.
Going down the list:
2.) There is application switching, but the user will never know it or see it... it is seamless.
3.) You could argue that the script is flaky at times, but it's by no means complicated. As a matter of fact you just drop it in place 9 times out of 10 so you don't even have to know how it works.
4.) Don't you mean the internal artwork viewer has LESS functionality than the external apps? I mean mine for example allows icons, scrolling text and most importantly auto-generation of the layouts. All the internal viewer can do is a display a png you rendered manually. Which is fine... if you only wish to run 10 or 20 games or have the patience of a saint. Now you can also use j5 or the other viewers to generate images ahead of time, but that actually becomes more cumbersome and time consuming than just setting up a script to launch them during mame. Also if you remap your controls for some reason, or mame changes the inputs, you are screwed, as you have to do them all over again.
5.)What in the world does open source have to do with this? There's a reason j5 isn't open source btw.... it's so complicated nobody (that would be interested in working on it) could possibly follow how it works. I don't mean to sound pretentious it's just that the app mimics mame's input macros and they change so quickly even I can't always keep up. But I'm getting off topic here.
I have no clue where your obsession with open source comes from. Open source is only useful if people are willing to work on the code. Unfortunately, this isn't the community for that. I offered to release the source to one of my old fe's a long while back (when mamewah wasn't even a thought) I got zero takers. I found that rather odd considering at the time it was by far the most popular windows fe out there.
I'm not saying that using the internal aw viewer isn't an option, I'm just saying that out of your 5 points only 1 and a half are valid.
AW Pros:
The aw method is faster to display in mame.
Depending upon what script you use (the one button or two button) it can be more reliable than a script.
Aw Cons:
Unfortuantely the setup time for that method is unbearably long (generation of the images, AND the setup of a viewer) and if anything changes you have to do it all over again.
Since it's a static image, you can't have animations or any user interaction.
Because the aw system is low res, the image quality can be bad.
Because the aw system requires a lot of resources if you put aw resolution to high res (so you can actually read the dang text) it can slow down the more modern games considerably.
You are totally and completely dependant upon custom build authors to run your setup. This sounds like a minor issue but it's not. If the build dies, you have the option of either rolling your own build from now until the end of time, hoping and praying that the mame core doesn't change so much that the code change breaks, or stay with the last build and never upgrade again. Remember guys, powermame (almost) died once already and it's only been two months!
Script Pros:
Faster setup time (just a script and the viewer setup to deal with, the latter of which you'd have to do anyway.)
Better image quality.
In theory no extra resources are used. (The app is unloaded when not visible and while mame is paused it's not using any resources.)
The possiblity for animations and user interaction.
Minimal re-configuring required for an input change (don't have to batch generate everything again, in the case of j5, if you remap it in mame you don't have to do anything).
Dual screen mode.
Considering you could potentially write a script to launch anything, this method has unlimited flexibility.
You don't have to wait for the next custom build release before you can upgrade mame. Thus your aren't depedant upon custom build authors. Again this is a BIG issue.
Script cons:
It takes longer for the layout to display.
Depending upon the script you use you might have some pausing issues.
Sporatic reports of ahk not working in 9x (can't confim this although I assume it as a given).
So 2 pros vs 8 and 4 major cons vs 1 major con.
Again, I'm not saying internal use isn't a valid option... it's just when you look at the stats, unless you are running 9x and are having issues it makes a whole lot more sense to run the viewers externally.