Here are people who have contributed to Jackson JSON process development:
(version numbers in brackets indicate release in which the problem was fixed)

Tatu Saloranta, tatu.saloranta@iki.fi: Author

Alain Penders:
  * Reported problem with JavaTypeMapper, where floating point numbers were
    accidentally converted to Booleans.
    [0.8]

Mike Eastey:
  * Reported problem with JavaTypeMapper had a bug which prevented custom
    mappers (as well as slower interface-based introspection) from working,
    provided path to specific underlying bugs.
    [0.8.2]

Augusto Callejas
  * Reported problem with JavaTypeMapper (and JsonTypeMapper), which
    caused read operation not to handle EOF appropriately but instead
    cause a NullPointerException.
    [0.9]

Maciej Pestka:
  * JavaTypeMapper did not implicitly flush generator after mapping
    objects: it should, and now will (note: JsonTypeMapper not directly
    affected, flushing still needed)
    [0.9]

Tudor Bosman:
  * Symbol table handling not thread-safe
    [0.9.3]

Michael Mangeng:
  * Suggested [JACKSON-1]: make JsonNode implement Iterable<JsonNode> to
    allow use of Java 5 foreach loop with container nodes.
    [0.9.3]

Johannes Link:
  * Reported [JACKSON-8]: Serialization of BigDecimal broken with JavaTypeMapper
    [0.9.3]

Stanislaw Osinski:
  * Reported [JACKSON-14], contributed code to resolve it and improve
    generics-handling significantly.
    [0.9.4]
 	 
Michael Descher:
  * Reported [JACKSON-18], ArrayIndexOutOfBounds on IntNode, due to
    off-by-one problem with comparisons used for caching common values.
    [0.9.4]

Mike Goodwin:
  * Suggested [JACKSON-9]: Add support for (non-standard) Json comments.
    [0.9.4]

Ray Racine:
  * Pointed out [JACKSON-25]: Problems with Maven pom for lgpl version
    [0.9.4-backport]

Scott Dixon:
  * Contributed unit test (TestComplexJavaType) for verifying functioning
    of object serialization
    [0.9.5]

Justin Friedl:
  * Requested [JACKSON-52]: ability to disable getter method auto-detection
    [0.9.9]
  * Reported [JACKSON-53] (and suggested way to fix it): problem serializing
    iBatis bean classes generated (or wrapped) by CGLib. Probably would also
    have caused problems with Hibernate and other frameworks.
    [0.9.8]
  * Reported [JACKSON-62]: NPE with JsonMappingException
    [0.9.9]

Scott Anderson:
  * Suggested [JACKSON-48]: Integrate ObjectMapper with JsonGenerator,
    JsonParser; add MappingJsonFactory.
    [0.9.9]

Kevin Grained:
  * Reported [JACKSON-58] (and suggested a fix): NPE with String[]
    serialization
    [0.9.9]

Ryan Heaton:
  * Helped with [JACKSON-67]: Json content type provider for JAX-RS
    [0.9.9]
