The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
v_1_2beta3
:: docs
/
lobby.html
<HTML>
<document>
<HEAD>
<title>JSR47 vs. log4j</title>
</HEAD>
<body>
<CENTER>
<H1>Is JSR47 reinventing the wheel?</H1>
<font size="+1">by Ceki Gülcü</font>
</CENTER>
<hr></hr>
<p>As of version 0.8 of the JSR47 specification the
<code>java.util.logging</code> API resembles log4j even more
than was the case previously. The way the two APIs name their
components may differ but otherwise their degree of
resemblance is quite striking.
</p>
<p>Changes introduced in the latest 0.8 draft include
configuration order independence, appender inheritance, resource
bundle inheritance, error handlers and lazy inference of caller
information. In other words, even if the priority levels remain
unchanged and somewhat bogus, the majority of the points raised in my
<a href="critique.html">critique</a> of JSR47 are now obsolete.
</p>
<p>Consequently, it is fair to say that our campaign to
influence the JSR47 API handsomely bore fruit. I wish to thank the
hundreds of concerned users who have expressed their support for
log4j. My gratitude goes to Jason Hunter for arranging the appropriate
communication channel to Sun. Graham Hamilton, the JSR47 specification
lead, was very open and receptive during our exchanges.
</p>
<p>From the user standpoint, there remain two critical
differences. First, JSR47 requires JDK 1.4 whereas log4j is compatible
with JDK 1.1 and later. Second, log4j offers much more
functionality. It supports a rich configuration language, at least a
dozen appenders and layouts as well as many other useful features.</p>
<p>Efforts to backport JSR47 to earlier JDKs are doomed to fail
because the <code>java.util.logging</code> package is located under
the <code>java</code> namespace. This will cause backported code to
systematically throw a <code>SecurityException</code> under JDK
1.3. Moreover, Java is a trademark owned by Sun Microsystems. As such,
the backported code will be under the threat of litigation as long as
Sun can be expected to defend its trademark.
</p>
<p>If you look at the terms of the final draft of the JSR47
specification, you will discover a copyright notice containing the
following text.</p>
<pre>
Sun hereby grants you a fully-paid, non-exclusive, non-transferable,
worldwide, limited license (without the right to sublicense), under
Sun's intellectual property rights that are essential to practice
the Specification, to internally practice the Specification solely
for the purpose of creating a clean room implementation of the
Specification that: <b>(i)</b> includes a complete implementation of
the current version of the Specification, without subsetting or
superset-ting; <b>(ii)</b> implements all of the interfaces and
functionality of the Specification, as defined by Sun, without
sub-setting or supersetting; <b>(iii)</b> includes a complete
implementation of any optional components (as defined by Sun in the
Specification) which you choose to implement, without subsetting or
supersetting; <b>(iv)</b> implements all of the interfaces and
functionality of such optional components, without subsetting or
supersetting; <b>(v)</b> does not add any additional packages,
classes or interfaces to the "java.*" or "javax.*" packages or
subpackages (or other pack-ages defined by Sun); <b>(vi)</b>
satisfies all testing requirements available from Sun relating to
the most recently pub-lished version of the Specification six (6)
months prior to any release of the clean room implementation or
upgrade thereto; <b>(vii)</b> does not derive from any Sun source
code or binary code materials; and <b>(viii)</b> does not include
any Sun source code or binary code materials without an appropriate
and separate license from Sun. The Specification contains the
proprietary information of Sun and may only be used in accordance
with the license terms set forth herein. This license will terminate
immediately without notice from Sun if you fail to comply with any
provision of this license. Upon termination or expiration of this
license, you must cease use of or destroy the Specification.
</pre>
<p>Given these business terms it is not possible for log4j or
other independent parties to implement the JSR47
specification. Here is how the Apache Software foundation, a
member of the JCP Executive Committee, <a
href="http://jcp.org/jsr/results/47-15-1.jsp">voted</a> on this
JSR.</p>
<blockquote>
The Apache Software Foundation is grateful for the significant
efforts of the JSR 47 spec lead, Graham Hamilton, toward addressing
the technical concerns raised by the members and lead of Apache's
log4j project. Regretfully, under the Merlin business terms, log4j
(or any other potential independent implementation of this
specification) cannot make use of the Specification, not can anyone
implement this specification for earlier J2SE platforms (J2SE 1.2,
1.3), and it is on this basis that Apache cannot support this JSR.
</blockquote>
<p>Even without the <code>SecurityException</code> and the
licensing issue, you would need an additional logging library to fill
in the functionality gap, the JDK compatibility gap, or both. If you
are going to install one or more logging APIs, then why not install
log4j which offers a lot more than JSR47 and is backward compatible
with JDK 1.1?</p>
<p>Log4j is the de facto standard logging API in Java. It has
been ported to Python, C, C++, Eiffel and the much maligned C#. By
adopting log4j, you simultaneously benefit from much richer
functionality and wider JDK compatibility. In any case, with the
support of the log4j community, the log4j project will continue to
innovate and lead the way. As such, many of the features that you need
or will need in the future will be first available in log4j.</p>
<h2>Remaining differences</h2>
The remaining differences are admittedly of secondary
importance. None of them will cause you to think "oh, that is a
showstopper." You will probably shrug and move on to the next
item.</body>
<ol>
<li><b>Filter logic</b>
<p>As in Linux ipchains, log4j filters use ternary logic. In JSR47,
filter logic is binary. Mathematically the two logics are equivalent
except that it is much easier to combine generic filters in log4j's
ternary logic than in JSR47's binary logic</p>.
<p>For example, if you would like to reject a log message if
it contains the string "Microsoft" or the string "proprietary code",
accept messages having the info priority and only the info priority
and reject everything else, you would write:</p>
<pre>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="Microsoft" />
<param name="AcceptOnMatch" value="false" />
</filter>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="proprietary code" />
<param name="AcceptOnMatch" value="false" />
</filter>
<filter class="org.apache.log4j.varia.PriorityMatchFilter">
<param name="PriorityToMatch" value="INFO" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</pre>
<p>You cannot express this policy with JSR47 filters without
writing a filter for exactly this policy.</p>
</li>
<li><p><b>Filters in loggers (categories)</b></p>
<p>JSR47 allows filters to be attached to loggers (categories
in log4j speak) and also to handlers (appenders in in log4j
speak). Log4j allows filters to be attached to appenders but
not to categories.</p>
<p>In short, attaching filters to loggers is a feature that
JSR47 offers but log4j does not. However, because arbitrary
logic cannot be meaningfully composed, filters cannot be
inherited. Thus, you would need to attach a filter to every
single logger where you would like it to apply.</p>
</li>
<li><p><b>Bogus levels</b></p>
<p>JSR 47 defines the levels <code>ALL</code>,
<code>SEVERE</code>, <code>WARNING</code>,
<code>INFO</code>, <code>CONFIG</code>, <code>FINE</code>,
<code>FINER</code>, <code>FINEST</code> and
<code>OFF</code>.</p>
<p>Having three debugging levels <code>FINE</code>,
<code>FINER</code>, <code>FINEST</code> could seem like a
good idea. However, you will soon discover that even when by
yourself, it is hard to decide when to use which level. It
is plain impossible in groups.</p>
<p>Arguing about priority levels is a bit like arguing about
your favorite color. I will thus stop here. </p>
</li>
<li><p><b>Plethora of printing methods</b></p>
<p>The set of printing methods in the <code>Logger</code>
class is confusing. It is all there -- just not where you
would expect them to be. For example, you cannot log an
exception with the <code>warning</code> or
<code>severe</code> methods. You will need to use the
<code>log</code> method instead.
</p>
</li>
<li><b>Sequence numbers</b>
<p>JSR47 emits sequence numbers in each log record it
creates. The sequence number is synchronized using the
<code>LogRecord</code> class itself at the cost of a small
but measurable performance penalty. This variable is not
likely to be very meaningful if the logging output is split
between different handlers as the output of each handler
will contain holes in the sequence numbers.
</p>
</li>
</ol>
<h2>Stop reinventing the wheel</h2>
<p>There are many other details in which log4j differs from
JSR47. Even if the log4j core is small, the project contains a total
of over 30'000 lines of well-tested code. JSR47 contains about 5'000
lines of code.</p>
<p>Log4j has been around for a number of years, enjoys the support
of an active community and is being used in thousands of projects. Our
site gets over 600 downloads each and every day, and the numbers are
on the rise. Companies are also offering commercial products
extending log4j.</p>
<p>Here is a short list of open source projects or sites that are
known to use log4j.</p>
<ul>
<li><a href="http://www.cryptix.org/products/sasl/">Cryptix</a></li>
<li><a href="http://www.jcorporate.com/html/products/expresso/logging.html">Expresso Framework</a></li>
<li><a href="http://www.free-project.org/">Free E-Democracy Project</a></li>
<li><a href="http://java.freehep.org">FreeHEP</a></li>
<li><a href="http://www.jboss.org">JBoss</a></li>
<li><a href="http://www.opensymphony.com/guidelines/logging.jsp">OpenSymphony</a></li>
<li><a href="http://theserverside.com">TheServerSide</a></li>
<li><a href="http://jakarta.apache.org/turbine/index.html">Turbine</a></li>
<li><a href="http://jakarta.apache.org/velocity/index.html">Velocity</a></li>
<li><a href="http://wired2.web.cern.ch/wired2/">WIRED</a></li>
</ul>
<p>Sun might be setting a dangerous precedent by ignoring a rather
successful open source project. If it happens to log4j, can it
happen to your project?</p>
<h2>Lobby Sun</h2>
<p>If you feel that Sun is reinventing the wheel and setting a
dangerous precedent, then this the time to lobby Sun to adopt
log4j as the official logging API for the Java language.</p>
<p><b>Please direct your polite and personalized request to <a
href="mailto:jsr-47-comments@jcp.org
">jsr-47-comments@jcp.org</a> with Bcc: to <a
href="mailto:ceki@qos.ch">ceki@qos.ch</a>.</b>
</p>
<p>Many individuals have written to Sun to express their concern,
in their vast majority pushing for the adoption of log4j. Their names
and the content of their request are listed below. I am very grateful
for their support. Some of these requests are quite detailed and
insightful.</p>
<p><UL>
<li><p><a href="pub-support/ChristopherTaylor.html">Christopher Taylor</a> <!-- -->
<li><p>Jon Stevens
<li><p><a href="pub-support/PaulGrinchenko.html">Paul Grinchenko</a> <!-- -->
<li><p><a href="pub-support/CourtDemas.html">Court Demas</a> and his <a href="pub-support/CourtDemas2.html">follow up</a> <!-- -->
<li><p><a href="pub-support/NelsonMinar.html">Nelson Minar</a> <!-- -->
<li><p><a href="pub-support/RobertMahoney.html">Robert Mahoney</a> <!-- -->
<li><p><a href="pub-support/EllisTeer.html">Ellis Teer</a>
<li><p><a href="pub-support/GuyLichtman.html">Guy Lichtman</a> <!-- -->
<li><p><a href="pub-support/MichaelMoser.html">Michael Moser</a> <!-- -->
<li><p><a href="pub-support/HenrikLundahl.html">Henrik Lundahl</a> <!-- -->
<li><p><a href="pub-support/ThomasFenner.html">Thomas Fenner</a> <!-- -->
<li><p><a href="pub-support/EndreStolsvik.html">Endre Stølsvik</a> <!-- -->
<li><p><a href="pub-support/KnutErikBallestad.html">Knut Erik Ballestad</a>
<li><p><a href="pub-support/HenrikFredholm.html">Henrik Fredholm</a> and his <a href="pub-support/HenrikFredholm2.html">follow up</a> to Graham.
<li><p><a href="pub-support/JohnVolkar.html">John Volkar</a> <!-- -->
<li><p><a href="pub-support/WilliamJaynes.html">William Jaynes</a> <!-- -->
<li><p><a href="pub-support/MichaelStacey.html">Michael Stacey</a> <!-- -->
<li><p><a href="pub-support/StacyCurl.html">Stacy Curl</a> <!-- -->
<li><p><a href="pub-support/DavidOwens.html">David Owens</a> <!-- -->
<li><p><a href="pub-support/EoinFlood.html">Eoin Flood </a> <!-- -->
<li><p><a href="pub-support/TonyDean.html">Tony Dean </a> <!-- -->
<li><p><a href="pub-support/AlexBlewitt.html">AlexBlewitt</a>
<li><p><a href="pub-support/JamesProkash.html">James Prokash</a> <!-- -->
<li><p><a href="pub-support/RalfHaug.html">Ralf Haug</a> <!-- -->
<li><p><a href="pub-support/CarlBacher.html">Carl Bacher</a> <!-- -->
<li><p><a href="pub-support/DanTanner.html">Dan Tanner</a> <!-- -->
<li><p><a href="pub-support/BrentSprecher.html">Brent Sprecher</a> <!-- -->
<li><p><a href="pub-support/SteveWingfield.html">Steve Wingfield</a> <!-- -->
<li><p><a href="pub-support/AndersKristensen.html">Anders Kristensen</a> <!-- -->
<li><p><a href="pub-support/AbeMirrashidi.html">Abe Mirrashidi</a> <!-- -->
<li><p><a href="pub-support/JasonKitcat.html">Jason Kitcat</a> <!-- -->
<li><p><a href="pub-support/RonJacobs.html">Ron Jacobs</a> <!-- -->
<li><p><a href="pub-support/AndyDePue.html">Andy DePue</a> and his <a href="pub-support/AndyDePue2.html">follow up</a> <!-- -->
<li><p><a href="pub-support/JoeLoda.html">Joe Loda</a> <!-- -->
<li><p><a href="pub-support/DavidMaharaj.html">David Maharaj</a> <!-- -->
<li><p><a href="pub-support/FrankBaxter.html">Frank Baxter</a> <!-- -->
<li><p><a href="pub-support/HenryLi.html">Henry Li</a> <!-- -->
<li><p><a href="pub-support/RichardWilliams.html">Richard Williams </a> <!-- -->
<li><p><a href="pub-support/JasonHeirtzler.html">Jason Heirtzler</a> <!-- -->
<li><p><a href="pub-support/ScottMiller.html">Scott Miller</a> <!-- -->
<li><p><a href="pub-support/ChandraPatni.html">Chandra Patni</a> <!-- -->
<li><p><a href="pub-support/DanielHoppe.html">Daniel Hoppe </a> <!-- -->
<li><p><a href="pub-support/SebastienGuimont.html">Sebastien Guimont</a> <!-- -->
<li><p><a href="pub-support/ThomasQuas.html">Thomas Quas</a> <!-- -->
<li><p><a href="pub-support/JeffTurner.html">Jeff Turner</a>
<li><p><a href="pub-support/JohnMunsch.html">John Munsch</a> <!-- -->
<li><p><a href="pub-support/DelEdwards.html">Del Edwards</a> <!-- -->
<li><p><a href="pub-support/Piper.html">Piper</a> <!-- -->
<li><p><a href="pub-support/TimColson.html">Tim Colson</a> <!-- -->
<li><p><a href="pub-support/HowardShip.html">Howard Ship</a> <!-- -->
<li><p><a href="pub-support/LewisGardner.html">Lewis Gardner</a> <!-- -->
<li><p><a href="pub-support/DanielSavarese.html">Daniel F. Savarese</a> <!-- -->
<li><p><a href="pub-support/PayamMirrashidi.html">Payam Mirrashidi</a> <!-- -->
<li><p><a href="pub-support/BruceDeen.html">Bruce W. Deen</a> <!-- -->
<li><p><a href="pub-support/EmilyBache.html">Emily Bache</a> and her <a href="pub-support/EmilyBache2.html">follow up</a> <!-- -->
<li><p><a href="pub-support/JulienDubois.html">Julien Dubois</a> <!-- -->
<li><p><a href="pub-support/AlefArendsen.html">Alef Arendsen</a> <!-- -->
<li><p><a href="pub-support/SorenHilmer.html">Søren Hilmer</a> <!-- -->
<li><p><a href="pub-support/MaheshBhat.html">Mahesh Bhat</a> <!-- -->
<li><p><a href="pub-support/JeffLinwood.html">Jeff Linwood</a>
<li><p><a href="pub-support/PeterMeulmeester.html">Peter Meulmeester</a> <!-- -->
<li><p><a href="pub-support/MichaelDuffy.html">Michael Duffy</a> <!-- -->
<li><p><a href="pub-support/BillGriffith.html">Bill Griffith</a>
<li><p><a href="pub-support/DanielBram.html">Daniel Bram</a> <!-- -->
<li><p><a href="pub-support/RichardDallaway.html">Richard Dallaway</a> <!-- -->
<li><p><a href="pub-support/ChrisMein.html">Chris Mein</a> <!-- -->
<li><p><a href="pub-support/BenjaminRussellStocum.html">Benjamin Russell Stocum</a> <!-- -->
<li><p><a href="pub-support/GuyNirpaz.html">Guy Nirpaz</a> <!-- -->
<li><p><a href="pub-support/GrayJones.html">Gray Jones</a> <!-- -->
<li><p><a href="pub-support/CarlosPerez.html">Carlos Perez</a> <!-- -->
<li><p><a href="pub-support/PaulMichaelReilly.html">Paul Michael Reilly</a> <!-- -->
<li><p><a href="pub-support/MarcusAhnve.html">Marcus Ahnve</a> <!-- -->
<li><p><a href="pub-support/DavidDuddleston.html">David Duddleston</a> <!-- -->
<li><p><a href="pub-support/BrianPaulsen.html">Brian Paulsen</a> <!-- -->
<li><p><a href="pub-support/AlexFernandez.html">Alex Fern�ndez</a> <!-- -->
<li><p><a href="pub-support/DanielStephan.html">Daniel Stephan</a> <!-- -->
<li><p><a href="pub-support/AlexanderEvsukov.html">Alexander Evsukov</a> <!-- -->
<li><p><a href="pub-support/StevenSagaert.html">Steven Sagaert</a> <!-- -->
<li><p><a href="pub-support/DougErickson.html">Doug Erickson</a> <!-- -->
<li><p><a href="pub-support/ScottGilpin.html">Scott Gilpin </a> <!-- -->
<li><p><a href="pub-support/NateSammons.html">Nate Sammons</a> author of <a href="http://protomatter.sourceforge.net">Protomatter Syslog</a> <!-- -->
<li><p><a href="pub-support/StephanSchmidt.html">Stephan J. Schmidt</a> <!-- -->
<li><p><a href="pub-support/JochenBedersdorfer.html">Jochen Bedersdorfer</a> <!-- -->
<li><p><a href="pub-support/BalajiKithiganahalli.html">Balaji Kithiganahalli</a> and his <a href="pub-support/BalajiKithiganahalli2.html">follow up</a> <!-- -->
<li><p><a href="pub-support/ChrisYearsley.html">Chris Yearsley</a>
<li><p><a href="pub-support/ScottFleming.html">Scott Fleming</a> <!-- -->
<li><p><a href="pub-support/PaulCraven.html">Paul Craven</a> <!-- -->
<li><p><a href="pub-support/BruceKroeze.html">Bruce Kroeze</a> <!-- -->
<li><p><a href="pub-support/AndrewHarris.html">Andrew Harris</a> <!-- -->
<li><p><a href="pub-support/BernshtamPavel.html">Bernshtam Pavel</a> <!-- -->
<li><p><a href="pub-support/TomJanofsky.html">Tom Janofsky</a>
<li><p><a href="pub-support/StephenAshcroft.html">Stephen Ashcroft</a> <!-- -->
<li><p><a href="pub-support/BradleySchatz.html">Bradley Schatz</a> <!-- -->
<li><p><a href="pub-support/ErikBergersjo.html">Erik Bergersjö</a> <!-- -->
<li><p><a href="pub-support/KevinHuber.html">Kevin Huber</a> <!-- -->
<li><p><a href="pub-support/LeeTHall.html">Lee T Hall</a> <!-- -->
<li><p><a href="pub-support/JoelSchneider.html">Joel Schneider</a> <!-- -->
<li><p><a href="pub-support/IvanRosero.html">Ivan Rosero</a> <!-- -->
<li><p><a href="pub-support/ArndtSchoenewald.html">Arndt Schoenewald</a> <!-- -->
<li><p><a href="pub-support/ScottEllsworth.html">Scott Ellsworth</a> <!-- -->
<li><p><a href="pub-support/BrettMorgan.html">Brett Morgan </a> <!-- -->
<li><p><a href="pub-support/HorstScheruga.html">Horst Scheruga</a> <!-- -->
<li><p><a href="pub-support/AxelBoness.html">Axel Boness</a> <!-- -->
<li><p><a href="pub-support/EdHowland.html">Ed Howland</a> <!-- -->
<li><p><a href="pub-support/FredericSoulier.html">Frederic Soulier</a> <!-- -->
<li><p><a href="pub-support/NathanQuinlan.html">Nathan Quinlan</a> <!-- -->
<li><p><a href="pub-support/LaurentCornelis.html">Laurent Cornelis</a> <!-- -->
<li><p><a href="pub-support/RomainGuy.html">Romain Guy</a> <!-- -->
<li><p><a href="pub-support/OliverBurn.html">Oliver Burn</a> <!-- -->
<li><p><a href="pub-support/JonathanKeatley.html">Jonathan C. Keatley</a> <!-- -->
<li><p><a href="pub-support/YannickMenager.html">Yannick Menager</a> <!-- -->
<li><p><a href="pub-support/JeromeLacoste.html">Jérôme Lacoste</a> <!-- -->
<li><p><a href="pub-support/FabienModoux.html">Fabien Modoux</a> <!-- -->
<li><p><a href="pub-support/YuriyYatsyk.html">Yuriy Yatsyk</a> <!-- -->
<li><p><a href="pub-support/AndreCusson.html">Andre Cusson</a> <!-- -->
<li><p><a href="pub-support/RahulBhargava.html">Rahul Bhargava</a>
<li><p><a href="pub-support/WieserDaniel.html">Wieser Daniel</a> <!-- -->
<li><p><a href="pub-support/FrancescoMondora.html">Francesco Mondora</a> <!-- -->
<li><p><a href="pub-support/PaulAustin.html">Paul Austin</a> <!-- -->
<li><p><a href="pub-support/MichaelWeisser.html">Michael Weisser</a> <!-- -->
<li><p><a href="pub-support/MalcolmSparks.html">Malcolm Sparks</a> <!-- -->
<li><p><a href="pub-support/ThomasBohmbach.html">Thomas Bohmbach</a> <!-- -->
<li><p><a href="pub-support/AhmedSako.html">Ahmed Sako</a> <!-- -->
<li><p><a href="pub-support/HaraldPehl.html">Harald Pehl</a> <!-- -->
<li><p><a href="pub-support/AndreAnneck.html">Andre Anneck</a> <!-- -->
<li><p><a href="pub-support/NisolFabien.html">Nisol Fabien</a> <!-- -->
<li><p><a href="pub-support/PaulBook.html">Paul Book</a> <!-- -->
<li><p><a href="pub-support/AlexisAgahi.html">Alexis Agahi</a>
<!-- <li><p><a href="pub-support/PaulFurbacher.html">Paul Furbacher</a> -->
<li><p><a href="pub-support/SanfordRedlich.html">Sanford Redlich</a> <!-- -->
<li><p><a href="pub-support/MattSponer.html">Matt Sponer</a> <!-- -->
<li><p><a href="pub-support/DanielSeltzer.html">Daniel Seltzer</a> <!-- -->
<li><p><a href="pub-support/FlorinManolache.html">Florin Manolache</a> <!-- -->
<li><p><a href="pub-support/GeertPoels.html">Geert Poels</a> <!-- -->
<li><p><a href="pub-support/LeifHanack.html">Leif Hanack</a>
<li><p><a href="pub-support/AdamMenkes.html">Adam L. Menkes</a> <!-- -->
<li><p><a href="pub-support/Jean-MarcTupin.html">Jean-Marc Tupin</a> <!-- -->
<li><p><a href="pub-support/TonyCulshaw.html">Tony Culshaw</a> <!-- -->
<li><p><a href="pub-support/BartoszDudzinski.html">Bartosz Dudzinski</a>
<li><p><a href="pub-support/SabyMaxime.html">Saby Maxime</a>
<li><p><a href="pub-support/MeirFaraj.html">Meir Faraj</a>
<li><p><a href="pub-support/RobWalker.html">Rob Walker</a> <!-- -->
<li><p><a href="pub-support/LorrinNelson.html">Lorrin Nelson</a> <!-- -->
<li><p><a href="pub-support/ChristopherCooper.html">Christopher J. Cooper</a> <!-- -->
<li><p><a href="pub-support/LarsGregori.html">Lars Gregori</a> <!-- -->
<li><p><a href="pub-support/VieridelBianco.html">Vieri del Bianco</a> <!-- -->
<li><p><a href="pub-support/PatrickOHara.html">Patrick O'Hara</a> <!-- -->
<li><p><a href="pub-support/RobertQuinn.html">Robert Quinn</a>
<li><p><a href="pub-support/HenrikKlagges.html">Henrik Klagges</a> <!-- -->
<li><p><a href="pub-support/PeterMiller.html">Peter Miller</a> <!-- -->
<li><p><a href="pub-support/TimothyFalconer.html">Timothy Falconer</a> <!-- -->
<li><p><a href="pub-support/DavidLi.html">David Li</a> <!-- -->
<li><p><a href="pub-support/RossCormier.html">Ross Cormier</a> <!-- -->
<li><p><a href="pub-support/ByungJinChun.html">Byung Jin Chun</a> <!-- -->
<li><p><a href="pub-support/HughTran.html">Hugh Tran</a>
<li><p><a href="pub-support/MustaqAli.html">Mustaq Ali</a>
<li><p><a href="pub-support/MarkWomack.html">Mark Womack</a> <!-- -->
<li><p><a href="pub-support/SilviaTsai.html">Silvia Tsai</a> <!-- -->
<li><p><a href="pub-support/YingZChen.html">Ying Z Chen</a>
<li><p><a href="pub-support/ChrisGunn.html">Chris Gunn</a> <!-- -->
<li><p><a href="pub-support/JeremyMeyer.html">Jeremy Meyer</a> <!-- -->
<li><p><a href="pub-support/EricPabst.html">Eric Pabst</a> <!-- -->
<li><p><a href="pub-support/MarcDARCHE.html">Marc-Aur�le DARCHE</a> <!-- -->
<li><p><a href="pub-support/HaukePlambeck.html">Hauke Plambeck</a> <!-- -->
<li><p><a href="pub-support/KenJarrad.html">Ken Jarrad</a>
<li><p><a href="pub-support/ErikBergersjo.html">ErikBergersjö</a>
<li><p><a href="pub-support/CamilleTroillard.html">Camille Troillard</a> <!-- -->
<li><p><a href="pub-support/MarcelHeemskerk.html">Marcel Heemskerk</a> <!-- -->
<li><p><a href="pub-support/DanRollo.html">Dan Rollo</a> <!-- -->
<li><p><a href="pub-support/JeffreyMadynski.html">Jeffrey Madynski</a> <!-- -->
<li><p><a href="pub-support/EigilHysvaer.html">Eigil Hysvaer</a> <!-- -->
<li><p><a href="pub-support/Msew.html">Msew</a> <!-- -->
<li><p><a href="pub-support/MiguelLaiz.html">Miguel Laiz</a> <!-- -->
<li><p><a href="pub-support/ColinSampaleanu.html">Colin Sampaleanu</a> <!-- -->
<li><p><a href="pub-support/RobGiardina.html">Rob Giardina</a> <!-- -->
<li><p><a href="pub-support/VeerappanSaravanan.html">Veerappan Saravanan</a> <!-- -->
<li><p><a href="pub-support/NathanBrown.html">Nathan Brown</a> <!-- -->
<li><p><a href="pub-support/LarryKim.html">Larry Kim</a> <!-- -->
<li><p><a href="pub-support/SimonEvans.html">Simon Evans</a> <!-- -->
<li><p><a href="pub-support/CharlesStanton.html">Charles W. Stanton</a> <!-- -->
<li><p><a href="pub-support/WillSargent.html">Will Sargent</a> <!-- -->
<li><p><a href="pub-support/AndrewLovell.html">Andrew Lovell</a> <!-- -->
<li><p><a href="pub-support/RickRoss.html">Rick Ross</a> <!-- -->
<li><p><a href="pub-support/ChristianGustafson.html">Christian Gustafson</a> <!-- -->
<li><p><a href="pub-support/DougOlender.html">Doug Olender</a> <!-- -->
<li><p><a href="pub-support/ColinGibson.html">Colin Gibson</a> <!-- -->
<li><p><a href="pub-support/BearBibeault.html">Bear Bibeault</a> <!-- -->
<li><p><a href="pub-support/RobertChartier.html">Robert Chartier</a> <!-- -->
<li><p><a href="pub-support/JeroenHabets.html">Jeroen Habets</a> <!-- -->
<li><p><a href="pub-support/MarkSchenk.html">Mark Schenk</a> <!-- -->
<li><p><a href="pub-support/JohanS�rlin.html">Johan S�rlin</a> <!-- -->
<li><p><a href="pub-support/MichaelWaddell.html">Michael Waddell</a> <!-- -->
<li><p><a href="pub-support/neth6.html">neth6</a> <!-- -->
<li><p><a href="pub-support/antuan.html">Antuan</a>
<li><p><a href="pub-support/PaulSorenson.html">Paul Sorenson</a> <!-- -->
<li><p><a href="pub-support/OliverKamps.html">Oliver Kamps</a> <!-- -->
<li><p><a href="pub-support/JohnAdams.html">John Adams</a> <!-- -->
<li><p><a href="pub-support/CarsonGross.html">Carson Gross</a> <!-- -->
<li><p><a href="pub-support/AndreVanDelft.html">Andre Van Delft</a> <!-- -->
<li><p><a href="pub-support/JasonHenriksen.html">Jason Henriksen</a>
<li><p><a href="pub-support/AlexanderStaubo.html">Alexander Staubo</a> <!-- -->
<li><p><a href="pub-support/StephanieBlair.html">Stephanie Blair</a> <!-- -->
<li><p><a href="pub-support/SwamiIyer.html">Swami Iyer</a> <!-- -->
<li><p><a href="pub-support/UmaMaheswaran.html">Uma Maheswaran</a>
<li><p><a href="pub-support/SandipGahlot.html">Sandip Gahlot</a> <!-- -->
<li><p><a href="pub-support/BrianBush.html">Brian Bush</a> <!-- -->
<li><p><a href="pub-support/ShawnStephens.html">Shawn Stephens</a> <!-- -->
<li><p><a href="pub-support/AaronKnauf.html">Aaron Knauf</a> <!-- -->
<li><p><a href="pub-support/DamienGlancy.html">Damien Glancy</a> <!-- -->
<li><p><a href="pub-support/RogerThomas.html">Roger Thomas</a> <!-- -->
<li><p><a href="pub-support/SohailAhmed.html">Sohail Ahmed</a> <!-- -->
<li><p><a href="pub-support/AndrewBaptist.html">Andrew Baptist</a> <!-- -->
<li><p><a href="pub-support/MichaelWeissenbacher.html">Michael Weissenbacher</a>
<li><p><a href="pub-support/RobertPrince.html">Robert Prince</a> <!-- -->
<li><p><a href="pub-support/SarathChandra.html">Sarath Chandra</a>
<li><p><a href="pub-support/NickXidis.html">Nick Xidis</a>
<li><p><a href="pub-support/GeraldNazareth.html">Gerald Nazareth</a>
<li><p><a href="pub-support/JohnCocula.html">John W. Cocula</a> <!-- -->
<li><p><a href="pub-support/KanedaK.html">Kaneda K</a>
<li><p><a href="pub-support/GordonReynolds.html">GordonReynolds</a>
<li><p><a href="pub-support/NikoSchwarz.html">Niko Schwarz</a>
<li><p><a href="pub-support/AnthonyChater.html">Anthony Chater</a>
<li><p><a href="pub-support/RyanKrueger.html">Ryan Krueger</a> <!-- -->
<li><p><a href="pub-support/LucPeerdeman.html">Luc Peerdeman</a> <!-- -->
<li><p><a href="pub-support/CasperNielsen.html">Casper Nielsen</a>
<li><p><a href="pub-support/PrakashSridharan.html">Prakash Sridharan</a>
<li><p><a href="pub-support/MichaelChermside.html">Michael Chermside</a>
<li><p><a href="pub-support/EdoardoComar.html">Edoardo Comar</a>
<li><p><a href="pub-support/LeonardReinhart.html">Leonard Reinhart </a>
<li><p><a href="pub-support/JamesMaggs.html">James Maggs</a> <!-- -->
<li><p><a href="pub-support/AlexRojkov.html">Alex Rojkov</a>
<li><p><a href="pub-support/JesseWilson.html">Jesse Wilson</a> <!-- -->
<li><p><a href="pub-support/ChristopheThiebaud.html">Christophe Thiebaud</a>
<li><p><a href="pub-support/DaveBoden.html">Dave Boden</a>
<li><p><a href="pub-support/CarloMarchiori.html">Carlo Marchiori</a>
<li><p><a href="pub-support/DavidAvraamides.html">David Avraamides</a> <!-- --><li><p><a href="pub-support/BorisDebic.html">Boris Debic</a> <!-- -->
<li><p><a href="pub-support/DavePhillips.html">Dave Phillips</a>
<li><p><a href="pub-support/TedRice.html">Ted Rice</a> <!-- -->
<!--
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
<li><p><a href="pub-support/.html"></a>
-->
</UL>
<p>Most of the e-mail notes are reproduced with permission. However,
do not hesitate to contact <a href="ceki@qos.ch">ceki@qos.ch</a> in case
you are uncomfortable seeing your name or the contents of your request
reproduced publicly.
</body> </HTML>