Codebase list mozc / 27b7a2e
Import documents from code.google.com to GitHub. To complete repository migration from code.google.com to GitHub, this CL imports several documents written in Wiki format as Markdown format. Yohei Yukawa 8 years ago
10 changed file(s) with 1054 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
44
55 Mozc is a Japanese Input Method Editor (IME) designed for multi-platform such as
66 Android OS, Apple OS X, Chromium OS, GNU/Linux and Microsoft Windows. This
7 open-source project originates from
7 OpenSource project originates from
88 [Google Japanese Input](http://www.google.com/intl/ja/ime/).
99
1010 Build Status
1111 ------------
1212
13 | |Android |Windows |OS X |Linux |NaCl |
14 |---------|:------:|:------:|:---:|:----:|:---:|
15 |**Build**|N/A |[![Build status](https://ci.appveyor.com/api/projects/status/qm7q355lenq5ogp6/branch/master?svg=true)](https://ci.appveyor.com/project/google/mozc/branch/master) |[![Build Status](https://travis-ci.org/google/mozc.svg?branch=master)](https://travis-ci.org/google/mozc) |N/A |N/A |
16
13 |Android |Windows |OS X |Linux |NaCl |
14 |:------:|:------:|:---:|:----:|:---:|
15 |N/A |[![Build status](https://ci.appveyor.com/api/projects/status/qm7q355lenq5ogp6/branch/master?svg=true)](https://ci.appveyor.com/project/google/mozc/branch/master) |[![Build Status](https://travis-ci.org/google/mozc.svg?branch=master)](https://travis-ci.org/google/mozc) |N/A |N/A |
1716
1817 What's Mozc?
1918 ------------
2524 source code under OSS license without any warranty nor user support.
2625
2726 In this repository, *Mozc* means the second definition unless otherwise noted.
27
28 Detailed differences between Google Japanese Input and Mozc are described in [About Branding](doc/about_branding.md).
29
30 Build Instructions
31 ------------------
32
33 * [How to build Mozc in Docker](doc/build_mozc_in_docker.md): Android, NaCl, and Linux desktop builds.
34 * [How to build Mozc in OS X](doc/build_mozc_in_osx.md): OS X build.
35 * [How to build Mozc in Windows](doc/build_mozc_in_windows.md): Windows build.
36
37 Release Plan
38 ------------
39
40 tl;dr. **There is no stable version.**
41
42 As described in [About Branding](doc/about_branding.md) page, Google does
43 not promise any official QA for OSS Mozc project. Because of this,
44 Mozc does not have a concept of *Stable Release*. Instead we change version
45 number every time when we introduce non-trivial change. If you are
46 interested in packaging Mozc source code, or developing your own products
47 based on Mozc, feel free to pick up any version. They should be equally
48 stable (or equally unstable) in terms of no official QA process.
49
50 [Release History](doc/release_history.md) page may have additional
51 information and useful links about recent changes.
2852
2953 License
3054 -------
0 About Branding
1 ==============
2
3 # Differences between Google Japanese Input and Mozc
4
5 | Product Name | Google Japanese Input Stable Version | Google Japanese Input Development Version | Mozc |
6 |:-------------|:---------------------------------------------------------------------|:--------------------------------------------------------------------------|:-----|
7 | Branding | Google Japanese Input (Google 日本語入力) | Google Japanese Input (Google 日本語入力) | Mozc |
8 | Release Form | Binary Installer | Binary Installer | Source code |
9 | License Agreement | Available on the installation page | Available on the installation page | 3-Clause BSD License (except for third-party code) |
10 | Target Platform | Microsoft Windows Apple OS X Android Google Chrome OS | Microsoft Windows, Apple OS X | Android OS, Microsoft Windows, Apple OS X, GNU/Linux, Chromium OS |
11 | Version String | GoogleJapaneseInput-1.x.yyyy.0 (Windows), GoogleJapaneseInput-1.x.yyyy.1 (OS X), GoogleJapaneseInput-1.x.yyyy.3 (Android), GoogleJapaneseInput-1.x.yyyy.4 (Chrome OS) | GoogleJapaneseInput-1.x.yyyy.100 (Windows), GoogleJapaneseInput-1.x.yyyy.101 (OS X) | Mozc-1.x.yyyy.102 |
12 | Logo | Colorful | Colorful | Orange |
13 | Code Location | Google internal | Google internal | [GitHub](https://github.com/google/mozc) |
14 | System Dictionary | Google internal | Google internal | [Mozc dictionary](../src/data/dictionary_oss/README.txt) |
15 | Usage Dictionary | [Japanese Usage Dictionary](https://github.com/hiroyuki-komatsu/japanese-usage-dictionary) | [Japanese Usage Dictionary](https://github.com/hiroyuki-komatsu/japanese-usage-dictionary) | [Japanese Usage Dictionary](https://github.com/hiroyuki-komatsu/japanese-usage-dictionary) |
16 | Collocation Data | Google internal | Google internal | [Only examples are available](../src/data/dictionary_oss/collocation.txt) |
17 | Reading Correction Data | Google internal | Google internal | [Only an example is available](../src/data/dictionary_oss/reading_correction.tsv) |
18 | Suggestion Filter | Google internal | Google internal | [Only an example is available](../src/data/dictionary_oss/suggestion_filter.txt) |
19 | Japanese ZIP Code Dictionary | Included | Included | Not included. [You can add it by yourself](../src/data/dictionary_oss/README.txt) |
20 | Quality Assurance | New releases are tested by Google before sending to users | Basically the same to Stable but some additional QA tests are skipped before sending to users | No official QA by Google |
21 | Crash Reporting | Chrome OS: Integrated into the OS settings Other platforms: No by default. You can turn it on | Yes | No |
22 | User Metrics Reporting | Chrome OS: No Other platforms: No by default. You can turn it on | Yes | No |
23 | Google Update | Android : No Other platforms: Yes | Yes | No |
24 | Other Online Features | Not supported yet | Cloud Handwriting | Nothing |
0 How to build Mozc in Docker
1 ===========================
2
3 # Introduction
4 Docker containers are available to build Mozc binaries for Android, NaCl, and Linux desktop.
5
6 # System Requirements
7 Currently, only Ubuntu 14.04 is tested to host the Docker container to build Mozc. See [official document](http://docs.docker.com/installation/ubuntulinux/#ubuntu-trusty-1404-lts-64-bit) to set up Docker for Ubuntu 14.04.
8
9 ## Set up Ubuntu 14.04 Docker container
10
11 ```
12 mkdir ubuntu14.04 && cd ubuntu14.04
13 curl -O https://raw.githubusercontent.com/google/mozc/master/src/docker/ubuntu14.04/Dockerfile
14 sudo docker build --rm -t $USER/mozc_ubuntu14.04 .
15 sudo docker run --interactive --tty --rm $USER/mozc_ubuntu14.04
16 ```
17
18 ## Set up Fedora 21 Docker container
19 Fedora 21 container is also provided just for your reference.
20
21 ```
22 mkdir fedora21 && cd fedora21
23 curl -O https://raw.githubusercontent.com/google/mozc/master/src/docker/fedora21/Dockerfile
24 sudo docker build --rm -t $USER/mozc_fedora21 .
25 sudo docker run --interactive --tty --rm $USER/mozc_fedora21
26 ```
27
28 ### Hint
29 Don't forget to rebuild Docker container when Dockerfile is updated.
30
31 ### Update the source tree
32 If Dockerfile is not updated but GitHub Mozc repository is updated, you can fetch the latest source code as follows.
33
34 ```
35 cd ../
36 gclient sync
37 cd src/
38 ```
39
40 # Build in the container
41 Before explaining detailed build configurations and options, let's walk through the simplest cases to see how it looks like.
42
43 ### Build Mozc for Android:
44
45 ```
46 python build_mozc.py gyp --target_platform=Android
47 python build_mozc.py build -c Debug android/android.gyp:apk
48 ```
49
50 ### Build Mozc for NaCl:
51
52 ```
53 python build_mozc.py gyp --target_platform=NaCl --nacl_sdk_root=$NACL_SDK_ROOT
54 python build_mozc.py build -c Release chrome/nacl/nacl_extension.gyp:nacl_mozc
55 ```
56
57 ### Build Mozc for Linux Desktop:
58
59 ```
60 python build_mozc.py gyp --target_platform=Linux
61 python build_mozc.py build -c Release unix/ibus/ibus.gyp:ibus_mozc unix/emacs/emacs.gyp:mozc_emacs_helper server/server.gyp:mozc_server gui/gui.gyp:mozc_tool renderer/renderer.gyp:mozc_renderer
62 ```
63
64 You can also run unittests as follows.
65
66 ```
67 python build_mozc.py runtests -c Debug
68 ```
69
70 ## Build configurations
71 In `python build_mozc.py gyp` step, there are two different styles to customize configurations. One is `GYP_DEFINES` environment variable and the other is commandline option.
72
73 ```
74 [GYP_DEFINES="..."] python build_mozc.py gyp [options]
75 ```
76
77 ### GYP_DEFINES
78 You can specify `GYP_DEFINES` environment variable to change variables in GYP files, which you can find many directories in Mozc's source tree. [common.gypi](../src/gyp/common.gypi) is an example.
79 Here are examples of GYP variables that you may want to change for Linux desktop build.
80
81 * `document_dir`: Directory path where Mozc's license file is placed
82 * `ibus_mozc_path`: ibus-mozc executable path
83 * `ibus_mozc_icon_path`: ibus-mozc icon path
84 * `zinnia_model_file`: Zinnia's model data path
85
86 Note that you can specify multiple GYP variables as follows.
87
88 ```
89 GYP_DEFINES="ibus_mozc_path=/usr/lib/ibus-mozc/ibus-engine-mozc ibus_mozc_icon_path=/usr/share/ibus-mozc/product_icon.png document_dir=/usr/share/doc/mozc zinnia_model_file=/usr/share/zinnia/model/tomoe/handwriting-ja.model" python build_mozc.py gyp
90 ```
91
92 ### command line options
93 You can find many command line options as follows.
94 ```
95 python build_mozc.py gyp --help
96 ```
97 Here we show some notable options.
98
99 #### --target_platform
100 You can use `--target_platform` option to specify the target OS on which Mozc will run. Following options are available.
101
102 * `Android`
103 * `NaCl`
104 * `Linux` (default)
105
106 If you don't specify this option, `--target_platform=Linux` will be used implicitly.
107
108 #### --noqt (Linux desktop target only)
109 You can use `--noqt` option to build Mozc without depending on Qt 4 library.
110
111 #### --server_dir (Linux desktop target only)
112 You can use `--server_dir` option to specify the directory name where `mozc_server` will be installed.
113
114 ## Compile options
115 In `build_mozc.py build` step, you can specify build types (`Release`` or `Debug`) and one or more build targets. Please find each GYP file to see what build targets are defined.
116
117 ```
118 python build_mozc.py build -c {Release, Debug} [gyp_path_1.gyp:gyp_target_name1] [gyp_path_2.gyp:gyp_target_name2]
119 ```
120
121 ## Android specific topics
122
123 ### Aplication package name
124
125 **CAUTION**: Currently the application package is fixed (org.mozc.android.inputmethod.japanese). Don't publish the built package. If you want to publish, specify `--android_application_id` to `build_mozc.py gyp` command and manually update related files.
126
127 ### zipalign
128
129 Android version of Mozc may not run if the APK file is not aligned with [zipalign](https://developer.android.com/tools/help/zipalign.html) command.
0 How to build Mozc on OS X
1 =========================
2
3 # System Requirements
4
5 We only support OS X 10.7 or later intel only.
6
7 # Software Requirements
8
9 Building on Mac requires the following software.
10 * Xcode
11
12 If you don't need to run gui tools like about dialog, config dialog, or dictionary tool, you can omit installing Qt. Candidate window still shows without Qt. See below for the detailed information.
13
14 # Get the Code
15
16 First, you'll need to download the gclient depot tool, and add depot\_tools to your PATH.
17
18 ```
19 cd ~/
20 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
21 export PATH=`pwd`/depot_tools:"$PATH"
22 ```
23
24 Then, download the Mozc code from its SVN repository with the gclient command:
25
26 ```
27 mkdir -p ~/work/mozc
28 cd ~/work/mozc
29 gclient config https://github.com/google/mozc.git --name=. --deps-file=src/DEPS
30 gclient sync
31 ```
32
33 This will also download source code of other programs such as googletest and Protocol Buffers.
34 Update to the latest revision
35
36 Execute the following command to update to the latest revision.
37
38 ```
39 gclient sync
40 ```
41
42 Updating the tree sometimes causes a mysterious build error. Try "build\_mozc.py clean" if it occurs.
43
44 # Compilation
45
46 First, you'll need to generate Xcode project using a tool called GYP, which is automatically downloaded by "gclient sync":
47
48 ```
49 cd ~/work/mozc/src
50 GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --noqt
51 ```
52
53 You can customize the SDK version and target OS version here. Then, build Mozc.app and necessary files:
54
55 ```
56 python build_mozc.py build -c Release mac/mac.gyp:GoogleJapaneseInput mac/mac.gyp:gen_launchd_confs
57 ```
58
59 # Executables
60
61 Executables are written in `~/wok/mozc/src/out_mac/Release` for Release builds, and `~/work/mozc/src/out_mac/Debug` for Debug builds. For instance, you'll have `~/work/mozc/src/out_mac/Release/Mozc.app` once the build finishes successfully in the Release mode.
62
63 # Clean up the Tree
64
65 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
66
67 ```
68 python build_mozc.py clean
69 ```
70
71 # Install built packages
72
73 Mozc doesn't have installer mpkg files. You can just place the created Mozc.app into `/Library/Input Methods`, and `out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Converter.plist` and `org.mozc.inputmethod.Japanese.Renderer.plist` into `/Library/LaunchAgents`, and then log in again. Then it works well.
74
75 ```
76 sudo cp -r out_mac/Release/Mozc.app /Library/Input\ Methods/
77 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Converter.plist /Library/LaunchAgents
78 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Renderer.plist /Library/LaunchAgents
79 ```
0 How to build Mozc in Windows
1 ============================
2
3 # System Requirements
4
5 64-bit Windows is required to build Mozc for Windows. Mozc itself is expected to work on Windows Vista SP2 and later, including 32-bit Windows.
6
7 # Software Requirements
8
9 Building Mozc on Windows requires the following software.
10
11 * [Visual Studio 2013 Community Edition](http://visualstudio.com/free), or any greater edition.
12 * (optinal) [Qt libraries](http://download.qt.io/archive/qt/)
13 * Commercial version and LGPL version are available.
14
15 # Get the Code
16
17 First, you'll need to download the gclient [depot\_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools), and add ```depot_tools``` to your ```PATH```.
18
19 ```
20 set PATH=%PATH%;c:\work\depot_tools
21 ```
22
23 Then download the code:
24
25 ```
26 mkdir c:\work\mozc
27 cd c:\work\mozc
28 gclient config https://github.com/google/mozc.git --name=. --deps-file=src/DEPS
29 gclient sync
30 ```
31
32 ## Update to the latest revision
33
34 Execute the following command to update to the latest revision.
35
36 ```
37 gclient sync
38 ```
39
40 Updating the tree sometimes causes a mysterious build error. Try ```build_mozc.py clean``` if it occurs.
41
42 # Compilation
43
44 First, you'll need to generate Visual C++ project files using a tool called GYP, which is automatically downloaded by ```gclient sync```:
45
46 ```
47 cd c:\work\mozc\src
48 python build_mozc.py gyp --qtdir=c:\Qt\4.8.0
49 ```
50
51 The directory of Qt (`C:\Qt\4.8.0` in this example) differs based on Qt version. If you specify `--noqt` option instead of `--qtdir=<dir to Qt>`, mozc\_tool will be built as a mock version, which does nothing.
52
53 You can also specify `--branding=GoogleJapaneseInput` option and `--wix_dir=<dir to WiX binaries>` option here to reproduce official Google Japanese Input binaries and installers.
54
55 Then, build Mozc binaries:
56
57 ```
58 python build_mozc.py build -c Release package
59 ```
60
61 If you need debug information, you can build debug version of Mozc as follows.
62
63 ```
64 python build_mozc.py build -c Debug package
65 ```
66
67 # Executables
68
69 You have release build binaries in `c:\work\mozc\src\out\Release` and `c:\work\mozc\src\out\Release_x64`.
70
71 # Clean up the Tree
72
73 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
74
75 ```
76 python build_mozc.py clean
77 ```
78
79 # Installation and Uninstallation
80
81 Although the code repository covers source files of the official Google Japanese Input installer (see `win32/custom_action` and `win32/installer`), building Windows Installer package for OSS Mozc is not supported yet. You need to manually copy Mozc binaries and run a command as follows.
82
83 Note that Mozc now supports two input method APIs called IMM32 and TSF (Text Services Framework). Although you can register Mozc for both APIs at the same time, IMM32 is not recommended on Windows 8 and later.
84
85
86 ---
87
88 ## Install Mozc (32-bit)
89
90 Following files must be placed under %ProgramFiles%\Mozc.
91
92 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
93 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
94 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
95 * `C:\work\mozc\src\out\Release\mozc_server.exe`
96 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
97 * `C:\work\mozc\src\out\ReleaseDynamic\mozc_tool.exe` (if you didn't specify `--noqt` option)
98 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
99 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
100
101 `QtCore4.dll` and `QtGui4.dll` are not required if you specified `--noqt` option into the gyp command.
102
103 ### Register Mozc for IMM32 into 32-bit environment
104
105 Following files must be placed under `%windir%\System32`.
106
107 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
108
109 Finally, you must run `mozc_broker32.exe` with administrator privilege to register IME module as follows.
110
111 ```
112 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=register_ime
113 ```
114
115 ### Register Mozc for TSF into 32-bit environment
116
117 Following file must be placed under `%ProgramFiles%\Mozc`.
118
119 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
120
121 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
122
123 ```
124 regsvr32 "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
125 ```
126
127 ---
128
129 ## Uninstall Mozc (32-bit)
130
131 ### Unregister Mozc for IMM32 from 32-bit environment
132
133 Run `mozc_broker32.exe` with administrator privilege to unregister IME module as follows.
134
135 ```
136 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=unregister_ime
137 ```
138
139 Then delete the following file.
140
141 * `%windir%\System32\mozc_ja.ime`
142
143 ### Unregister Mozc for TSF from 32-bit environment
144
145 Run `regsvr32` with administrator privilege to unregister IME module as follows.
146
147 ```
148 regsvr32 /u "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
149 ```
150
151 ### Uninstall common files of Mozc from 32-bit environment
152
153 Delete following directory and files after unregistering Mozc from IMM32/TSF.
154
155 * `%ProgramFiles%\Mozc\`
156
157 ---
158
159 ## Install Mozc (64-bit)
160
161 Following files must be placed under %ProgramFiles(x86)%\Mozc.
162
163 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
164 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
165 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
166 * `C:\work\mozc\src\out\Release\mozc_server.exe`
167 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
168 * `C:\work\mozc\src\out\ReleaseDynamic\mozc\_tool.exe` (if you didn't specify `--noqt` option)
169 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
170 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
171 * `C:\work\mozc\src\out\Release_x64\mozc_broker64.exe`
172
173 ### Register Mozc for IMM32 into 64-bit environment
174
175 Following files must be placed under `%windir%\System32`.
176
177 * `C:\work\mozc\src\out\Release_x64\mozc_ja.ime`
178
179 Following files must be placed under `%windir%\SysWOW64`.
180
181 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
182
183 Finally, you must run `mozc_broker64.exe` with administrator privilege to register IME module as follows.
184
185 ```
186 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=register_ime
187 ```
188
189 ### Register Mozc for TSF into 64-bit environment
190
191 Following file must be placed under `%ProgramFiles(x86)%\Mozc`.
192
193 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
194 * `C:\work\mozc\src\out\Release_x64\mozc_ja_tip64.dll`
195
196 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
197
198 ```
199 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
200 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
201 ```
202
203 ---
204
205 ## Uninstall Mozc (64-bit)
206
207 ### Unregister Mozc for IMM32 from 64-bit environment
208
209 Run `mozc_broker64.exe` with administrator privilege to unregister IME module as follows.
210
211 ```
212 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=unregister_ime
213 ```
214
215 Then delete the following files.
216
217 * `%windir%\System32\mozc_ja.ime`
218 * `%windir%\SysWOW64\mozc_ja.ime`
219
220 ### Unregister Mozc for TSF from 64-bit environment
221
222 Run `regsvr32` with administrator privilege to unregister IME module as follows.
223
224 ```
225 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
226 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
227 ```
228
229 ### Uninstall common files of Mozc from 64-bit environment
230
231 Delete following directory and files after unregistering Mozc from IMM32/TSF.
232
233 * `%ProgramFiles(x86)%\Mozc\`
234
235 ---
236
237
238 # Run unit tests
239
240 You can run unit tests as follows.
241
242 ```
243 cd c:\work\mozc\src
244 python build_mozc.py gyp --noqt
245 python build_mozc.py runtests -c Release
246 ```
247
248 Note that you can specify `--qtdir=` option instead of `--noqt' in GYP phase, currently there is no unit test that depends on Qt.
0 # Data Encryption and Password Management
1
2 This document describes how Mozc obfuscates user data and how it works, in each platform.
3
4 ## Background
5
6 Input methods stores some internal data in the local storage. Most are stored in plain text, but Mozc applies AES256 CBC to obfuscate some data that are considered to be important for user privacy.
7
8 ## Overview
9
10 As is described above, most of data are stored in plain text. Only the following data are obfuscated with AES256 CBC:
11
12 * User history: stores some of users input text, which is used to suggest text from the users history.
13 * client ID: the ID to be marked for usage stats. Not used if the user does not opt-in the "sending usage stats" configuration.
14
15 ## Detailed Design
16
17 We have three policies for obfuscation:
18
19 * We do not use a product-wide "master key". Instead, each key of data encryption is different on each machine. We want to prevent "casual" leaks such like uploading/publishing on the web, so "no product-wide common keys".
20 * We trusts processes which runs with the user ID. That is, if some malicious cracker succeeds to inject a virus on the machine and it knows Mozc quite well, the data encryption framework can't help.
21 * Again, we want to prevent only "casual" leaks. If you really want to protect your data, you should enable file-system encryption at OS-level.
22
23 Then, we take the following process:
24
25 * Mozc firstly created a "password file", which stores the key and salt of AES256 CBC.
26 * Then apply AES256 CBC for the data to be obfuscated.
27
28 Then, how to protect the "password file"? It's up to the platform.
29
30 * Windows: Uses [CryptProtectData](http://msdn.microsoft.com/en-us/library/windows/desktop/aa380261.aspx) and [CryptUnprotectData](http://msdn.microsoft.com/en-us/library/windows/desktop/aa380882.aspx) APIs, which guarantee the data is encrypted with keys of user credential and the machine id. It means, the password file has to be differently encrypted if the user id is different and/or the machine is different.
31 * Mac: The password file itself is also obfuscated with AES256 CBC, where the key and salt is generated from the machine's serial number and the user's ID in a predictable way, which means that anyone who knows the machine's serial number and the user's ID can read the password file.
32 * Linux: no protection. The key and salt are stored as plain data. Anyone who has the OS-level permission to reed the password file can read it.
33 * ChromeOS: same as Linux. But no protection does not cause a serious issue because the OS encrypts the local disk and no normal processes run in ChromeOS.
34 * Android: Same as Linux. But no protection does not cause a serious issue because other applications do not have the OS-level permission to read the Mozc's file.
35
36 ## Code Location
37
38 * [src/base/encryptor.cc](../../src/base/encryptor.cc): consists of two code logic of this obfuscation mechanism. One is the platform-neutral AES256 CBC logic and the other is platform-dependent protection logic for the password file.
39 * [src/base/password_manager.cc](../../src/base/password_manager.cc): the password management (dealing with the password file). The actual data protection logic for the password file is delegated to encruptor.cc.
40 * [src/base/unverified_aes256.cc](../../src/base/unverified_aes256.cc): the AES256 CBC implementation. Our implementation hasn't been verified with any authority such as FIPS. Please do not use this implementation for any security/privacy critical purpose.
41 * [src/base/unverified_sha1.cc](../../src/base/unverified_sha1.cc): the SHA1 implementation. Our implementation hasn't been verified with any authority such as FIPS. Please do not use this implementation for any security/privacy critical purpose.
42
43 ## Guide to port Mozc to a new platform
44
45 Before starting your work, you have to understand the privacy concern described in this document. You also need to find out the best way to store password, for your platform. For example, gnome-keyrings might be a choice for Linux implementation.
0 Input Scope Support in Mozc
1 ===========================
2
3 Objective
4 ---------
5
6 Make Windows Mozc client aware of InputScope feature on Windows.
7
8 Starting with Windows 8, InputScope is the recommended way to set the conversion mode of Japanese IME and ImmSetConversionStatus API is virtually deprecated in per user input mode.
9
10 > Thus, Japanese Microsoft IME ignores the change of conversion modes made by calling
11 > ImmSetConversionStatus when used in per user mode. This API is used in the IME mode
12 > property of .NET framework. InputScope is recommended in order to set the IME mode
13 > under per user mode in Windows 8. - "[Switch text input changed from per-thread to per-user](http://msdn.microsoft.com/en-us/library/windows/desktop/hh994466.aspx)"
14
15 Microsoft IME shipped with Windows Vista and later actually behaves like this. As for Mozc, Mozc client’s should behave like Microsoft IME 2012 in terms of open/close mode and conversion mode for each InputScope.
16 This is the first step to support such context-awareness. As future work, Mozc should be able to behave more appropriately and adoptively based on each input context.
17
18 Design Highlights
19 -----------------
20
21 When an input field is focused and it has InputScope, Mozc should change its on/off mode and conversion mode as follows.
22
23 | InputScope | Expected Input Mode |
24 |:-----------|:--------------------|
25 | `IS_URL`, `IS_EMAIL_USERNAME`, `IS_EMAIL_SMTPEMAILADDRESS`, `IS_DIGITS`, `IS_NUMBER`, `IS_PASSWORD`, `IS_TELEPHONE_FULLTELEPHONENUMBER`, `IS_TELEPHONE_COUNTRYCODE`, `IS_TELEPHONE_AREACODE`, `IS_TELEPHONE_LOCALNUMBER`, `IS_TIME_FULLTIME`, `IS_TIME_HOUR`, `IS_TIME_MINORSEC` | Direct Mode (IME Off) |
26 | `IS_HIRAGANA` | Hiragana Mode (IME On) |
27 | `IS_ALPHANUMERIC_HALFWIDTH` | Halfwidth Alphanumeric Mode (IME On) |
28 | `IS_NUMBER_FULLWIDTH`, `IS_ALPHANUMERIC_FULLWIDTH` | Fullwidth Alphanumeric Mode (IME On) |
29 | `IS_KATAKANA_HALFWIDTH` | Halfwidth Katakana Mode (IME On) |
30 | `IS_KATAKANA_FULLWIDTH` | Fullwidth Katakana Mode (IME On) |
31
32 From usability perspectives, user experience offered by InputScope should be consistent with that in password field. It means that the change caused by InputScope should be temporal and volatile. This requires two different mode sets 1) mode visible from Mozc client and 2) mode visible from TSF should be managed.
33
34 Here is an example of mode transitions.
35
36 | Action | Mozc On/Off | Mozc Mode | TSF On/Off | TSF Mode |
37 |:-----------|:----------------|:--------------|:---------------|:-------------|
38 | Turn IME on | On | Hiragana | On | Hiragana |
39 | ↓ | | | | |
40 | Enter email field | Off | Hiragana | On | Hiragana |
41 | ↓ | | | | |
42 | Enter search field | On | Hiragana | On | Hiragana |
43 | ↓ | | | | |
44 | Turn IME off | Off | Hiragana | Off | Hiragana |
45 | ↓ | | | | |
46 | Enter Halfwidth Katakan field | On | Halfwidth Katakana | Off | Hiragana |
47
48 When on/off mode and/or conversion mode that are visible from Mozc is changed by InputScope, Mode Indicator will be popped up near the caret location so that a user can immediately get to know the new input mode.
49
50 Scope
51 -----
52
53 InputScope has been supported in the following frameworks and environment:
54
55 * Windows Presentation Foundation (WPF)
56 * Microsoft Internet Explorer 10 on Windows 8+
57 * Chromium 26+ on Windows Vista and later
58 * Firefox 23+ on Windows Vista and later
59
60 Here is the mapping table from HTML5 input types to InputScope on Windows.
61
62 | HTML5 Forms Input Type | Internet Explorer 10 | Chromium 26 | Firefox 23 |
63 |:-----------------------|:---------------------|:------------|:-----------|
64 | text | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DEFAULT` |
65 | number | `IS_NUMBER` | `IS_NUMBER` | `IS_NUMBER` |
66 | email | `IS_EMAIL_SMTPEMAILADDRESS` | `IS_EMAIL_SMTPEMAILADDRESS` | `IS_EMAIL_SMTPEMAILADDRESS` |
67 | password | `IS_PASSWORD` | `IS_PASSWORD` | `IS_PASSWORD` |
68 | color | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DEFAULT` |
69 | date | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DATE_FULLDATE` |
70 | datetime | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DATE_FULLDATE` |
71 | datetime-local | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DATE_FULLDATE` |
72 | month | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DATE_FULLDATE` |
73 | search | `IS_SEARCH` | `IS_SEARCH` | `IS_SEARCH` |
74 | tel | `IS_TELEPHONE_FULLTELEPHONENUMBER` | `IS_TELEPHONE_FULLTELEPHONENUMBER` | `IS_TELEPHONE_FULLTELEPHONENUMBER`, `IS_TELEPHONE_LOCALNUMBER` |
75 | time | `IS_DEFAULT` | `IS_DEFAULT` | `IS_TIME_FULLTIME` |
76 | url | `IS_URL` | `IS_URL` | `IS_URL` |
77 | week | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DATE_FULLDATE` |
78 | range | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DEFAULT` |
79 | range | `IS_DEFAULT` | `IS_DEFAULT` | `IS_DEFAULT` |
80
81 Chromium OS might want to follow this mapping in future if the feedback to this project is positive. To achieve this, we need to add Chromium version of InputScope into [chrome.input.ime](http://developer.chrome.com/extensions/input.ime.html) API.
82
83 Risk
84 ----
85
86 Some user may dislike this kind of automatic mode changing and want a configuration option to disable it, while it is not configurable yet.
87
88 Production Impact
89 -----------------
90
91 Available only for users who are using Mozc in TSF Mode. This means that only Windows 8+ user will be able to use this feature with Mozc. No impact to all other platforms.
92
93 Release History
94 ---------------
95
96 * Initial release: 1.11.1490.10x dev on Windows
97
98 Reference
99 ---------
100
101 * [Input Scopes - TSF Aware](http://blogs.msdn.com/tsfaware/archive/2007/07/10/input-scopes.aspx)
102 * [Improving Recognition Results - Improving Recognition Results](http://msdn.microsoft.com/en-us/library/ms698133.aspx)
103 * [Input modalities - 4.10.19 Attributes common to form controls - HTML Standard - WhatWG](http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#input-modalities:-the-inputmode-attribute)
104
105 Full list of InputScope (as of Windows 8)
106
107 ```
108 IS_DEFAULT = 0
109 IS_URL = 1
110 IS_FILE_FULLFILEPATH = 2
111 IS_FILE_FILENAME = 3
112 IS_EMAIL_USERNAME = 4
113 IS_EMAIL_SMTPEMAILADDRESS = 5
114 IS_LOGINNAME = 6
115 IS_PERSONALNAME_FULLNAME = 7
116 IS_PERSONALNAME_PREFIX = 8
117 IS_PERSONALNAME_GIVENNAME = 9
118 IS_PERSONALNAME_MIDDLENAME = 10
119 IS_PERSONALNAME_SURNAME = 11
120 IS_PERSONALNAME_SUFFIX = 12
121 IS_ADDRESS_FULLPOSTALADDRESS = 13
122 IS_ADDRESS_POSTALCODE = 14
123 IS_ADDRESS_STREET = 15
124 IS_ADDRESS_STATEORPROVINCE = 16
125 IS_ADDRESS_CITY = 17
126 IS_ADDRESS_COUNTRYNAME = 18
127 IS_ADDRESS_COUNTRYSHORTNAME = 19
128 IS_CURRENCY_AMOUNTANDSYMBOL = 20
129 IS_CURRENCY_AMOUNT = 21
130 IS_DATE_FULLDATE = 22
131 IS_DATE_MONTH = 23
132 IS_DATE_DAY = 24
133 IS_DATE_YEAR = 25
134 IS_DATE_MONTHNAME = 26
135 IS_DATE_DAYNAME = 27
136 IS_DIGITS = 28
137 IS_NUMBER = 29
138 IS_ONECHAR = 30
139 IS_PASSWORD = 31
140 IS_TELEPHONE_FULLTELEPHONENUMBER = 32
141 IS_TELEPHONE_COUNTRYCODE = 33
142 IS_TELEPHONE_AREACODE = 34
143 IS_TELEPHONE_LOCALNUMBER = 35
144 IS_TIME_FULLTIME = 36
145 IS_TIME_HOUR = 37
146 IS_TIME_MINORSEC = 38
147 IS_NUMBER_FULLWIDTH = 39
148 IS_ALPHANUMERIC_HALFWIDTH = 40
149 IS_ALPHANUMERIC_FULLWIDTH = 41
150 IS_CURRENCY_CHINESE = 42
151 IS_BOPOMOFO = 43
152 IS_HIRAGANA = 44
153 IS_KATAKANA_HALFWIDTH = 45
154 IS_KATAKANA_FULLWIDTH = 46
155 IS_HANJA = 47
156 IS_HANGUL_HALFWIDTH = 48
157 IS_HANGUL_FULLWIDTH = 49
158 IS_SEARCH = 50
159 IS_FORMULA = 51
160 IS_SEARCH_INCREMENTAL = 52
161 IS_CHINESE_HALFWIDTH = 53
162 IS_CHINESE_FULLWIDTH = 54
163 IS_NATIVE_SCRIPT = 55
164 ```
165
166 See [InputScope enumeration](http://msdn.microsoft.com/en-us/library/windows/desktop/ms538181.aspx) for details.
0 # Mozc IPC
1
2 ## Abstract
3
4 This document describes why IPC is necessary to run Mozc, and how each
5 implementation should be.
6
7 ## Background
8
9 Mozc is an input method product and it consits with multiple processes
10 to achieve text input. We have "converter" process to maintain
11 conversions and "renderer" process to render the candidates of input.
12
13 ## Implementation requirements
14
15 Mozc IPC call happens for EVERY key events. Thus we need to care the
16 privacy/security. Currently we adopt following policy:
17
18 * the IPC name has to be private to the user: processes which run with another user's auth must not access to the IPC.
19 * the IPC name has to be safe to squatters. For example, using random IPC name will reduce the danger of squatters.
20
21 In addition, Mozc IPC call is "one-shot". It doesn't require any
22 "connections". When a key event arrives to Mozc, it creates an
23 IPCClient instance, calls Call() method to send the command to the
24 server, gets its response, and then destroy IPCClient object.
25
26 So you don't need to care the maintenance of connections, but you need
27 to care the performance a bit. If one of a step during this is very
28 slow, it will damage the performance of Mozc.
29
30 Note that IPC calls happen only when a user presses a key or clicks
31 mouses. So if performance of an implementation is not the best, it
32 might not be a problem. Please think about the balance of
33 implementation and security.
0 Surrounding Text Support in Mozc
1 ================================
2
3 Objective
4 ---------
5
6 Utilize surrounding text information to achieve more efficient and intelligent text input experience.
7
8 Design Highlights
9 -----------------
10
11 ### Temporary history invalidation
12
13 Mozc converter internally maintains history segments mainly for users who input Japanese sentence with segments in fragments segments. Imagine that a user input an example sentence “今日は良い天気です” as 3 segments as follows.
14
15 1. kyouha (今日は) -> convert -> commit
16 1. yoi (良い) -> convert -> commit
17 1. tennkidesu (天気です) -> convert -> commit
18
19 At the step 3, Mozc converter takes the result of 1 and 2 into consideration when "tennkidesu" is converted. However, this approach may not work well when the caret position is moved but the Mozc converter cannot notice it. In order to work around this situation, Mozc converter can read the preceding text and check if the internal history information is consistent with the preceding text. If they are inconsistent, history segments should be invalidated.
20
21 ### History reconstruction
22
23 In order to improve the conversion quality when preceding text and history segment are mismatched, it would be nice if we can reconstruct (or emulate) history segments from the preceding text.
24
25 In this project, reconstruct segments that consists of only number or alphabet as a first step. Reconstructing more variety of tokens will be future work.
26
27 Following table describe the mappings from a preceding text to key/value and POS (Part-of-speech) ID.
28
29 | Preceding Text | Key | Value | POS |
30 |:-------------------|:--------|:----------|:--------|
31 | "10" | "10" | "10" | Number |
32 | "10 " | "10" | "10" | Number |
33 | "1 10 " | "10" | "10" | Number |
34 | "C60" | "60" | "60" | Number |
35 | "abc" | "abc" | "abc" | UniqueNoun |
36 | "this is" | "is" | "is" | UniqueNoun |
37 | "あ" | N/A | N/A | N/A |
38
39 Scope
40 -----
41
42 Here is the list of typical cases when preceding text and history segment are mismatched.
43
44 * Multiple users are writing the same document. (e.g. Google Document)
45 * A user prefers to turn IME off when he/she input alphanumeric characters. e.g. He/she inputs "今日は Andy に会う" as following steps:
46 1. Turn IME on
47 1. Type "kyouha" then convert it to "今日は"
48 1. Turn IME off
49 1. Type " Andy "
50 1. Turn IME on
51 1. Type "niau" then convert it to "に会う"
52 * Caret position is moved by mouse.
53
54 Surrounding text has been available in the following OSes and frameworks:
55 * Windows OS
56 * Microsoft Internet Explorer
57 * Google Chrome 17+
58 * Mozilla Firefox
59 * Microsoft Office
60 * Windows Presentation Foundation (WPF)
61 * Apple OS X
62 * Android OS
63 * Chromium OS
64
65 Here is the list of other possible usages of surrounding text in future projects.
66
67 * Language detection.
68 * Character width (narrow/wide) adjustment.
69 * Personal name recognition (e.g., SNS screen names)
70
71 Risk
72 ----
73
74 Some buggy applications that wrongly handle surrounding text event may become unstable. Basically there should be no privacy risk because applications are expected to hide sensitive text such as password from IME.
75
76 Production Impact
77 -----------------
78
79 Available on Windows, Apple OS X, Chromium OS and Linux desktop. No impact for Android platform.
80
81 Release History
82 ---------------
83
84 * Initial release: 1.11.1490.10x
85
86 Reference
87 ---------
88
89 * [chrome.input.ime](http://developer.chrome.com/extensions/input.ime.html)
0 Release History
1 ===============
2
3 2.17.2073.102 - 2.17.2095.102 / *2015-04-11* - *2015-05-10*
4 --------------------------------------------------
5 You can check out Mozc [2.17.2095.102](https://github.com/google/mozc/commit/321e0656b0f2e233ab1c164bd86c58568c9e92f2) as follows.
6
7 ```
8 gclient sync --revision=321e0656b0f2e233ab1c164bd86c58568c9e92f2
9 ```
10
11 Summary of changes between [2.17.2073.102](https://github.com/google/mozc/commit/0556a8bd57014f05583bc001d57b4b64aac00a47) and [2.17.2095.102](https://github.com/google/mozc/commit/321e0656b0f2e233ab1c164bd86c58568c9e92f2).
12
13 * DEPS changes:
14 * GYP repository is switched from code.google.com to chromium.googlesource.com.
15 * ZLib repository is switched from src.chromium.org to github.com/madler/zlib.
16 * Build related changes:
17 * Reference build Docker image is switched from Ubuntu 14.04.1 to Ubuntu 14.04.2.
18 * Fix build breakage in Android since [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68).
19 * Add Dockerfile based on Fedora 21 to build Mozc for Android, NaCl, and Linux desktop.
20 * Continuous build is available for OS X and Windows.
21 * OS X: [Travis CI](https://travis-ci.org/google/mozc/)
22 * Windows: [AppVeyor](https://ci.appveyor.com/project/google/mozc)
23 * Major changes:
24 * Update system dictionary.
25 * Support rule-based zero query suggestion in [2.16.2080.102](https://github.com/google/mozc/commit/988392a0c821494fee2d90090cdca4c3c98bcf83).
26 * Known issues:
27 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
28 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
29 * Fixed issues:
30 * none
31 * Total commits:
32 * [28 commits](https://github.com/google/mozc/compare/20c1c08d7d4e89530e3e42db3476d682981c2b68...321e0656b0f2e233ab1c164bd86c58568c9e92f2).
33
34
35 2.16.2038.102 - 2.16.2072.102 / *2015-01-31* - *2015-03-15*
36 --------------------------------------------------
37 You can check out Mozc [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68) as follows.
38
39 ```
40 gclient sync --revision=20c1c08d7d4e89530e3e42db3476d682981c2b68
41 ```
42
43 Summary of changes between [2.16.2038.102](https://github.com/google/mozc/commit/6895df10f02dafb86150da8a3cc65f051f70e054) and [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68).
44
45 * DEPS changes:
46 * none
47 * Build related changes:
48 * [#286](https://github.com/google/mozc/issues/286): Clang 3.4 on Ubuntu 14.04 is used when building host binaries Mozc in Android, NaCl, and Linux desktop builds. See [#286](https://github.com/google/mozc/issues/286) about why we have switched back to Clang 3.4 from Clang 3.5 on Ubuntu 14.04.
49 * Pepper 40 SDK is required to build Mozc for NaCl.
50 * Android 5.1 Lollipop SDK (or higher) is required to build Mozc for Android.
51 * Major changes:
52 * Target API level of Android binaries are incremented to 22, that is, `Build.VERSION_CODES.LOLLIPOP_MR1` a.k.a. Android 5.1.
53 * LOUDS Trie engine was rewritten for better performance and maintainability.
54 * `python build_mozc.py runtests` is now supported in Windows.
55 * Known issues:
56 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
57 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
58 * Fixed issues:
59 * [#286](https://github.com/google/mozc/issues/286): FIX: Build fails if clang-3.5 package is used in Ubuntu 14.04
60 * Total commits:
61 * [33 commits](https://github.com/google/mozc/compare/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a...20c1c08d7d4e89530e3e42db3476d682981c2b68).
62
63
64 2.16.2021.102 - 2.16.2037.102 / *2015-01-24* - *2015-01-25*
65 --------------------------------------------------
66 You can check out Mozc [2.16.2037.102](https://github.com/google/mozc/commit/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a) as follows.
67
68 ```
69 gclient sync --revision=091dc3bafa1645432dd9b8ba1ba0f77645d39c1a
70 ```
71
72 Summary of changes between [2.16.2021.102](https://github.com/google/mozc/commit/f78dad8d2c16d77f20577f04c2fa95ed85c386cb) and [2.16.2037.102](https://github.com/google/mozc/commit/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a).
73
74 * DEPS changes:
75 * none
76 * Build related changes:
77 * libc++ is used by default to build Android target binaries.
78 * [#276](https://github.com/google/mozc/issues/276): Clang 3.5 is now required to build Mozc for Android, NaCl, and Linux.
79 * Visual C++ 2013 is required to build Mozc for Windows.
80 * Major changes:
81 * [#277](https://github.com/google/mozc/issues/277): Mozc for Windows now requires Windows Vista SP2 and later. Mozc [2.16.2034.102](https://github.com/google/mozc/commit/389932c227827de7fcd17a217de96c5b5a838672) is the last version that can run on Windows XP and Windows 2003 Server.
82 * Known issues:
83 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
84 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
85 * Fixed issues:
86 * [#274](https://github.com/google/mozc/issues/274): FIX: Inconsistency between suggestion candidates and conversion candidates
87 * [#275](https://github.com/google/mozc/issues/275): FIX: Learning algorithm is sometimes too aggressive when punctuation is committed
88 * [#276](https://github.com/google/mozc/issues/276): FIX: Require Clang to build Linux host binaries
89 * [#277](https://github.com/google/mozc/issues/277): FIX: Discontinue the support of Windows XP/2003 Server
90 * Total commits:
91 * [17 commits](https://github.com/google/mozc/compare/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b...091dc3bafa1645432dd9b8ba1ba0f77645d39c1a).
92
93
94 2.16.2008.102 - 2.16.2020.102 / *2015-01-01* - *2015-01-18*
95 --------------------------------------------------
96 You can check out Mozc [2.16.2020.102](https://github.com/google/mozc/commit/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b) as follows.
97
98 ```
99 gclient sync --revision=5c96a77a0454f5877153d18d8a7ca5a5ddfb964b
100 ```
101
102 Summary of changes between [2.16.2008.102](https://github.com/google/mozc/commit/60de3075dde2ff1903aa820a7f9110455e3091c7) and [2.16.2020.102](https://github.com/google/mozc/commit/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b).
103
104 * DEPS changes:
105 * protobuf: [bba83652e1be610bdb7ee1566ad18346d98b843c -> 172019c40bf548908ab09bfd276074c929d48415](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c) (downgrading)
106 * Build related changes:
107 * Ubuntu 14.04 is used as the reference build/test environment for Android, `NaCl`, and Linux. Hereafter we will not make sure that Mozc can be built on Ubuntu 12.04.
108 * Known issues:
109 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
110 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
111 * Fixed issues:
112 * [#265](https://github.com/google/mozc/issues/265): FIX: All resources are not released in Service.onDestory
113 * [#266](https://github.com/google/mozc/issues/266): FIX: Many emojis are suggested from space
114 * [#267](https://github.com/google/mozc/issues/267): FIX: Noisy candidate "itsumo" due to language aware conversion
115 * [#269](https://github.com/google/mozc/issues/269): FIX: BuildInDocker fails when building for Android
116 * [#271](https://github.com/google/mozc/issues/271): FIX: Runtime CHECK failure on Windows: protobuf/src/google/protobuf/descriptor.cc:1018
117 * [#272](https://github.com/google/mozc/issues/272): FIX: `AssertionError` in `gen_zip_code_seed.py`
118 * Total commits:
119 * [13 commits](https://github.com/google/mozc/compare/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82...5c96a77a0454f5877153d18d8a7ca5a5ddfb964b).
120
121
122 2.16.2004.102 - 2.16.2007.102 / *2014-12-22* - *2014-12-24*
123 --------------------------------------------------
124 You can check out Mozc [2.16.2007.102](https://github.com/google/mozc/commit/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82) as follows.
125
126 ```
127 gclient sync --revision=1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82
128 ```
129
130 Summary of changes between [2.16.2004.102](https://github.com/google/mozc/commit/70aa0ddaf4a1e57daccb10797d3afee433f174f6) and [2.16.2007.102](https://github.com/google/mozc/commit/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82).
131
132 * DEPS changes:
133 * fontTools: initial import as of [5ba7d98a4153fad57258fca23b0bcb238717aec3](https://github.com/googlei18n/fonttools/compare/a8f3feacb0e197c00f3f1c236777748a4dc6cf64...5ba7d98a4153fad57258fca23b0bcb238717aec3)
134 * Build related changes:
135 * Android build requires Android-21 SDK
136 * Major changes:
137 * Enable Material Theme on Android
138 * Support floating window and floating mode indicator on Android 5.0 and later when physical keyboard is attached
139 * Improve accessibility support on Android
140 * Known issues:
141 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
142 * Total commits:
143 * [4 commits](https://github.com/google/mozc/compare/fe635d73050960cdfdb31a11dc3d08f636e14d49...1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82).
144
145
146 2.16.1918.102 - 2.16.2003.102 / *2014-11-09* - *2014-12-21*
147 --------------------------------------------------
148 You can check out Mozc [2.16.2003.102](https://github.com/google/mozc/commit/fe635d73050960cdfdb31a11dc3d08f636e14d49) as follows.
149
150 ```
151 gclient sync --revision=fe635d73050960cdfdb31a11dc3d08f636e14d49
152 ```
153
154 Summary of changes between [2.16.1918.102](https://github.com/google/mozc/commit/b729086960878ccca5f2229a4fc9701e84093583) and [2.16.2003.102](https://github.com/google/mozc/commit/fe635d73050960cdfdb31a11dc3d08f636e14d49).
155
156 * DEPS changes:
157 * gtest: [r692 -> r700](https://code.google.com/p/googletest/source/list?start=700&num=9)
158 * gmock: [r485 -> r501](https://code.google.com/p/googlemock/source/list?start=501&num=17)
159 * gyp: [r1987 -> r2012](https://code.google.com/p/gyp/source/list?start=2012&num=26)
160 * protobuf: [172019c40bf548908ab09bfd276074c929d48415 -> bba83652e1be610bdb7ee1566ad18346d98b843c](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c)
161 * Build related changes:
162 * Android build requires NDK r10d
163 * [#259](https://github.com/google/mozc/issues/259): Android build supports arm64/mips64/x86-64
164 * [#260](https://github.com/google/mozc/issues/260): Android build supports Clang 3.5 and libc++
165 * Versioning scheme for Android is changed. See r439 (on Google Code) for details.
166 * Build time dependency on libzinnia-dev is removed from Android and NaCl builds
167 * Major changes:
168 * Android 2.1 - Android 3.2 are no longer supported
169 * armeabi-v7a is always enabled in arm 32-bit build for Android
170 * Updated main dictionary, Emoji dictionary, emoticon dictionary, and single kanji dictionary
171 * Fixed issues:
172 * [#248](https://github.com/google/mozc/issues/248): FIX: IME crashes when using US International hardware keyboard
173 * [#255](https://github.com/google/mozc/issues/255): FIX: ibus-mozc + XIM: preedit text is not cleared after preedit commit triggered by focus change
174 * [#257](https://github.com/google/mozc/issues/257): FIX: Entering symbol view causes NPE when "Switch Access" accessibility mode is enabled
175 * [#261](https://github.com/google/mozc/issues/261): FIX: An empty word can be suggested in the candidate list
176 * Total commits:
177 * [87 commits](https://github.com/google/mozc/compare/026d814598ba223e3becc638b01c79935ea98ee2...fe635d73050960cdfdb31a11dc3d08f636e14d49).
178
179 ---
180
181 Release History of Mozc 1.X
182 ---------------------------
183
184 ##1.0.558.102 - 1.15.1917.102 / *2010-12-09* - *2014-11-03*
185
186 **TODO: Import previous release notes here.**
187
188 Summary of changes between [1.0.558.102](https://github.com/google/mozc/commit/664029b064d23e0520309ec09d89ea5013783ce6) and [1.15.1917.102](https://github.com/google/mozc/commit/026d814598ba223e3becc638b01c79935ea98ee2).
189 * Total commits:
190 * [161 commits](https://github.com/google/mozc/compare/cae073cc74bc31625a659eb91e95d557cb2a6428...026d814598ba223e3becc638b01c79935ea98ee2).
191
192 ---
193
194 Release History of Mozc 0.X
195 ---------------------------
196
197 ##0.11.347.100 - 0.13.523.102 / *2010-05-10* - *2010-11-02*
198
199 **TODO: Import previous release notes here.**
200
201 Summary of changes between [0.11.347.100](https://github.com/google/mozc/commit/0fdb7a7b04bdbbc640058e1856b278e668a69b1e) and [0.13.523.102](https://github.com/google/mozc/commit/cae073cc74bc31625a659eb91e95d557cb2a6428).
202 * Total commits:
203 * [17 commits](https://github.com/google/mozc/compare/1d6e951d92680d30e1a41c16e8fa74eed4039098...cae073cc74bc31625a659eb91e95d557cb2a6428).