## Acknowledgements

The first versions of ProGuard grew out of RetroGuard, which its author Mark Welsh kindly made available under the GNU Lesser General Public License. RetroGuard is a very nice piece of code, but it only performed obfuscation. I started from the class file parsing code and wrote my own shrinker, optimizer, obfuscator, and preverifier. As of version 4.0, all of the original code has been rewritten, so the most obvious remaining similarity are the program names.

Dirk Schnelle has contributed and maintained the first versions of the Ant task. I have rewritten the implementation for version 3.0, but the XML schema is still based on his work.

Since its first public release, many people have expressed their enthusiasm and have chimed in with interesting ideas, bug reports, and bug fixes: Thorsten Heit, Oliver Retzl, Jonathan Knudsen, Tarcisio Camara, Bob Drury, Dave Jarvis, Marc Chapman, Dave Morehouse, Richard Osbaldeston, Peter Hawkins, Mark Sherington, David Sitsky, James Manning, Ptolemy Oberin, Frank-Michael Moser, QZ Shines, Thomas Singer, Michele Puccini, Roman Bednarek, Natalia Pujol, Daniel Sjöblom, Jan Filipsky, Charles Smith, Gerrit Telkamp, Noel Grandin, Torbjörn Söderstedt, Clemens Eisserer, Clark Bassett, Eduard Welch, Dawid Weiss, Andrew Wilson, Sean Owen, Niels Gron, Ishan Mehta, Steven Adams, Xavier Kral, Stefan Martin, Toby Reyelts, and many others. Thanks! Your feedback has been invaluable.

Saikoa is providing the financial resources for this project.

SourceForge is providing the resources for hosting this project and many other projects.

The code and these web pages were written using Oracle/Sun's JDKs, Linux, IntelliJ IDEA, GNU emacs, bash, sed, awk, and a whole host of other tools that continue to make programming interesting.

And finally, I'm a great fan of Sanaware's Java Docking Library.