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]
  * Suggested [JACKSON-45]: adding convenience methods to simplify writing
    custom serializers
    [1.0.0]

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]
  * Requested [JACKSON-61]: Allow suppressing writing of bean properties
    with null values
    [0.9.9-3]
  * Reported [JACKSON-62]: NPE with JsonMappingException
    [0.9.9]

Scott Anderson:
  * Suggested [JACKSON-48]: Integrate ObjectMapper with JsonGenerator,
    JsonParser; add MappingJsonFactory.
    [0.9.9]
  * Requested [JACKSON-84]: Add JsonGenerator.writeRawValue method(s).
    [0.9.9-3]

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]
