ICU Code Contributions

The overwhelming majority (≅99.7%) of all code has been contributed by IBM employees, or by people under contract to IBM. The following lists the contributions from non-IBMers. Except for some minor contributions, these are all covered by Joint Copyright Assignment letters between IBM and the contributors. Please see the User Guide Contributions chapter for the contribution process and associated forms.

Contributor Description
Apple Computer Numeric Collation: Collating sequences of digits intermixed with text in numeric order. Implemented for ICU 2.8 according to a design document authored by IBM. Joint Copyright Assignment signed; the signed hardcopy is on file. (ported to ICU4J by ICU team)
Apple Computer Contributions to ICU4C 3.2: Locale-based loading of break iterator data; option and implementation for adding case mappings to a given UnicodeSet; fixes and improvements for time zone display names, exemplar characters from no-data locales, and miscellaneous. Joint Copyright Assignment signed; the signed hardcopy is on file.
Apple Computer Contributions to ICU4C 3.4: Fix functions for display name lookups (uloc_getDisplayName() & ucurr_getName()) to properly set default/fallback warnings, with tests. Joint Copyright Assignment signed; the signed hardcopy is on file.
Open Forum of Cambodia, represented by Javier Solá (javier at khmeros dot Info) (code co-author: Jens Herden) Contribution to ICU4C 3.2 layout engine: Complex text layout for the Khmer script. Joint Copyright Assignment signed; the signed hardcopy is on file.
Software Ventures, Inc., represented by Scott Duchin (Scott at Duchin dot com) Not yet incorporated into any ICU release: On 2004-dec-09, Scott Duchin contributed code for holiday date computations ("definition of world wide holidays and their associations with world wide currencies used for determining trading days at financial institutions") with the intent to incorporate into ICU. Joint Copyright Assignment signed; the signed hardcopy is on file.
Ge'ez Frontier Foundation, represented by Daniel Yacob (foss at geez dot org) Contribution to ICU4J 3.4: Daniel Yacob contributed Java code for Coptic and Ethiopic calendars and related test code. Joint Copyright Assignment signed; the signed hardcopy is on file. Signed 2005-mar-12.
Language Analysis Systems, Inc., represented by Richard T. Gillam (rgillam at las-inc dot com) and Leonard A. Shaefer (las at las-inc dot com) Contribution to ICU 3.4 (C++ & Java) Rule-Based Transliterator rule syntax & parser: Allow ::ID rules to occur in the middle of a rule set, which automatically builds a compound Transliterator. Joint Copyright Assignment signed; the signed hardcopy is on file.
PalmSource, Inc., represented by Vivek Magotra (vivek dot magotra at palmsource dot com); contribution by Ken Krugler (ken at transpac dot com) under PalmSource contract Contribution to ICU4C 3.4: ppalmos.h - Platform-dependent typedefs and defines to port ICU to Palm OS. Joint Copyright Assignment signed; the signed hardcopy is on file.
Department of Information Technology (DIT) - Royal Government of Bhutan, represented by Pema Geyleg (pema_geyleg at druknet dot bt) Contribution to ICU4C 3.6 layout engine: Complex text layout for the Tibetan script. Joint Copyright Assignment signed; the signed hardcopy is on file.
Adobe Systems Incorporated, represented by Niti Hantaweepant (nhantawe at adobe dotcom) Contribution to ICU4J and ICU4JNI 3.6: Port of ICU4C character conversion code to Java. Joint Copyright Assignment signed; the signed hardcopy is on file.
Yahoo! Inc., represented by Badi Kumar Sudhakaran (badi at yahoo-inc dot com) and Tex Texin (tex at yahoo-inc dot com) Contribution to ICU4C 3.6: Port of ICU4J charset detection code to C/C++. Joint Copyright Assignment signed; the signed hardcopy is on file.
Dominic Ludlam
(dom at recoil dot org)
Revised existing code for parsing ICU resource bundle files and creating a linked list of the parsed resources. (1,500 loc). Joint Copyright Assignment signed; the signed hardcopy is on file.
Jonas Utterström
(jonas dot utterstrom at vittran dot norrnod dot se)
uconv. Sample tool built on top of ICU character conversion that offers simple conversion and listing available encodings. (290 loc originally, since then rewritten by ICU team members). Joint Copyright Assignment signed; the signed hardcopy is on file.
Yves Arrouye
(yves at arrouye dot net)
Many makefile porting changes. Created some installation scripts. Converter alias table changes, and some converter alias binary file format changes that were eventually replaced. (Also maintained uconv.) (1,450 loc) Joint Copyright Assignment signed; the signed hardcopy is on file.
Carl Brown
(cbrown at xnetinc dot com)
Locale processing and timezone changes. Primarily code for returning the default timezone in use on Windows. (300 loc) Joint Copyright Assignment signed; the signed hardcopy is on file.
Robert Buck
(rbuck at mathworks dot com)
The original MSVC.NET project files, and some updates to the files that IBM had generated. He also contributed some makefile fixes, and some compiler warning fixes. (≅50 loc) Joint Copyright Assignment signed; the signed hardcopy is on file.
Sean Hunter
(sean at uncarved dot co dot uk)
unalignedtest: Checking if the library and tools code does any unaligned access (traps) at runtime on 64 bit machines. This test is useful on Alpha architecture machines running Linux for making the code 64 bit clean. (100 loc)

The unalignedtest is a separate test. It is not part of the ICU libraries or of any of the ICU tools. Its source file contains an X license with Sean Hunter as the copyright holder. This code was removed in ICU 3.6.

Michael Lecuyer
(mjl at theorem dot com)
Computing Cyclic Redundancy. Check value for binary data (wrtxml.c). This implementation is in public domain; most textbooks contain description and implementation of CRC-32 algorithm. (33 loc) A copy of this code is also currently available at http://www.axlradius.com/freestuff/CRC32.java
Others Various people have suggested small fixes to existing functions or build scripts in their bug reports, including porting fixes for MP-RAS, QNX, and other platforms. These are usually a few lines of code scattered within a file. (200 loc)

Contributions are to ICU4C for the most part, except for those to ICU4J as noted above. Many of the contributions to one ICU deliverable (ICU4C/ICU4J) were later ported to the other.

The lines of code are approximate: in many cases the code has been rewritten since the contribution, so it is sometimes difficult to determine the origin of any particular line.

Lines of Code

Lines of code counted on this page include all source code files, including samples, tools, tests, etc. and count all lines regardless of the number of statements, comments, or empty lines. The numbers do not include data files, such as locale data or conversion data, nor make files or similar.

Here are the totals for the numbers of lines of code in ICU 3.4.

ICU Deliverable Lines of Code Types of Files
ICU4C 532,574 .c, .cpp, .h
ICU4J 309,313 .java
ICU4JNI 16,517 .java, .c, .h