diff --git a/README.chromium b/README.chromium
index 3582901..e389674 100644
--- a/README.chromium
+++ b/README.chromium
@@ -17,3 +17,311 @@
    - packaging
    - source/layout
    - source/layoutex
+
+2. Platform header files for Linux, FreeBSD, OpenBSD, Android, Mac OS X, and QNX:
+
+   - Apply platform.patch in patches directory. : It applies the upstream
+     patch to platform.h.in (see http://bugs.icu-project.org/trac/ticket/8248)
+     and change source/common/unicode/ptypes.h to refer to plinux.h and
+     pmac.h generated below.
+
+   - 'runConfigureICU Linux', 'runConfigureICU FreeBSD', and
+     'runConfigureICU MacOSX' are run to generate
+     source/common/unicode/platform.h.
+
+   - On OpenBSD, source/common/unicode/platform.h is being generated
+     by the icu4c port in the ports directory and not by runConfigureICU.
+     In case the file has to be updated you can do:
+     cd /home/ports/textproc/icu4c && make configure
+
+   - Rename it to 'plinux.h', 'pfreebsd.h', 'popenbsd.h' and 'pmac.h'
+
+   - Apply patches/pmach.h.patch on Mac to pmac.h
+
+   - On Android, the pandroid.h was generated by copying plinux.h to
+     pandroid.h and applying the patches/pandroid.h.patch.
+
+   - For QNX, the pqnx.h was generated by copying plinux.h to
+     pqnx.h and applying the patches/platform.qnx.patch.
+
+   - For NaCl (icu_nacl.gypi), the pnacl.h was generated by copying plinux.h to
+     pnacl.h and applying the patches/pnacl.h.patch.
+
+   - Apply the CL at https://codereview.chromium.org/15973007/ to plinux.h
+
+3. The following directories were removed because they're not used by Chromium
+   at the moment:
+   as_is
+   packaging
+   source/extra
+   source/sample
+   source/layout
+   source/layoutex
+
+
+4. The word breaking for Chinese and Japanese were modified to use a word
+   frequency list with the following patch and cjdict.txt.
+
+   - patches/segmentation.patch :
+       Adds a dictionary (word-frequency)-based word breaking for CJK
+       (Korean is supported in the code, but it does not do anything
+        because we don't have a Korean word-list.)
+
+   - source/data/brkitr/cjdict.txt :
+       Chinese and Japanese word frequency list.
+       See the file for license/copyright notice
+
+   - source/data/brkitr/cc_edict.txt :
+       the list of words derived from CC-Edict.)
+
+   - patches/brkitr.patch
+     * word.txt : Chinese/Japanese segmentation rules, Hebrew-script-specific
+                  handling of U+0022, and splitting of FQDN into labels at '.'.
+		  For Hebrew, see http://unicode.org/cldr/track/ticket/3120
+     * line.txt : Incorporated line_he and minor changes in CL, OP and ID
+                  definitions.
+		  For Hebrew, see http://unicode.org/cldr/track/ticket/4004
+		  For others, see http://unicode.org/cldr/track/ticket/3974
+		                  http://unicode.org/cldr/track/ticket/4200
+		                  http://unicode.org/cldr/track/ticket/
+     * brklocal.mk : build file changes to drop unnecessary brkitr rule
+                     files (e.g. word_ja.txt, line_he.txt)
+
+   - android/brkitr.patch (to be applied for Android build only) :
+       Reverts some changes about Chinese/Japanese segmentation rules in
+       patches/brkitr.patch to reduce binary size for Android.
+
+   If you want to run ICU tests, you have to copy source/data/brkitr/cjdict.txt
+   to source/test/testdata/cjdict-truncated.txt to pass TestTrieWithValue test.
+
+5. Converter changes : converters.patch
+  - Include what we really need. See source/data/mappings/ucmlocal.txt
+  - Alias and mapping changes : source/data/mappings/convrtrs.txt
+  - Changes several tables and add six new tables, three of which
+    are 'fake' tables for ISO-2022-CN(-Ext).
+  - ucnv2022.c is modified to use 3 'fake' tables added above for
+    ISO-2022-CN(-Ext).
+
+6. Locale changes
+  - patches/locale1.patch :
+      Filipino, Amharic, and Swahili locales
+      exemplar character set changes for CJK + 9 Indian locales
+      Minor fixes for Danish, , Turkish, and Korean.
+
+  - patches/locale2.patch :
+      The minimum locale data Chrome needs for 47 languages Chrome is
+      not localized to. Each locale data file has ExemplarCharacters,
+      LocaleScript, layout, and the name of the language for a locale
+      in its native language.
+
+  - patches/locale3.patch : Locale build configuration files. They
+    add reslocal.mk or {trns,sprep,rbnf,coll}local.mk files to
+    source/data/{coll,curr,lang.locale,curr,region,translit,zone,rbnf,sprep}.
+
+  - In source/data/region, run the following command to get rid of numeric region
+    display names we don't use (everything other than 419).
+     $ sed -i  '/[0-35-9][0-9][0-9]{/ d' *.txt
+
+  - android/patch_locale.sh (to be run for Android build only):
+      Makes changes to source/data/{curr,region,lang} to exclude these data
+      except the language and script names of zh_Hans and zh_Hant.
+ 
+  - Add tg.txt to source/data/locale source/data/lang to add the minimal locale
+    data necessary for the spellchecker. In both directories, add tg.txt to
+    reslocal.mk
+
+7. Removal of unihan collation tables from data/coll/{zh,ja,ko}.txt
+
+  - patches/unihan.patch:
+    unihan collation tables are never used in Chrome/Webkit, but it takes
+    about 1MB in the uncompressed ICU data file in ICU 4.2.1.
+
+8. Timezone data update
+  - Grab the latest version of the following timezone data files and
+    put them in source/data/misc.
+
+     metaZones.txt
+     timezoneTypes.txt
+     windowsZones.txt
+     zoneinfo64.txt
+
+   As of Mar 2014, the latest version is 2014a and the above files
+   are available at
+   http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2014a/44/
+
+9. Transliterator customization
+
+   - Add el_Upper.txt taken from ICU 52 to source/data/trnslit
+
+   - Also add css3transform.txt to the same directory
+   - Put the following line in trnslocal.mk
+
+     TRANSLIT_SOURCE=css3transform.txt
+
+10. Build-related changes
+
+  - patches/wpo.patch
+  - patches/vscomp.patch
+    (see http://bugs.icu-project.org/trac/ticket/8355 and
+         http://bugs.icu-project.org/trac/ticket/8356 )
+  - patches/rtti.patch : Make RTTI work without exception handling on Windows
+    (see http://bugs.icu-project.org/trac/ticket/8343)
+  - patches/data.build.patch :
+      To remove some data files we don't use and cut down the data size.
+  - patches/data.build.win.patch :
+      Windows-only data build patch. Add a new target DATALIB to makedata.mak
+  - patches/clang.patch: To build with Clang.
+    (see http://bugs.icu-project.org/trac/ticket/8954 Two other chunks in
+    the patch have already been fixed in the ICU trunk.)
+  - add an empty file (stubdatabuilt.txt) to source/stubdata
+
+11. Pre-built data libraries are checked in.
+
+    Before building data file on Linux, re-run 'runConfigureICU Linux' again
+    if it's run without data.build.patch in #10 above.
+
+    Because we removed layout and layoutex directories in step 3,
+    'runConfigureICU Linux' will fail even with '--disable-layout'. A
+    work-around is to have a copy of our icu tree in a separate build directory
+    and add back directories we removed in step 3 before
+    running 'runConfigure'.
+
+    'make' will fail in the 1st pass. Copy source/data/in/coll/invuca.icu
+    to {BUILD_DIR_ROOT}/data/out/build/icudt46l/coll and re-run 'make'
+    in {BUILD_DIR_ROOT}/data.
+
+    'make' will fail again when pkgdata looks for css3transform.res. Edit
+    data/out/tmp/icudata.lst to replace 'css3transform.res' with 'root.res'.
+    (see http://bugs.icu-project.org/trac/ticket/10570 ) and run 'make' again.
+
+
+    - source/data/in/icudtl.dat : Built on Linux with all the patches
+      above applied. icudt46l.dat is generated in
+      {BUILD_DIR_ROOT}/data/out/tmp and copied to the above location with a
+      version number (46) dropped.
+
+    - windows/icudt.dll : With icudt46l.dat in place, all the patches applied
+      and header files moved (#11 below), generated by building icudt_build
+      project of build/icudt_build.sln on Windows. icudt46.dll is
+      generated in bin/{Release,Debug} and copied to windows/icudt.dll
+      and checked in. Note that we drop the version number ('46') from the
+      dll name to avoind having to update our build scripts/configuration
+      files everytime ICU is upgraded to a new version.
+
+    - {mac,linux}/icudt46l_dat.S : Built on Linux with all the
+      patches above (except android/brkitr.patch) applied and checked in.
+      This file will be generated in {BUILD_DIR_ROOT}/data/out/tmp.
+
+      mac/icudt46l_dat.S is identical to linux/icudt46l_dat.S. It's made
+      by changing the header portion of the Linux version to read as following
+      (no leading whitespace) :
+
+          .globl _icudt46_dat
+          #ifdef U_HIDE_DATA_SYMBOL
+                 .private_extern _icudt46_dat
+          #endif
+                 .data
+                 .const
+                 .align 4
+          _icudt46_dat:
+
+
+    - android/icudt46l_dat.S : Built on Linux with all the patches above and
+      android/brkitr.patch applied and android/patch_locale.sh executed, and
+      checked in.
+    - android/icudtl.dat : Generated as icudt46l.dat in
+      {BUILD_DIR_ROOT}/data/out/tmp along with icudt46l_dat.S and
+      copied to the above location with '46' dropped in its name.
+
+
+12. Apply the fix found with static analysis tools such as PSV and coverity
+
+  - patches/static.analysis.patch
+  - upstream trunk/4.8 do not have this code any more.
+
+13. Fix for msvs2010 applied:
+--- D:/src/ent/src/third_party/icu/source/common/stringpiece.cpp
+ (revision 78292)
++++ D:/src/ent/src/third_party/icu/source/common/stringpiece.cpp
+ (working copy)
+@@ -75,7 +75,7 @@
+ * Visual Studios 9.0.
+ * Cygwin with MSVC 9.0 also complains here about redefinition.
+ */
+-#if (!defined(_MSC_VER) || (_MSC_VER > 1500)) && !defined(CYGWINMSVC)
++#if (!defined(_MSC_VER) || (_MSC_VER > 1600)) && !defined(CYGWINMSVC)
+ const int32_t StringPiece::npos;
+ #endif
+
+14. Fix for locales that don't use '.' as decimal separator: patches/nan.patch
+  - upstream bug: http://bugs.icu-project.org/trac/ticket/8561
+  - Handle other chars besides the dot. This is required because decNumber's
+    parser expects the dot as a decimal separator.
+  - Locales that don't use dot were producing "NaN" values.
+
+15. Fix a bug in the regex engine.
+  - patches/regex.patch
+  - upstream bug: http://bugs.icu-project.org/trac/ticket/8666 (fixed in the upstream)
+
+16. Apply the upstream patch for Korean search collator support (ICU 4.6.1).
+   - patches/search_collation.patch
+   - upstream bug: http://bugs.icu-project.org/trac/ticket/8290
+
+17. Fix a use of uninitialized memory bug in regular expression matching
+   - patches/rematch.patch
+   - upstream bug: http://bugs.icu-project.org/trac/ticket/8824
+
+18. Make it compile with -Werror on gcc 4.6
+   - patches/gcc46.patch (ToT upstream does not have this code any more).
+
+19. Fix four out of bounds memory access error in common/uloc.c
+    and common/uresbund.c
+   - patches/uloc.patch
+   - upstream bug:
+     1. http://bugs.icu-project.org/trac/ticket/8984 (_canonicalize)
+     2. http://bugs.icu-project.org/trac/ticket/9114 (_getKeywords)
+     3. http://bugs.icu-project.org/trac/ticket/8812 (uresbund)
+        http://bugs.icu-project.org/trac/ticket/8813 (uresbund)
+     4. http://bugs.icu-project.org/trac/ticket/10250 (_getKeywords)
+
+20. Fix a null pointer error in ubrk_setText in ubrk.cpp.
+    - patches/ubrk.patch
+    - upstream bug : http://bugs.icu-project.org/trac/ticket/9115
+
+21. Fix a clang warning in rbbi.cpp by merging in an upstream change.
+    - patches/changeset_30255.patch
+    - upstream change : http://bugs.icu-project.org/trac/changeset/30255
+
+22. Fix time zone handling and compilation on iOS.
+    - patches/ios_timezone.patch
+    - upstream bugs : http://bugs.icu-project.org/trac/ticket/9051
+                      http://bugs.icu-project.org/trac/ticket/8661
+
+23. Fix a buffer overflow in utext
+    - patches/utext.patch
+    - upstream change : http://bugs.icu-project.org/trac/changeset/29356
+
+24. Fix compilation errors on VS2012 and above.
+    - patches/vs2012.patch
+
+25. Fix a buffer overflow in UTF-16/32 detection.
+    - patches/csetdet.patch
+    - upstream bug: http://bugs.icu-project.org/trac/ticket/10318
+
+26. Add BreakIterator::getRuleStatus
+    - patches/breakiterator.patch
+    - Copy and paste BreakIterator::getRuleStatus API from ICU 52
+
+27. Change export of U_ICUDATA_ENTRY_POINT from U_IMPORT to U_EXPORT.
+    - patches/declspec.patch
+
+28. Add support for QNX Neutrino.
+    -  patches/platform.qnx.patch:
+       See #2 about the platform header generation.
+    -  patches/si_value.undef.patch:
+       Work around an all-lowercase macro defined in <signal.h>.
+       Upstream took a different approach:
+       http://bugs.icu-project.org/trac/ticket/9935
+    -  patches/xopen_source.patch:
+       Set _XOPEN_SOURCE to 600 as in the upstream changeset:
+       http://bugs.icu-project.org/trac/changeset/30418
