Task |
Also for Milestone |
Applicable to |
Due date |
Instruction |
Developer
| Date | Status
| Comments
|
Make sure the timezone (Olson) data is up to date
|
M |
C & J
|
FF, CF, GA
|
Olson timezone data should be regularly updated in the trunk.
If the data is out of date, follow the instruction described in the
readme file.
Once the timezone resource file is generated by the process above, the file
should be checked into
zoneinfo.txt in the trunk.
|
yoshito | 2010-1-19 | done | 2010a |
Update API status comments
|
|
C & J
|
FF
|
ICU4C:
- Update the API documentation in all header files (.h
file) to have correct @draft/@stable/@deprecated labels.
- Update docmain.h
- ./configure
- make docs
- Follow instructions in
readme.txt to generate API status change report.
- Make sure that ICU headers work with U_HIDE_DRAFT_API and other such switches.
- Verify that U_DRAFT and U_STABLE match the @draft and @stable tags (same for other such pairs declaration macro vs. tag).
ICU4J:
Update the API documentation to have correct
@draft/@stable/@deprecated labels. On ICU4J, run
com.ibm.icu.dev.tool.docs.CheckTags (see file for
instructions). This requires a Sun jdk with javadoc
available. The tool will need to change to reflect the
release number to search for.
To check the API status changes, run the ant target
"apireport" to gerate the report since the previous official
release.
Make sure @provisional is specified along with @draft,
and @deprecated with @internal. For example,
* @draft ICU 4.0 * @provisional This API might change or be removed in a future release.
* @internal * @deprecated This API is ICU internal only.
|
steven yoshito | J: 2010-01-23
| J: done
| |
Compare ICU4J APIs with JDK
|
|
J
|
FF-4w
|
Run the ICU4J versus JDK API comparison tool against
the target JDK (anything that will come out before our next
release, basically) with the tool
com.ibm.icu.dev.tool.docs.ICUJDKCompare and make sure ICU4J
adequately covers the JDK API for the classes we replicate.
|
yoshito | 2010-1-25 | done | no diffs generated by the tool.
|
Sync ICU with CLDR |
M |
C & J |
|
Update ICU data from CLDR.
Tag CLDR with the level of data and tools so that (a) the tagged CLDR data matches the data in the ICU release or milestone, and (b) the tagged CLDR tools build properly with the ICU release or milestone. See for example http://unicode.org/cldr/trac/browser/tags/icu432milestone |
N/A | - | - | |
Update Unicode Data
|
|
C & J
|
|
See instructions in (ICU4C http://source.icu-project.org/repos/icu/icu/trunk/source/data/unidata/changes.txt and nearby files, also check the change log for this and related files such as UnicodeData.txt )
|
N/A | - | - | |
Update script code enums
|
|
C & J
|
FF-1w
|
Update script code enums with new codes from ISO 15924, propose them as public API (new @draft).
For new codes see http://www.unicode.org/iso15924/codechanges.html (check for recent changes with the code highlighted in the left column and "Add" in the right column) and http://www.iana.org/assignments/language-subtag-registry (Search for "Type: script" and look for recent "Added:" dates.) Discuss what to do if these two sources are out of sync.
(usually Markus)
|
steven | | | |
Update version number
|
M |
C & J
|
FF
|
ICU4C:
The instructions for updating the version number are
stored in
icu/source/common/unicode/uverdefs.h. Read and follow
instructions in this file.
ICU4J:
- common.properties
- com.ibm.icu.util.VersionInfo.
- build.properties. (For API change report)
ICU Data:
icu/source/data/misc/icuver.txt needs to be updated with the correct version number for ICU and its data.
|
michael yoshito
| 2010-1-20 (confirmed)
| done | ICU4C ticket#7304 ICU4J ticket#7305
|
Regenerate configure
|
M |
C
|
FF-2w
|
Don't forget to re-run and check in the configure file
along with configure.in. This is normally supposed to be done
when configure.in or aclocal.m4 are modified.
|
michael | | done | |
Send public beta/DCUT announcement
|
|
|
FF, CF
|
Send a beta/DCUT announcement to the mailing lists icu-design,
icu-support and icu-announce (the announce lists only with bcc).
For ICU 3.6, this is the text of the public beta
announcement:
Subject: ICU 3.6 beta now available
Dear friends and users of ICU,
We have a "beta" of the ICU release 3.6 available on
our public web sites,
http://icu-project.org/download/3.6.html and
http://icu-project.org/download/
If you plan or consider to use ICU 3.6, then please
download and test it at your earliest convenience.
Please help us ensure the quality of this release.
Please submit bugs, porting changes and fixes(!) by
Wednesday, July 31!
Please use our bug reporting tool and support mailing
lists, see http://icu-project.org/
Major features of this reference release include:
- Unicode 5.0
- CLDR 1.4
- and so on...
Please see the release notes on the download pages and
the readme for a complete list of features and
enhancements.
Sincerely,
markus
|
steven yoshito | | | |
Make sure data file versions (for data contents) are properly assigned
|
|
C (data resides in the ICU4C repository)
|
CF-2w
|
If any of the data files in
/icu/source/data/ directory has changed MANUALLY,
upgrade the version number accordingly as well. If the contents
of a resource bundle has changed, then increase the version
number (at least the minor version field). The CLDR generated
data should have the correct number.
Note from Markus (20090514, ICU 4.2 timeframe): Most data files automatically get their version numbers set by the LDML2ICUConverter, from CLDR version numbers. It is not clear what, if anything, needs to be done for this task.
|
markus | | | |
Make sure data file format versions are updated
|
M |
C (generator and runtime code) & J (runtime code)
|
CF-2w |
If the format of a binary data file has changed,
upgrade the format version in the UDataInfo header for that
file. Better: Change the format version immediately when the
format is changed. The change must be made in both the
producer/generator and consumer/runtime code.
It is desirable to maintain backward compatibility, but sometimes impractical. Update the major version number for incompatible changes. Runtime code should permit higher minor version numbers for supported major versions.
We rarely use the third and fourth version number fields, except for UTrie (version 1) parameters that don't really change.
|
markus | | | |
Scan for Copyright notices
|
|
C & J
|
CF-1w
|
Check source and data files, especially newly contributed
ones, to make sure the proper copyright notice is in
place. For example,
Copyright (c) 2001-2008, International Business Machines Corporation and others. All rights reserved.
Scan the source code to make sure that every file that was touched recently has the current year in the copyright statement. See the ICU Copyright Scanner page and follow the link to the scripts and the readme.
Scan the source code to include third-party
company names in copyright notices if necessary.
Scan for text files that do not contain the word "Copyright": find_textfiles -nosvn -novc | xargs grep -i -L Copyright (See the find_textfiles Perl script attached to this page.)
Make sure that you use (c) , not ©, because
non-ASCII characters in source code can break the build!
(See ICU's check-in policy
for more details.)
|
jason | | | |
Update license files
|
|
C & J
|
CF-1w
|
Check ICU, Unicode and other license terms. Make sure these files are up to date.
The Unicode data and software license term is updated anually (usually year number only).
|
N/A | - | - | |
Check for non-ascii characters in source files
|
M |
C & J
|
CF-1w
|
Run the tool
com.ibm.icu.dev.tools.misc.NonAsciiFileDetector.
>java com.ibm.icu.dev.tools.misc.NonAsciiFileDetector <icu4c|icu4j source root path>
This tool will output the *.cpp, *.c, *.h and *.java files with non-ascii
characters in it.
|
michael | | done | |
Check text file line endings
|
M
|
C & J
|
|
Verify that all source and text files in the svn repository have plain LF line endings, and have the svn property svn:eol-style=native.
To do this on Linux, In an up-to-date svn working copy of icu,
cd trunk
source/tools/icu-svnprops-check.py # reports problems
source/tools/icu-svnprops-check.py --fix # fixes problems
The same python script from the icu4c tools will fix icu4j
cd icu4j/trunk
<path-to-icu4c>/source/tools/icu-svnprops-check.py
svn commit any changes made by the script. The commit is needed both for line ending changes and svn property changes. Copyright dates do not need to be changed for these.
|
michael | 2010-1-19 | done | ICU4C and ICU4J
|
Verify proper memory allocation functions
|
|
C
|
CF-2w
|
Verify the following for library code (common, i18n,
layout, ustdio). The requirement is for ICU's memory
management to be customizable by changing cmemory.h and
the common base class.
- No raw malloc/free/realloc but their uprv_
versions.
- All C++ classes must inherit the common base class
UObject or UMemory
- But not for mixin/interface classes (pure
virtual, no data members, no constructors) because
that would break the single-inheritance model.
- Also not for pure-static classes (used for name
scoping) declare but don't implement a private
default constructor to prevent instantiation.
- Simple struct-like C++ classes (and structs)
that do not have constructors, destructors, and
virtual methods, need not inherit the base class
but must then be allocated with uprv_malloc.
- All simple types (UChar, int32_t, pointers(!), ...)
must be allocated with uprv_malloc and released with
uprv_free.
- For Testing that this is the case, on Linux
- run the Perl script ICUMemCheck.pl. Follow the
instructions in the script. The script is in in the
ICU4C sources at
icu/tools/memcheck/ICUMemCheck.pl.
- For testing that this is the case, on Windows:
- Don't bother, as of Nov, 2004. Failures appear
in many dozens of files from the mixin class
destructors. Do the check on Linux. But, for
reference, here are the old instructions.
- Make sure that in uobject.h UObject::new
and delete are defined by default. Currently,
this means to grep to see that
U_OVERRIDE_CXX_ALLOCATION is defined
to 1 (in pwin32.h for Windows).
- Check the *.obj's for linkage to the global
(non-UObject::) operators new/delete; see
uobject.cpp for details.
- Global new must never be imported. Global
delete will be imported and used by
empty-virtual destructors in interface/mixin
classes. However, they are not called because
implementation classes always derive from
UMemory. No other functions must use global
delete.
- There are now (2002-dec-17) definitions in
utypes.h for global new/delete, with
inline implementations that will always crash.
These global new/delete operators are only
defined for code inside the ICU4C libraries
(but must be there for all of those). See
Jitterbug 2581.
- If a global new/delete is used somewhere,
then change the class inheritance and/or use
uprv_malloc/free until no global new/delete are
used in the libraries (and the tests still
pass...). See the User Guide Coding Guidelines
for details.
|
michael | | done | |
Run static code analysis tools (Purify, Boundary Checker, valgrind...)
|
M |
C
|
CF-2w
|
Make sure we fixed all the memory leak problems that
were discovered when running these tools.
- Build ICU with debug information. On Linux,
runConfigureICU --enable-debug --disable-release Linux
- Run all of the standard tests under valgrind. For intltest, for example
cd <where ever>/source/test/intltest
LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH valgrind ./intltest
You can grab the command line for running the tests from the output from "make check", and then just insert "valgrind" before the executable.
|
michael | | | |
Run ICU4J Locale Service Provider tests
|
M
|
J |
CF-2W
|
Make sure ICU4J LocaleServiceProvider test cases runs without any errors. See readme.html in <icu4j_root>/localespi
|
yoshito | 2010-1-20
| done
| Fixed the ant target problem by r27347
|
Run ICU4J Test cases with JDK TimeZone
|
|
J
|
CF-2W
|
Make sure ICU4J test cases do not produce any errors with JDK TimeZone option is enabled.
- Apply the latest tz update patch to the JRE.
- Run the ICU4J test cases using ant target "jdktzCheck"
|
jason | | | |
Verify the Eclipse ICU4J plug-in
|
|
J
|
CF-2w
|
- Make sure the Eclipse ICU4J plug-in binaries are successfully produced.
- Run the ICU4J plug-in test cases.
- Update license files, build version strings for the new release.
|
N/A | - | - | |
Try running tests without any ICU data
|
M |
C & J
|
CF-1w
|
ICU4C:
ICU data should be removed, so that tests cannot access
it. Both cintltst and intltest should be run with -w option
and they should not crash. Every crash should be
investigated and fixed.
ICU4J:
ICU4J has the test target for this, but does not work
as designed for now. For now, this task is not required for
ICU4J.
|
michael | | | |
Build and run testmap
|
|
C
|
CF-1w
|
Build and run source/test/testmap project.
|
markus | | | |
Check the code coverage numbers
|
|
C & J
|
FF+1w
|
Our goal is that all releases go out to the public with 100% API
test and at least 85% code coverage.
|
michael | | | http://www.icu-project.org/~mow/CodeCoverage/4.3.4
|
Complete code review
|
M |
C & J
|
CF
|
Nag all the reviewers to finish reviewing the code and
change the status of bugs.
|
| | | |
Create a release branch in SVN
|
|
C & J
|
CF-0.5w
|
You need a working snapshot of the ICU build first. To
do so, you need to check out the trunk and build
it on all the reference platforms as stated in the readme.html.
Once the branch is created, only changes necessary for the
target release are taken from the trunk.
|
N/A | - | - | |
Build API documentations and publish them to the ICU public site
|
M
|
C & J
|
FF, CF
|
ICU4C:
Build the API documentation pages for the new release.
Run Doxygen to create the javadoc files. Create
icu4c-X_X_X-docs.zip
ICU4J:
Build the API documentation pages for the new release.
"ant docsJar"
|
steven yoshito
| J: 2010-01-23
| J: done
| J: http://icu-project.org/apiref/icu4j434/
|
Test ICU4C headers
|
M |
C
|
CF-1w
|
Testing external dependencies in header files:
(on Unixes) Prerequisite: Configure with --prefix (../trunk/source/runConfigureICU Linux --prefix=/some/temp/folder) and do 'make install'. Then set the PATH so that the installed icu-config script can be found. (export PATH=/some/temp/folder/bin:$PATH)
Then go to the 'icu/source/test/hdrtst' directory and do
'make check'. This will attempt to compile against each
header file individually on C and C++, to make sure there
aren't any hidden include ordering problems. Output looks
like this, the zero indicates a successful test. If a C++
file fails to compile as a C file, add it to the
'cxxfiles.txt' located in the hdrtst directory. Run this
test with all the uconfig.h variations (see below).
unicode/bidi.h - 0 (0 means no error) unicode/chariter.h - 0 unicode/convert.h - 0
|
markus | | | |
Test uconfig.h variations |
M |
C |
CF-1w |
Test ICU completely, and run the header test (above) with:
- none of the 'UCONFIG_NO_XXX' switches turned on (i.e., the normal case)
- all of the 'UCONFIG_NO_XXX' switches turned on (set to 1)
- For each switch, test once with just that one switch on.
(See common/unicode/uconfig.h for more documentation.)
There is a script available which will automatically test ICU in this way on UNIXes, it lives in: tools/release/c/uconfigtest.sh. See docs at top of script for information. |
markus | | | |
Test C++ Namespace Use
|
M |
C |
CF-1w |
Verify that ICU builds without enabling the default use of the ICU namespace. To test on Linux,
./runConfigureICU Linux CXXFLAGS="-DU_USING_ICU_NAMESPACE=0"
make check
Any problems will show up as compilation errors. |
markus | | | |
Test U_CHARSET_IS_UTF8
|
M |
C |
CF-1w |
Verify that ICU builds with default charset hardcoded to UTF-8. To test on Linux,
./runConfigureICU Linux CPPFLAGS="-DU_CHARSET_IS_UTF8=1"
make check
Any problems will show up as compilation or test errors.
Rather than setting the CPPFLAGS,
you can also temporarily add #define U_CHARSET_IS_UTF8 1 in unicode/utypes.h
before it gets its default definition,
or modify the default definition there.
This works best on a machine that is set to use UTF-8 as its system charset, which is not possible on Windows. |
michael | | done | |
Test
ICU_USE_THREADS=0 |
|
C |
CF-1w |
Verify that ICU builds and tests with threading disabled. To test on Linux,
./runConfigureICU Linux --disable-threads
make check |
michael | | done | |
Update urename.h
|
M |
C
|
FF, CF
|
Update urename.h to catch all possible ICU4C library
exports (especially on non-Windows systems that tend to
ignore export qualifiers). See
icu/source/tools/genren/README.
Diff the new one with the previous one; there are
typically a few bad #defines in there.
|
steven | 2010-1-19 | | |
Update udraft.h, usystem.h, uintrnl.h, and
udeprctd.h
|
|
C
|
CF-2w
|
- make doc
- cd source/tools/gendraft ; make install-headers
- Double check the modified files in
<icu>/source/common/unicode folder and
commit.
|
steven | | | |
Verify XLIFF conversion
|
|
J (The tool resides in the ICU4J repository)
|
CF
|
Instructions for verifying the XLIFF conversion tools.
- Convert icu/source/test/testdata/ra.txt to
XLIFF
genrb -s icu/source/test/testdata -d icu/source/test/testdata/ -x -l en ra.txt
Verify that the ra.xlf produced is identical to the
one in CVS HEAD (except for generation date)
Convert icu/source/test/testdata/ra.xlf back to ICU format
java -cp icu4j/classes com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter -d . -t ra ra.xlf
Verify that the ra.txt produced is identical to the
one in CVS HEAD (except for generation date)
Go through the steps given in
http://icu.sourceforge.net/docs/papers/localize_with_XLIFF_and_ICU.pdf
|
N/A | - | - | |
Test sample and demo programs
|
|
C & J
|
FF-1w, CF
|
Build and run all of the sample and demo apps that are
included with ICU, on each of the reference platforms. A
list of them is in the
readme. Also see the build system.
Another worthy test: Test suites and demos from
the previous release should also compile and run
with the libraries of the current release, at least when
certain #defines are set (unless they test APIs that are
deprecated and have been removed since)!
|
C: jason J: yoshito
|
| J: done
| J: Found one problem in Transliterator demo - ticket#7362 was created.
|
Update the pool bundle |
|
C & J |
CF-1w |
The locale data resource bundles use a pool.res bundle for sharing most of their resource table key strings. We should update the pool bundle once per release, or when we get new data from CLDR, to capture the changing set of key strings.
- Build ICU4C
- Temporarily modify the data makefile: s/usePoolBundle/writePoolBundle/
- Rebuild the data
- Copy $icu4c_out/data/out/build/icudt.../pool.res to $icu4c_root/source/data/locales/pool.res
- Revert the data makefile change
- Rebuild the data (make sure it actually gets rebuilt, e.g., by first deleting all of the data/out files)
- Run ICU4C tests
- Rebuild the ICU4J data .jar files
|
markus | | | |
Test data portability
|
|
C
|
CF-1w
|
Test if the data portability (under common endianness
& charset family) is ok. On the ICU build server,
you would use the "Build from source .dat archive" option. When
it's not available, you would do the following:
- Build ICU4C on Win32.
- Copy the icu/source/data/out/icudt<data_version>l.dat file into icu/source/data/in
- Delete non-essential directories from icu/source/data.
- Package up a clean copy of ICU for a non-Windows machine, like Linux on x86.
- Build ICU on the non-Windows machine from the newly created package.
- Run all tests on that non-Windows machine.
|
michael | | done | |
Run the environment tests
|
|
C
|
CF-2w
|
Run
environmentTest.sh on a Linux machine
This test verifies that the ICU test suite will work
regardless of a user's default locale and timezone. This
test should be run on a fast machine with several CPU
cores. This will take a long time to run. Here are the
steps to run the test.
- cd tools/release/c/
- ./environmentTest.sh
- Wait a while for the tests to finish. The logs will
be written in each test directory. e.g.
icu/source/test/intltest/intltest-*.txt. A message will
be printed from each spawned test script when it
finishes.
- grep the logs for any test failures when the tests
are done.
|
michael | | | |
Upgrade LocaleExplorer and other demos/samples to the ICU project site
|
|
C & J
|
GA
|
Build the icuapps module following the README's.
Update code and/or docs as needed. "Reference" platforms
for icuapps are: RedHat Linux and win32. On Linux,
icuapps is built against the "make install "'ed ICU. So,
run ICU4C's configure with --prefix=/some/where
pointing to where ICU4C should be installed, and also
follow icuapps's README.
Install the new locale explorer and other demos/samples
onto the public demo hosting site.
|
N/A | - | - | |
Update the API Change Report
|
M |
C & J
|
CF+1w
|
For ICU4C:
- Update the API documentation in all header files (.h file) to have correct
@draft/@stable/@deprecated labels.
- Update docmain.h
- ./configure
- make docs
- Folow instructions in
tools/release/java/readme.txt.
For ICU4J:
Run the ICU4C API comparison tools (build.xml targets
gatherapi, apireport) to generate new api and report files
(build.xml strings will need to change). Check in the API
file. Rename the report file to
${root}/APIChangeReport.html and replace the existing one
and check it in. Make sure the readme.html file links to it
(no change should be required).
|
C: steven J: yoshito
| | | J: Updated for review - the latest one is based on r27355.
|
Update the Readme.html for GA
|
M |
C & J
|
GA-1w
|
If there are any last second changes. Make sure to
document especially items that affect software that is
currently compiled with the previous version of ICU. Update
build/installation instructions as necessary.
|
C: steven J: yoshito
| | | |
Create ICU download page
|
M |
|
GA-0.5w
|
An enhancement release simply needs to have a list of
what has been changed or added recently. A reference
release should have much more detailed descriptions,
especially of what API's have changed since the last
reference release and migration steps. |
steven michael yoshito
| | | |
Check the ICU public site for the new release
|
M |
|
GA
|
Make sure that, aside from download pages, homepages,
news items, feature lists and feature comparisons, etc. are
updated. Upload the new API references. Update the User
Guide.
|
| | | |
Announce the new ICU release
|
M |
|
GA
|
Post the update to the icu-announce list, the
icu-support list, the icu-design list.
Put a News item on the ICU project site. Both ICU4C and
ICU4J are announced in the same announcement.
|
N/A | - | - | |
Update the Trac release number list for
ICU4C and ICU4J.
|
M |
|
GA+1w
|
Update the ICU release number list by going
to "Admin>Versions" in Trac, and add the new ICU version. |
steven
| | | |
Update the reference for ICU in the external sites
|
|
|
GA+1w
|
For freshmeat.net
- http://www.freshmeat.net/
- Login under the correct account.
- I usually search for: icu unicode
- Click on the project returned
- Under the 'project' drop down, choose 'Add release'
- We have (thankfully) only one branch of development- choose Default
- Release info
- release focus: Choose the one which best
fits
- Version
- Changes: be VERY brief, and include links if
needed.
Please read the other ICU4C/ICU4J updates to get an
idea for how we are wording these. DO NOT use
bulleted lists. DO use short 'sentences'. Remember
they can go to the release list and/or bug DB for
the full scoop!
Put the URL to the 'release notes' (i.e.
http://oss.software.ibm.com/icu/download/(version)/
) in the changes list.
- tar/gz, zip: Put the FULL URLs to the actual
files, here
- Changelog: Leave BLANK. This is for a single
page of ALL release changes (Actually:
http://oss.software.ibm.com/icu/download/ fits this
fairly well.)
- License - leave at MIT/X
- mailing list: I set this to the main mailing
list page.
(http://oss.software.ibm.com/icu/archives/)
Click 'go on..'
- PREVIEW.
Very important- Check:
- SPELLING
- links!!!!! Make sure they go where we want
- accuracy - version number is OK?
Remember that this is an important PR face for
ICU4C and ICU4J.
- Submit!
That's it. Submissions take some time (<24 hrs)
to go on. I guess they check the accuracy as well- not
sure here. (Steven Loomis, 2001-06-14)
Other sites:
slashdot, newsforge, developerWorks
unicode zone, developerWorks
open-source zone, developerWorks
java zone (send email to dWnews <at>
us.ibm.com)
ICU
sourceforge News - login here, go to News, Admin, and
submit a news item as an administrator.
LanguageTech Net News (tm)
"LanguageTech Net News" features the latest news for
language technology and multilingual computing. It is
prepared from materials compiled and maintained by the
research editors at "MultiLingual Computing
& Technology" and the Language Technology
Research Center.
Press releases and submissions are always welcomed and
encouraged. Please send e-mail to news@multilingual.com,
faxes to 208-263-6310 and postal mail to MultiLingual
Computing, Inc., 319 North First Avenue, Sandpoint, ID
83864 USA, or call 208-263-8178.
To view archived issues of "LanguageTech Net News"
visit http://www.multilingual.com/.
To subscribe to "LanguageTech Net News" go to http://www.multilingual.com/multilingualpress/
or send an e-mail to news-l-subscribe@multilingual.com.
|
N/A | - | - | |
Post-release cleanup
|
M |
|
GA+2w
|
Cleanup the milestone in the ICU Trac. Move left over items
to future milestones. Close the milestone.
Look for TODO comments in the source code and file new
tickets as required.
|
N/A | - | - | |
Online information update
|
|
|
GA+4w
|
Collation and comparison charts need to be updated.
|
N/A | - | - | |