The version of Apache log4j used by SoundHelix.

[[ 🗃 ^aEp6o apache-log4j ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/aEp6o

SSH: git clone USERNAME@vervis.peers.community:aEp6o

Branches

Tags

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&uuml;lc&uuml;</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>
  &#60;filter class="org.apache.log4j.varia.StringMatchFilter">
    &#60;param name="StringToMatch" value="Microsoft" />
    &#60;param name="AcceptOnMatch" value="false" />
  &#60;/filter>

  &#60;filter class="org.apache.log4j.varia.StringMatchFilter">
    &#60;param name="StringToMatch" value="proprietary code" />
    &#60;param name="AcceptOnMatch" value="false" />
  &#60;/filter>

  &#60;filter class="org.apache.log4j.varia.PriorityMatchFilter">
    &#60;param name="PriorityToMatch" value="INFO" />
    &#60;param name="AcceptOnMatch" value="true" />
  &#60;/filter>

  &#60;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&oslash;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&oslash;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&ouml;</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&eacute;r&ocirc;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&ouml;</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>

[See repo JSON]