## 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, and many others. Thanks! Your feedback has been invaluable.

I am developing ProGuard in my spare time, which is possible thanks to my day-time job at Luciad.

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

JetBrains is kindly providing a license for its IntelliJ IDEA development environment.

The code and these web pages were written using 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 the Java Docking Library.