Codebase list mozc / 1c81210
Rename doc/ to docs/ This CL renames doc to docs/ on GitHub, just in case in future we want to expose web pages on GitHub Pages [1]. [1]: https://github.com/blog/2228-simpler-github-pages-publishing BUG= TEST= REF_BUG= REF_CL=130706872 REF_TIME=2016-08-18T18:22:05-07:00 REF_TIME_RAW=1471569725 -0700 Yohei Yukawa 7 years ago
19 changed file(s) with 1225 addition(s) and 1225 deletion(s). Raw diff Collapse all Expand all
2525
2626 In this repository, *Mozc* means the second definition unless otherwise noted.
2727
28 Detailed differences between Google Japanese Input and Mozc are described in [About Branding](doc/about_branding.md).
28 Detailed differences between Google Japanese Input and Mozc are described in [About Branding](docs/about_branding.md).
2929
3030 Build Instructions
3131 ------------------
3232
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.
33 * [How to build Mozc in Docker](docs/build_mozc_in_docker.md): Android, NaCl, and Linux desktop builds.
34 * [How to build Mozc in OS X](docs/build_mozc_in_osx.md): OS X build.
35 * [How to build Mozc in Windows](docs/build_mozc_in_windows.md): Windows build.
3636
3737 Release Plan
3838 ------------
3939
4040 tl;dr. **There is no stable version.**
4141
42 As described in [About Branding](doc/about_branding.md) page, Google does
42 As described in [About Branding](docs/about_branding.md) page, Google does
4343 not promise any official QA for OSS Mozc project. Because of this,
4444 Mozc does not have a concept of *Stable Release*. Instead we change version
4545 number every time when we introduce non-trivial change. If you are
4747 based on Mozc, feel free to pick up any version. They should be equally
4848 stable (or equally unstable) in terms of no official QA process.
4949
50 [Release History](doc/release_history.md) page may have additional
50 [Release History](docs/release_history.md) page may have additional
5151 information and useful links about recent changes.
5252
5353 License
+0
-25
doc/about_branding.md less more
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
-122
doc/build_mozc_in_docker.md less more
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/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 23 Docker container
19 Fedora 23 container is also provided just for your reference.
20
21 Building Mozc for Android is not supported on Fedora 23 due to the lack of OpenJDK 1.7 support. See [Red Hat Bugzilla – Bug 1190137](https://bugzilla.redhat.com/show_bug.cgi?id=1190137) for details.
22 ```
23 mkdir fedora23 && cd fedora23
24 curl -O https://raw.githubusercontent.com/google/mozc/master/docker/fedora23/Dockerfile
25 sudo docker build --rm -t $USER/mozc_fedora23 .
26 sudo docker run --interactive --tty --rm $USER/mozc_fedora23
27 ```
28
29 ### Hint
30 Don't forget to rebuild Docker container when Dockerfile is updated.
31
32 # Build in the container
33 Before explaining detailed build configurations and options, let's walk through the simplest cases to see how it looks like.
34
35 ### Build Mozc for Android:
36
37 ```
38 python build_mozc.py gyp --target_platform=Android
39 python build_mozc.py build -c Debug android/android.gyp:apk
40 ```
41
42 ### Build Mozc for NaCl:
43
44 ```
45 python build_mozc.py gyp --target_platform=NaCl --nacl_sdk_root=$NACL_SDK_ROOT
46 python build_mozc.py build -c Release chrome/nacl/nacl_extension.gyp:nacl_mozc
47 ```
48
49 ### Build Mozc for Linux Desktop:
50
51 ```
52 python build_mozc.py gyp --target_platform=Linux
53 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
54 ```
55
56 You can also run unittests as follows.
57
58 ```
59 python build_mozc.py runtests -c Debug
60 ```
61
62 ## Build configurations
63 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.
64
65 ```
66 [GYP_DEFINES="..."] python build_mozc.py gyp [options]
67 ```
68
69 ### GYP_DEFINES
70 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.
71 Here are examples of GYP variables that you may want to change for Linux desktop build.
72
73 * `document_dir`: Directory path where Mozc's license file is placed
74 * `ibus_mozc_path`: ibus-mozc executable path
75 * `ibus_mozc_icon_path`: ibus-mozc icon path
76 * `zinnia_model_file`: Zinnia's model data path
77
78 Note that you can specify multiple GYP variables as follows.
79
80 ```
81 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
82 ```
83
84 ### command line options
85 You can find many command line options as follows.
86 ```
87 python build_mozc.py gyp --help
88 ```
89 Here we show some notable options.
90
91 #### --target_platform
92 You can use `--target_platform` option to specify the target OS on which Mozc will run. Following options are available.
93
94 * `Android`
95 * `NaCl`
96 * `Linux` (default)
97
98 If you don't specify this option, `--target_platform=Linux` will be used implicitly.
99
100 #### --noqt (Linux desktop target only)
101 You can use `--noqt` option to build Mozc without depending on Qt 4 library.
102
103 #### --server_dir (Linux desktop target only)
104 You can use `--server_dir` option to specify the directory name where `mozc_server` will be installed.
105
106 ## Compile options
107 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.
108
109 ```
110 python build_mozc.py build -c {Release, Debug} [gyp_path_1.gyp:gyp_target_name1] [gyp_path_2.gyp:gyp_target_name2]
111 ```
112
113 ## Android specific topics
114
115 ### Application package name
116
117 **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.
118
119 ### zipalign
120
121 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
-82
doc/build_mozc_in_osx.md less more
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
11 * Xcode
12 * [Ninja](https://github.com/ninja-build/ninja)
13 * [Qt4](https://download.qt.io/official_releases/qt/4.8/)
14
15 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.
16
17 # Get the Code
18
19 You can download Mozc source code as follows:
20
21 ```
22 mkdir -p ~/work
23 cd ~/work
24 git clone https://github.com/google/mozc.git -b master --single-branch --recursive
25 ```
26
27 # Compilation
28
29 First, you'll need to generate Xcode project using a tool called [GYP](https://chromium.googlesource.com/external/gyp).
30
31 ```
32 cd ~/work/mozc/src
33 GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --noqt
34 ```
35
36 You can customize the SDK version and target OS version here. Then, build Mozc.app and necessary files:
37
38 ```
39 python build_mozc.py build -c Release mac/mac.gyp:GoogleJapaneseInput mac/mac.gyp:gen_launchd_confs
40 ```
41
42 # Executables
43
44 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.
45
46 # GUI tools
47
48 To build GUI tools, you need to specify --qtdir instead of --noqt.
49
50 ```
51 GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --qtdir ~/myqt
52 ```
53
54 In the above case, `~/myqt` should contain Qt's sources, headers and libraries built from `configure` and `make`.
55
56 Then you can build `executable`s defined in `gui/gui.gyp`. Here is an example to build the config dialog.
57
58 ```
59 python build_mozc.py build -c Release gui/gui.gyp:config_dialog_main
60 ```
61
62 These executables are linked with the libraries in `~/myqt`. You might want to change it with `install_name_tool`.
63
64
65 # Clean up the Tree
66
67 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
68
69 ```
70 python build_mozc.py clean
71 ```
72
73 # Install built packages
74
75 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.
76
77 ```
78 sudo cp -r out_mac/Release/Mozc.app /Library/Input\ Methods/
79 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Converter.plist /Library/LaunchAgents
80 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Renderer.plist /Library/LaunchAgents
81 ```
+0
-247
doc/build_mozc_in_windows.md less more
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 7 and later, including 32-bit Windows.
6
7 # Software Requirements
8
9 Building Mozc on Windows requires the following software.
10
11 * [Visual Studio 2015 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 dependent prebuilt binaries
16
17 If you do not have `git`, `python 2.7`, and `ninja` in your build environment, you can use prebuilt binaries in [depot\_tools](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html). You need to manually unzip `depot_tools.zip` and add the extracted directory into your `PATH`.
18
19 ```
20 set PATH=%PATH%;c:\work\depot_tools
21 ```
22
23 Then run `gclient` command twice so that dependent libraries can be installed automatically.
24
25 ```
26 gclient
27 gclient
28 ```
29
30 # Get the Code
31
32 You can download Mozc source code as follows:
33
34 ```
35 mkdir c:\work
36 cd c:\work
37 git clone https://github.com/google/mozc.git -b master --single-branch --recursive
38 ```
39
40 # Compilation
41
42 First, you'll need to generate Visual C++ project files using a tool called [GYP](https://chromium.googlesource.com/external/gyp).
43
44 ```
45 cd c:\work\mozc\src
46 python build_mozc.py gyp --qtdir=c:\Qt\4.8.0
47 ```
48
49 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.
50
51 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.
52
53 Then, build Mozc binaries:
54
55 ```
56 python build_mozc.py build -c Release package
57 ```
58
59 If you need debug information, you can build debug version of Mozc as follows.
60
61 ```
62 python build_mozc.py build -c Debug package
63 ```
64
65 # Executables
66
67 You have release build binaries in `c:\work\mozc\src\out\Release` and `c:\work\mozc\src\out\Release_x64`.
68
69 # Clean up the Tree
70
71 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
72
73 ```
74 python build_mozc.py clean
75 ```
76
77 # Installation and Uninstallation
78
79 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.
80
81 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.
82
83
84 ---
85
86 ## Install Mozc (32-bit)
87
88 Following files must be placed under %ProgramFiles%\Mozc.
89
90 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
91 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
92 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
93 * `C:\work\mozc\src\out\Release\mozc_server.exe`
94 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
95 * `C:\work\mozc\src\out\ReleaseDynamic\mozc_tool.exe` (if you didn't specify `--noqt` option)
96 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
97 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
98
99 `QtCore4.dll` and `QtGui4.dll` are not required if you specified `--noqt` option into the gyp command.
100
101 ### Register Mozc for IMM32 into 32-bit environment
102
103 Following files must be placed under `%windir%\System32`.
104
105 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
106
107 Finally, you must run `mozc_broker32.exe` with administrator privilege to register IME module as follows.
108
109 ```
110 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=register_ime
111 ```
112
113 ### Register Mozc for TSF into 32-bit environment
114
115 Following file must be placed under `%ProgramFiles%\Mozc`.
116
117 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
118
119 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
120
121 ```
122 regsvr32 "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
123 ```
124
125 ---
126
127 ## Uninstall Mozc (32-bit)
128
129 ### Unregister Mozc for IMM32 from 32-bit environment
130
131 Run `mozc_broker32.exe` with administrator privilege to unregister IME module as follows.
132
133 ```
134 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=unregister_ime
135 ```
136
137 Then delete the following file.
138
139 * `%windir%\System32\mozc_ja.ime`
140
141 ### Unregister Mozc for TSF from 32-bit environment
142
143 Run `regsvr32` with administrator privilege to unregister IME module as follows.
144
145 ```
146 regsvr32 /u "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
147 ```
148
149 ### Uninstall common files of Mozc from 32-bit environment
150
151 Delete following directory and files after unregistering Mozc from IMM32/TSF.
152
153 * `%ProgramFiles%\Mozc\`
154
155 ---
156
157 ## Install Mozc (64-bit)
158
159 Following files must be placed under %ProgramFiles(x86)%\Mozc.
160
161 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
162 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
163 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
164 * `C:\work\mozc\src\out\Release\mozc_server.exe`
165 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
166 * `C:\work\mozc\src\out\ReleaseDynamic\mozc\_tool.exe` (if you didn't specify `--noqt` option)
167 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
168 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
169 * `C:\work\mozc\src\out\Release_x64\mozc_broker64.exe`
170
171 ### Register Mozc for IMM32 into 64-bit environment
172
173 Following files must be placed under `%windir%\System32`.
174
175 * `C:\work\mozc\src\out\Release_x64\mozc_ja.ime`
176
177 Following files must be placed under `%windir%\SysWOW64`.
178
179 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
180
181 Finally, you must run `mozc_broker64.exe` with administrator privilege to register IME module as follows.
182
183 ```
184 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=register_ime
185 ```
186
187 ### Register Mozc for TSF into 64-bit environment
188
189 Following file must be placed under `%ProgramFiles(x86)%\Mozc`.
190
191 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
192 * `C:\work\mozc\src\out\Release_x64\mozc_ja_tip64.dll`
193
194 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
195
196 ```
197 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
198 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
199 ```
200
201 ---
202
203 ## Uninstall Mozc (64-bit)
204
205 ### Unregister Mozc for IMM32 from 64-bit environment
206
207 Run `mozc_broker64.exe` with administrator privilege to unregister IME module as follows.
208
209 ```
210 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=unregister_ime
211 ```
212
213 Then delete the following files.
214
215 * `%windir%\System32\mozc_ja.ime`
216 * `%windir%\SysWOW64\mozc_ja.ime`
217
218 ### Unregister Mozc for TSF from 64-bit environment
219
220 Run `regsvr32` with administrator privilege to unregister IME module as follows.
221
222 ```
223 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
224 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
225 ```
226
227 ### Uninstall common files of Mozc from 64-bit environment
228
229 Delete following directory and files after unregistering Mozc from IMM32/TSF.
230
231 * `%ProgramFiles(x86)%\Mozc\`
232
233 ---
234
235
236 # Run unit tests
237
238 You can run unit tests as follows.
239
240 ```
241 cd c:\work\mozc\src
242 python build_mozc.py gyp --noqt
243 python build_mozc.py runtests -c Release
244 ```
245
246 Note that you can specify `--qtdir=` option instead of `--noqt` in GYP phase since currently there is no unit test that depends on Qt.
+0
-46
doc/design_doc/data_protection.md less more
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
-167
doc/design_doc/input_scope.md less more
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
-34
doc/design_doc/mozc_ipc.md less more
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
-90
doc/design_doc/surrounding_text.md less more
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
-406
doc/release_history.md less more
0 Release History
1 ===============
2
3 2.17.2288.102 - 2.17.2313.102 / *2016-01-03* - *2016-01-10*
4 --------------------------------------------------
5 You can check out Mozc [2.17.2313.102](https://github.com/google/mozc/commit/2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae) as follows.
6
7 ```
8 git clone https://github.com/google/mozc.git -b master --single-branch
9 cd mozc
10 git checkout 2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae
11 git submodule update --init --recursive
12 ```
13
14 Summary of changes between [2.17.2288.102](https://github.com/google/mozc/commit/a86c7d014ac7bf36e06c5567c92ef515b3780783) and [2.17.2313.102](https://github.com/google/mozc/commit/2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae) as follows.
15
16 * Third party libraries:
17 * None.
18 * Build related changes:
19 * None.
20 * Major changes:
21 * Update system dictionary.
22 * Status icons for OS X are updated with Noto font.
23 * Fixed issues:
24 * [#344](https://github.com/google/mozc/issues/344): Support ```icon_prop_key``` entry in ibus-mozc
25 * [#345](https://github.com/google/mozc/issues/345): Mozc for Android keeps crashing
26 * [#347](https://github.com/google/mozc/issues/347): Software keyboard is not rendered correctly on Android 6 if non-material theme is selected
27 * [#350](https://github.com/google/mozc/issues/350): Status icon is not updated when using Windows Store Apps in desktop mode on Windows 10
28 * [#351](https://github.com/google/mozc/issues/351): Mozc cannot be activated in the search box on the task bar when configured to be the default IME on Windows 10
29 * Following issues are not completely fixed yet, but at least worked around.
30 * [#348](https://github.com/google/mozc/issues/348): DirectWrite may fail to render text in certain enviromnents
31 * [#349](https://github.com/google/mozc/issues/349): Word suggestion can be unexpectedly suppressed on Chromium
32 * Total commits:
33 * [29 commits](https://github.com/google/mozc/compare/a86c7d014ac7bf36e06c5567c92ef515b3780783%5E...2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae).
34
35
36 2.17.2285.102 - 2.17.2287.102 / *2016-01-01* - *2016-01-02*
37 --------------------------------------------------
38 You can check out Mozc [2.17.2287.102](https://github.com/google/mozc/commit/ab4569e73bca8d2375262d243f362c7b848646da) as follows.
39
40 ```
41 git clone https://github.com/google/mozc.git -b master --single-branch
42 cd mozc
43 git checkout ab4569e73bca8d2375262d243f362c7b848646da
44 git submodule update --init --recursive
45 ```
46
47 Summary of changes between [2.17.2285.102](https://github.com/google/mozc/commit/4a370c6ea6f003be99e7837713a939a68b75aeae) and [2.17.2287.102](https://github.com/google/mozc/commit/ab4569e73bca8d2375262d243f362c7b848646da) as follows.
48
49 * Third party libraries:
50 * None.
51 * Build related changes:
52 * None.
53 * Major changes:
54 * None.
55 * Fixed issues:
56 * None.
57 * Total commits:
58 * [4 commits](https://github.com/google/mozc/compare/4a370c6ea6f003be99e7837713a939a68b75aeae%5E...ab4569e73bca8d2375262d243f362c7b848646da).
59
60
61 2.17.2241.102 - 2.17.2284.102 / *2015-11-15* - *2015-12-31*
62 --------------------------------------------------
63 You can check out Mozc [2.17.2284.102](https://github.com/google/mozc/commit/be24638ab360c39995ab2c10e34ab9b269e39dac) as follows.
64
65 ```
66 git clone https://github.com/google/mozc.git -b master --single-branch
67 cd mozc
68 git checkout be24638ab360c39995ab2c10e34ab9b269e39dac
69 git submodule update --init --recursive
70 ```
71
72 Summary of changes between [2.17.2241.102](https://github.com/google/mozc/commit/a54fee0095ccc618e6aeb07822fa744f9fcb4fc1) and [2.17.2284.102](https://github.com/google/mozc/commit/be24638ab360c39995ab2c10e34ab9b269e39dac) as follows.
73
74 * Third party libraries:
75 * fontTools: [5ba7d98 -> 8724513](https://github.com/googlei18n/fonttools/compare/5ba7d98a4153fad57258fca23b0bcb238717aec3...8724513a67f954eac56eeb77ced12e27d7c02b6b)
76 * Build related changes:
77 * Reference Dockerfile for Fedora now uses Fedora 23 base image.
78 * Default ```SDKROOT``` for OS X build is switched from ```macosx10.8``` to ```macosx10.9```.
79 * Major changes:
80 * ```CalculatorRewriter``` is now triggered not only by inputs end with ```=``` but also by inputs start with ```=```. For instance, now ```=1+1``` triggers ```CalculatorRewriter```. See the commit message of [5d423b0b](https://github.com/google/mozc/commit/5d423b0ba6989481ad2474c0eaf8c387a2bdfcc9) and its unittests as for how it works.
81 * Performance improvements in LOUDS. See commits [3591f5e7](https://github.com/google/mozc/commit/3591f5e77d8bfb0ba6f1ac839b69eb9e7aa265c9) and [cac14650](https://github.com/google/mozc/commit/cac146508d32fcce1ecfec8d038f63f588ed13c4) for details.
82 * Fixed issues:
83 * [#317](https://github.com/google/mozc/issues/317): session_handler_scenario_test is flaky in Linux build on Travis-CI
84 * [#341](https://github.com/google/mozc/issues/341): ```1d*=``` should not trigger language-aware rewriter
85 * Total commits:
86 * [48 commits](https://github.com/google/mozc/compare/a54fee0095ccc618e6aeb07822fa744f9fcb4fc1%5E...be24638ab360c39995ab2c10e34ab9b269e39dac).
87
88
89 2.17.2124.102 - 2.17.2240.102 / *2015-09-20* - *2015-11-15*
90 --------------------------------------------------
91 You can check out Mozc [2.17.2240.102](https://github.com/google/mozc/commit/95de40fa884d693172605e7283ec82233a908b29) as follows.
92
93 ```
94 git clone https://github.com/google/mozc.git -b master --single-branch
95 cd mozc
96 git checkout 95de40fa884d693172605e7283ec82233a908b29
97 git submodule update --init --recursive
98 ```
99
100 Summary of changes between [2.17.2124.102](https://github.com/google/mozc/commit/0943e518ebff9ddd9390d0ec29509cb0096ac240) and [2.17.2240.102](https://github.com/google/mozc/commit/95de40fa884d693172605e7283ec82233a908b29) as follows.
101
102 * Third party libraries:
103 * gyp: [cdf037c1 -> e2e928ba](https://chromium.googlesource.com/external/gyp/+log/cdf037c1edc0ba3b5d25f8e3973661efe00980cc..e2e928bacd07fead99a18cb08d64cb24e131d3e5)
104 * zinnia: [44dddcf9 -> 814a49b0](https://github.com/taku910/zinnia/compare/44dddcf96c0970a806d666030295706f45cbd045...814a49b031709b34d23898bce47f08dc1b554ec8)
105 * zlib: [50893291](https://github.com/madler/zlib/commit/50893291621658f355bc5b4d450a8d06a563053d) was added to submodules for NaCl build.
106 * Build related changes:
107 * Linux-only build option ```-j```/```--jobs``` was deprecated by [b393fbdc](https://github.com/google/mozc/commit/b393fbdc346a5243ad35eb559d4468a274f2d2d2). See its commit log on how to work around it.
108 * Pepper 45 SDK is required to build Mozc for NaCl.
109 * Docker directory id moved from ```mozc/src/docker/``` to ```mozc/docker/``` by [cfe9a2a5](https://github.com/google/mozc/commit/cfe9a2a5c7576a01fdbbadca43760496a9405ece).
110 * Enabled continuous build for Android, NaCl, and Linux-desktop on [Travis CI](https://travis-ci.org).
111 * Enabled continuous test for OS X and Linux-desktop on [Travis CI](https://travis-ci.org).
112 * ```REGISTER_MODULE_INITIALIZER```, ```REGISTER_MODULE_RELOADER```, ```REGISTER_MODULE_SHUTDOWN_HANDLER```, and ```REGISTER_MODULE_FINALIZER``` were deprecated since they are known as bug-prone. Deprecating them allows us to reduce the number of use of ```Singleton<T>```, which is also known as bug-prone.
113 * [#320](https://github.com/google/mozc/pull/320): ```InitGoogle``` was renamed to ```mozc::InitMozc``` and now declared in ```base/init_mozc.h```. If you have relied on ```InitGoogle```, then you need to 1) include ```base/init_mozc.h``` and 2) replace ```InitGoogle``` with ```mozc::InitMozc```.
114 * Major changes:
115 * ```DateRewriter``` is now able to handle 3-digit. For instance, when converting ```123``` you will see additional candidates such as ```1:23``` and ```01/23```. See the commit message of [f2cc056f](https://github.com/google/mozc/commit/f2cc056fd289bb498703a451b163eb73de217c91) and its unittests for details.
116 * Known issues:
117 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
118 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
119 * [#317](https://github.com/google/mozc/issues/317): session_handler_scenario_test is flaky in Linux build on Travis-CI
120 * Fixed issues:
121 * [#27](https://github.com/google/mozc/issues/27): build fail of ```base/iconv.cc```, FreeBSD
122 * [#219](https://github.com/google/mozc/issues/219): Deprecate ```base/scoped_ptr.h```
123 * [#252](https://github.com/google/mozc/issues/252): Remove dependency on iconv
124 * [#328](https://github.com/google/mozc/issues/328): Partial commit clears remaining composing text in some cases
125 * [#331](https://github.com/google/mozc/issues/331): Predictions on mobile can be too different from conversion result
126 * [#332](https://github.com/google/mozc/issues/332): Clearing user dictionary on the preference app will not take effect immediately
127 * Total commits:
128 * [154 commits](https://github.com/google/mozc/compare/0943e518ebff9ddd9390d0ec29509cb0096ac240%5E...95de40fa884d693172605e7283ec82233a908b29).
129
130
131 2.17.2112.102 - 2.17.2123.102 / *2015-09-05* - *2015-09-19*
132 --------------------------------------------------
133 You can check out Mozc [2.17.2123.102](https://github.com/google/mozc/commit/e398317a086a78c0cf0004505eb8f56586e925b2) as follows.
134
135 ```
136 git clone https://github.com/google/mozc.git -b master --single-branch
137 cd mozc
138 git checkout e398317a086a78c0cf0004505eb8f56586e925b2
139 git submodule update --init --recursive
140 ```
141
142 Summary of changes between [2.17.2112.102](https://github.com/google/mozc/commit/25ae18a0ed595e5fee4bf546f21fbde2386a3da8) and [2.17.2123.102](https://github.com/google/mozc/commit/e398317a086a78c0cf0004505eb8f56586e925b2) as follows.
143
144 * Third party libraries:
145 * breakpad: [962f1b0e (r1391) -> d2904bb4 (r1419)](https://chromium.googlesource.com/breakpad/breakpad/+log/962f1b0e60eca939232dc0d46780da4fdbbcfd85%5E..d2904bb42181bc32c17b26ac4a0604c0e57473cc/)
146 * gtest: [102b5048 (r700) -> 1d53731f (r707)](https://github.com/google/googletest/compare/102b50483a4b515a94a5b1c75db468eb071cf172%5E...1d53731f2c210557caab5660dbe2c578dce6114f)
147 * gmock: [61adbcc5 (r501) -> d478a1f4 (r513)](https://github.com/google/googlemock/compare/61adbcc5c6b8e0385e3e2bf4262771d20a375002%5E...d478a1f46d51ac2baa3f3b3896139897f24dc2d1)
148 * zinnia: [b84ad858 (0.0.4) -> 44dddcf9 (0.0.6)](https://github.com/taku910/zinnia/compare/7bdc645d7212c51d4bba234acea9ae0c6da2bbb8...44dddcf96c0970a806d666030295706f45cbd045)
149 * Repository URL changes:
150 * [GoogleCode] googlemock -> [GitHub] google/googlemock
151 * [GoogleCode] googletest -> [GitHub] google/googletest
152 * [GoogleCode] google-breakpad -> chromium.googlesource.com/breakpad/breakpad
153 * [GoogleCode] japanese-usage-dictionary -> [GitHub] hiroyuki-komatsu/japanese-usage-dictionary
154 * [SourceForge] zinnia -> [GitHub] taku910/zinnia
155 * `src/DEPS` was deprecated and removed. We use `git submodule` to track and check out dependent third party source code.
156 * WTL is directly imported under `src/third_party` so as not to depend on subversion.
157 * Build related changes:
158 * Zinnia is now built from source and linked statically by default. To link to system-installed Zinnia, specify `GYP_DEFINES="use_libzinnia=1"`. Note that `build_mozc.py gyp --use_zinnia` is also deprecated.
159 * Major changes:
160 * Windows build now supports hand-writing with Zinnia.
161 * Known issues:
162 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
163 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
164 * Fixed issues:
165 * [#299](https://github.com/google/mozc/issues/299): Stop depending on subversion repositories in DEPS file
166 * [#300](https://github.com/google/mozc/pull/300): Replace gclient/DEPS with git sub-modules
167 * Total commits:
168 * [16 commits](https://github.com/google/mozc/compare/25ae18a0ed595e5fee4bf546f21fbde2386a3da8%5E...e398317a086a78c0cf0004505eb8f56586e925b2).
169
170
171 2.17.2094.102 - 2.17.2111.102 / *2015-05-10* - *2015-08-15*
172 --------------------------------------------------
173 You can check out Mozc [2.17.2111.102](https://github.com/google/mozc/commit/d7b6196aeac52dd908ca051ba65e97b389f4503a) as follows.
174
175 ```
176 gclient sync --revision=d7b6196aeac52dd908ca051ba65e97b389f4503a
177 ```
178
179 Summary of changes between [2.17.2094.102](https://github.com/google/mozc/commit/c57a78e2b84880718f2621b9e8e4791419bee923) and [2.17.2111.102](https://github.com/google/mozc/commit/d7b6196aeac52dd908ca051ba65e97b389f4503a).
180
181 * DEPS changes:
182 * none
183 * Build related changes:
184 * Android build requires NDK r10e.
185 * `*.proto` files are moved to `src/protocol/` to simplify build dependency. Downstream projects may need to update include path and/or `.gyp` file accordingly.
186 * Commit hashes between 2.17.2098.102 and 2.17.2106.102 were once changed [#292](https://github.com/google/mozc/issues/292).
187 * Possible build failures in releases from 2.17.2099.102 (dbe800583e5676896ce603494ef3b306f38f7b85) to 2.17.2106.102 (3648b9bf06d5d9b36bed2425640bfd18ae05b588) due to [#295](https://github.com/google/mozc/issues/295).
188 * Major changes:
189 * ibus-mozc no longer enables `undo-commit` unless `IBUS_CAP_SURROUNDING_TEXT` is specified (0796f5143400e2beb3d18156ae426f8ce06b0c0d).
190 * ibus-mozc no longer tries to align suggestion window to the left edge of the composing text (9fbcdd5e27cf26ff16d72bd2d92f269334912ede).
191 * Known issues:
192 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
193 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
194 * Fixed issues:
195 * [#243](https://github.com/google/mozc/issues/243): ibus predict window is shown at the previous cursor position
196 * [Mozilla Bug 1120851](https://bugzilla.mozilla.org/show_bug.cgi?id=1120851): Candidate window sometimes doesn't set correct position with ibus + mozc when starting composition
197 * [#254](https://github.com/google/mozc/issues/254): Preedit and candidate changes buffer modification flag
198 * [#291](https://github.com/google/mozc/issues/291): Fix a typo
199 * [#295](https://github.com/google/mozc/issues/295): Possible build failure due to missing dependency on `commands_proto` from `key_info_util`
200 * [#296](https://github.com/google/mozc/issues/296): ibus-mozc should enable undo-commit if and only if `IBUS_CAP_SURROUNDING_TEXT` is set
201 * Total commits:
202 * [24 commits](https://github.com/google/mozc/compare/c57a78e2b84880718f2621b9e8e4791419bee923...d7b6196aeac52dd908ca051ba65e97b389f4503a).
203
204
205 2.17.2073.102 - 2.17.2095.102 / *2015-04-11* - *2015-05-10*
206 --------------------------------------------------
207 You can check out Mozc [2.17.2095.102](https://github.com/google/mozc/commit/321e0656b0f2e233ab1c164bd86c58568c9e92f2) as follows.
208
209 ```
210 gclient sync --revision=321e0656b0f2e233ab1c164bd86c58568c9e92f2
211 ```
212
213 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).
214
215 * DEPS changes:
216 * GYP repository is switched from code.google.com to chromium.googlesource.com.
217 * ZLib repository is switched from src.chromium.org to github.com/madler/zlib.
218 * Build related changes:
219 * Reference build Docker image is switched from Ubuntu 14.04.1 to Ubuntu 14.04.2.
220 * Fix build breakage in Android since [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68).
221 * Add Dockerfile based on Fedora 21 to build Mozc for Android, NaCl, and Linux desktop.
222 * Continuous build is available for OS X and Windows.
223 * OS X: [Travis CI](https://travis-ci.org/google/mozc/)
224 * Windows: [AppVeyor](https://ci.appveyor.com/project/google/mozc)
225 * Major changes:
226 * Update system dictionary.
227 * Support rule-based zero query suggestion in [2.16.2080.102](https://github.com/google/mozc/commit/988392a0c821494fee2d90090cdca4c3c98bcf83).
228 * Known issues:
229 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
230 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
231 * Fixed issues:
232 * none
233 * Total commits:
234 * [28 commits](https://github.com/google/mozc/compare/20c1c08d7d4e89530e3e42db3476d682981c2b68...321e0656b0f2e233ab1c164bd86c58568c9e92f2).
235
236
237 2.16.2038.102 - 2.16.2072.102 / *2015-01-31* - *2015-03-15*
238 --------------------------------------------------
239 You can check out Mozc [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68) as follows.
240
241 ```
242 gclient sync --revision=20c1c08d7d4e89530e3e42db3476d682981c2b68
243 ```
244
245 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).
246
247 * DEPS changes:
248 * none
249 * Build related changes:
250 * [#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.
251 * Pepper 40 SDK is required to build Mozc for NaCl.
252 * Android 5.1 Lollipop SDK (or higher) is required to build Mozc for Android.
253 * Major changes:
254 * Target API level of Android binaries are incremented to 22, that is, `Build.VERSION_CODES.LOLLIPOP_MR1` a.k.a. Android 5.1.
255 * LOUDS Trie engine was rewritten for better performance and maintainability.
256 * `python build_mozc.py runtests` is now supported in Windows.
257 * Known issues:
258 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
259 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
260 * Fixed issues:
261 * [#286](https://github.com/google/mozc/issues/286): FIX: Build fails if clang-3.5 package is used in Ubuntu 14.04
262 * Total commits:
263 * [33 commits](https://github.com/google/mozc/compare/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a...20c1c08d7d4e89530e3e42db3476d682981c2b68).
264
265
266 2.16.2021.102 - 2.16.2037.102 / *2015-01-24* - *2015-01-25*
267 --------------------------------------------------
268 You can check out Mozc [2.16.2037.102](https://github.com/google/mozc/commit/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a) as follows.
269
270 ```
271 gclient sync --revision=091dc3bafa1645432dd9b8ba1ba0f77645d39c1a
272 ```
273
274 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).
275
276 * DEPS changes:
277 * none
278 * Build related changes:
279 * libc++ is used by default to build Android target binaries.
280 * [#276](https://github.com/google/mozc/issues/276): Clang 3.5 is now required to build Mozc for Android, NaCl, and Linux.
281 * Visual C++ 2013 is required to build Mozc for Windows.
282 * Major changes:
283 * [#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.
284 * Known issues:
285 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
286 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
287 * Fixed issues:
288 * [#274](https://github.com/google/mozc/issues/274): FIX: Inconsistency between suggestion candidates and conversion candidates
289 * [#275](https://github.com/google/mozc/issues/275): FIX: Learning algorithm is sometimes too aggressive when punctuation is committed
290 * [#276](https://github.com/google/mozc/issues/276): FIX: Require Clang to build Linux host binaries
291 * [#277](https://github.com/google/mozc/issues/277): FIX: Discontinue the support of Windows XP/2003 Server
292 * Total commits:
293 * [17 commits](https://github.com/google/mozc/compare/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b...091dc3bafa1645432dd9b8ba1ba0f77645d39c1a).
294
295
296 2.16.2008.102 - 2.16.2020.102 / *2015-01-01* - *2015-01-18*
297 --------------------------------------------------
298 You can check out Mozc [2.16.2020.102](https://github.com/google/mozc/commit/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b) as follows.
299
300 ```
301 gclient sync --revision=5c96a77a0454f5877153d18d8a7ca5a5ddfb964b
302 ```
303
304 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).
305
306 * DEPS changes:
307 * protobuf: [bba83652e1be610bdb7ee1566ad18346d98b843c -> 172019c40bf548908ab09bfd276074c929d48415](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c) (downgrading)
308 * Build related changes:
309 * 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.
310 * Known issues:
311 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
312 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
313 * Fixed issues:
314 * [#265](https://github.com/google/mozc/issues/265): FIX: All resources are not released in Service.onDestory
315 * [#266](https://github.com/google/mozc/issues/266): FIX: Many emojis are suggested from space
316 * [#267](https://github.com/google/mozc/issues/267): FIX: Noisy candidate "itsumo" due to language aware conversion
317 * [#269](https://github.com/google/mozc/issues/269): FIX: BuildInDocker fails when building for Android
318 * [#271](https://github.com/google/mozc/issues/271): FIX: Runtime CHECK failure on Windows: protobuf/src/google/protobuf/descriptor.cc:1018
319 * [#272](https://github.com/google/mozc/issues/272): FIX: `AssertionError` in `gen_zip_code_seed.py`
320 * Total commits:
321 * [13 commits](https://github.com/google/mozc/compare/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82...5c96a77a0454f5877153d18d8a7ca5a5ddfb964b).
322
323
324 2.16.2004.102 - 2.16.2007.102 / *2014-12-22* - *2014-12-24*
325 --------------------------------------------------
326 You can check out Mozc [2.16.2007.102](https://github.com/google/mozc/commit/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82) as follows.
327
328 ```
329 gclient sync --revision=1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82
330 ```
331
332 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).
333
334 * DEPS changes:
335 * fontTools: initial import as of [5ba7d98a4153fad57258fca23b0bcb238717aec3](https://github.com/googlei18n/fonttools/compare/a8f3feacb0e197c00f3f1c236777748a4dc6cf64...5ba7d98a4153fad57258fca23b0bcb238717aec3)
336 * Build related changes:
337 * Android build requires Android-21 SDK
338 * Major changes:
339 * Enable Material Theme on Android
340 * Support floating window and floating mode indicator on Android 5.0 and later when physical keyboard is attached
341 * Improve accessibility support on Android
342 * Known issues:
343 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
344 * Total commits:
345 * [4 commits](https://github.com/google/mozc/compare/fe635d73050960cdfdb31a11dc3d08f636e14d49...1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82).
346
347
348 2.16.1918.102 - 2.16.2003.102 / *2014-11-09* - *2014-12-21*
349 --------------------------------------------------
350 You can check out Mozc [2.16.2003.102](https://github.com/google/mozc/commit/fe635d73050960cdfdb31a11dc3d08f636e14d49) as follows.
351
352 ```
353 gclient sync --revision=fe635d73050960cdfdb31a11dc3d08f636e14d49
354 ```
355
356 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).
357
358 * DEPS changes:
359 * gtest: [r692 -> r700](https://code.google.com/p/googletest/source/list?start=700&num=9)
360 * gmock: [r485 -> r501](https://code.google.com/p/googlemock/source/list?start=501&num=17)
361 * gyp: [r1987 -> r2012](https://code.google.com/p/gyp/source/list?start=2012&num=26)
362 * protobuf: [172019c40bf548908ab09bfd276074c929d48415 -> bba83652e1be610bdb7ee1566ad18346d98b843c](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c)
363 * Build related changes:
364 * Android build requires NDK r10d
365 * [#259](https://github.com/google/mozc/issues/259): Android build supports arm64/mips64/x86-64
366 * [#260](https://github.com/google/mozc/issues/260): Android build supports Clang 3.5 and libc++
367 * Versioning scheme for Android is changed. See r439 (on Google Code) for details.
368 * Build time dependency on libzinnia-dev is removed from Android and NaCl builds
369 * Major changes:
370 * Android 2.1 - Android 3.2 are no longer supported
371 * armeabi-v7a is always enabled in arm 32-bit build for Android
372 * Updated main dictionary, Emoji dictionary, emoticon dictionary, and single kanji dictionary
373 * Fixed issues:
374 * [#248](https://github.com/google/mozc/issues/248): FIX: IME crashes when using US International hardware keyboard
375 * [#255](https://github.com/google/mozc/issues/255): FIX: ibus-mozc + XIM: preedit text is not cleared after preedit commit triggered by focus change
376 * [#257](https://github.com/google/mozc/issues/257): FIX: Entering symbol view causes NPE when "Switch Access" accessibility mode is enabled
377 * [#261](https://github.com/google/mozc/issues/261): FIX: An empty word can be suggested in the candidate list
378 * Total commits:
379 * [87 commits](https://github.com/google/mozc/compare/026d814598ba223e3becc638b01c79935ea98ee2...fe635d73050960cdfdb31a11dc3d08f636e14d49).
380
381 ---
382
383 Release History of Mozc 1.X
384 ---------------------------
385
386 ##1.0.558.102 - 1.15.1917.102 / *2010-12-09* - *2014-11-03*
387
388 **TODO: Import previous release notes here.**
389
390 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).
391 * Total commits:
392 * [161 commits](https://github.com/google/mozc/compare/cae073cc74bc31625a659eb91e95d557cb2a6428...026d814598ba223e3becc638b01c79935ea98ee2).
393
394 ---
395
396 Release History of Mozc 0.X
397 ---------------------------
398
399 ##0.11.347.100 - 0.13.523.102 / *2010-05-10* - *2010-11-02*
400
401 **TODO: Import previous release notes here.**
402
403 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).
404 * Total commits:
405 * [17 commits](https://github.com/google/mozc/compare/1d6e951d92680d30e1a41c16e8fa74eed4039098...cae073cc74bc31625a659eb91e95d557cb2a6428).
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/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 23 Docker container
19 Fedora 23 container is also provided just for your reference.
20
21 Building Mozc for Android is not supported on Fedora 23 due to the lack of OpenJDK 1.7 support. See [Red Hat Bugzilla – Bug 1190137](https://bugzilla.redhat.com/show_bug.cgi?id=1190137) for details.
22 ```
23 mkdir fedora23 && cd fedora23
24 curl -O https://raw.githubusercontent.com/google/mozc/master/docker/fedora23/Dockerfile
25 sudo docker build --rm -t $USER/mozc_fedora23 .
26 sudo docker run --interactive --tty --rm $USER/mozc_fedora23
27 ```
28
29 ### Hint
30 Don't forget to rebuild Docker container when Dockerfile is updated.
31
32 # Build in the container
33 Before explaining detailed build configurations and options, let's walk through the simplest cases to see how it looks like.
34
35 ### Build Mozc for Android:
36
37 ```
38 python build_mozc.py gyp --target_platform=Android
39 python build_mozc.py build -c Debug android/android.gyp:apk
40 ```
41
42 ### Build Mozc for NaCl:
43
44 ```
45 python build_mozc.py gyp --target_platform=NaCl --nacl_sdk_root=$NACL_SDK_ROOT
46 python build_mozc.py build -c Release chrome/nacl/nacl_extension.gyp:nacl_mozc
47 ```
48
49 ### Build Mozc for Linux Desktop:
50
51 ```
52 python build_mozc.py gyp --target_platform=Linux
53 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
54 ```
55
56 You can also run unittests as follows.
57
58 ```
59 python build_mozc.py runtests -c Debug
60 ```
61
62 ## Build configurations
63 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.
64
65 ```
66 [GYP_DEFINES="..."] python build_mozc.py gyp [options]
67 ```
68
69 ### GYP_DEFINES
70 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.
71 Here are examples of GYP variables that you may want to change for Linux desktop build.
72
73 * `document_dir`: Directory path where Mozc's license file is placed
74 * `ibus_mozc_path`: ibus-mozc executable path
75 * `ibus_mozc_icon_path`: ibus-mozc icon path
76 * `zinnia_model_file`: Zinnia's model data path
77
78 Note that you can specify multiple GYP variables as follows.
79
80 ```
81 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
82 ```
83
84 ### command line options
85 You can find many command line options as follows.
86 ```
87 python build_mozc.py gyp --help
88 ```
89 Here we show some notable options.
90
91 #### --target_platform
92 You can use `--target_platform` option to specify the target OS on which Mozc will run. Following options are available.
93
94 * `Android`
95 * `NaCl`
96 * `Linux` (default)
97
98 If you don't specify this option, `--target_platform=Linux` will be used implicitly.
99
100 #### --noqt (Linux desktop target only)
101 You can use `--noqt` option to build Mozc without depending on Qt 4 library.
102
103 #### --server_dir (Linux desktop target only)
104 You can use `--server_dir` option to specify the directory name where `mozc_server` will be installed.
105
106 ## Compile options
107 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.
108
109 ```
110 python build_mozc.py build -c {Release, Debug} [gyp_path_1.gyp:gyp_target_name1] [gyp_path_2.gyp:gyp_target_name2]
111 ```
112
113 ## Android specific topics
114
115 ### Application package name
116
117 **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.
118
119 ### zipalign
120
121 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
11 * Xcode
12 * [Ninja](https://github.com/ninja-build/ninja)
13 * [Qt4](https://download.qt.io/official_releases/qt/4.8/)
14
15 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.
16
17 # Get the Code
18
19 You can download Mozc source code as follows:
20
21 ```
22 mkdir -p ~/work
23 cd ~/work
24 git clone https://github.com/google/mozc.git -b master --single-branch --recursive
25 ```
26
27 # Compilation
28
29 First, you'll need to generate Xcode project using a tool called [GYP](https://chromium.googlesource.com/external/gyp).
30
31 ```
32 cd ~/work/mozc/src
33 GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --noqt
34 ```
35
36 You can customize the SDK version and target OS version here. Then, build Mozc.app and necessary files:
37
38 ```
39 python build_mozc.py build -c Release mac/mac.gyp:GoogleJapaneseInput mac/mac.gyp:gen_launchd_confs
40 ```
41
42 # Executables
43
44 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.
45
46 # GUI tools
47
48 To build GUI tools, you need to specify --qtdir instead of --noqt.
49
50 ```
51 GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --qtdir ~/myqt
52 ```
53
54 In the above case, `~/myqt` should contain Qt's sources, headers and libraries built from `configure` and `make`.
55
56 Then you can build `executable`s defined in `gui/gui.gyp`. Here is an example to build the config dialog.
57
58 ```
59 python build_mozc.py build -c Release gui/gui.gyp:config_dialog_main
60 ```
61
62 These executables are linked with the libraries in `~/myqt`. You might want to change it with `install_name_tool`.
63
64
65 # Clean up the Tree
66
67 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
68
69 ```
70 python build_mozc.py clean
71 ```
72
73 # Install built packages
74
75 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.
76
77 ```
78 sudo cp -r out_mac/Release/Mozc.app /Library/Input\ Methods/
79 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Converter.plist /Library/LaunchAgents
80 sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Renderer.plist /Library/LaunchAgents
81 ```
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 7 and later, including 32-bit Windows.
6
7 # Software Requirements
8
9 Building Mozc on Windows requires the following software.
10
11 * [Visual Studio 2015 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 dependent prebuilt binaries
16
17 If you do not have `git`, `python 2.7`, and `ninja` in your build environment, you can use prebuilt binaries in [depot\_tools](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html). You need to manually unzip `depot_tools.zip` and add the extracted directory into your `PATH`.
18
19 ```
20 set PATH=%PATH%;c:\work\depot_tools
21 ```
22
23 Then run `gclient` command twice so that dependent libraries can be installed automatically.
24
25 ```
26 gclient
27 gclient
28 ```
29
30 # Get the Code
31
32 You can download Mozc source code as follows:
33
34 ```
35 mkdir c:\work
36 cd c:\work
37 git clone https://github.com/google/mozc.git -b master --single-branch --recursive
38 ```
39
40 # Compilation
41
42 First, you'll need to generate Visual C++ project files using a tool called [GYP](https://chromium.googlesource.com/external/gyp).
43
44 ```
45 cd c:\work\mozc\src
46 python build_mozc.py gyp --qtdir=c:\Qt\4.8.0
47 ```
48
49 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.
50
51 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.
52
53 Then, build Mozc binaries:
54
55 ```
56 python build_mozc.py build -c Release package
57 ```
58
59 If you need debug information, you can build debug version of Mozc as follows.
60
61 ```
62 python build_mozc.py build -c Debug package
63 ```
64
65 # Executables
66
67 You have release build binaries in `c:\work\mozc\src\out\Release` and `c:\work\mozc\src\out\Release_x64`.
68
69 # Clean up the Tree
70
71 To clean up the tree, execute the following. This will remove executables and intermediate files like object files, generated source files, project files, etc.
72
73 ```
74 python build_mozc.py clean
75 ```
76
77 # Installation and Uninstallation
78
79 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.
80
81 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.
82
83
84 ---
85
86 ## Install Mozc (32-bit)
87
88 Following files must be placed under %ProgramFiles%\Mozc.
89
90 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
91 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
92 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
93 * `C:\work\mozc\src\out\Release\mozc_server.exe`
94 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
95 * `C:\work\mozc\src\out\ReleaseDynamic\mozc_tool.exe` (if you didn't specify `--noqt` option)
96 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
97 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
98
99 `QtCore4.dll` and `QtGui4.dll` are not required if you specified `--noqt` option into the gyp command.
100
101 ### Register Mozc for IMM32 into 32-bit environment
102
103 Following files must be placed under `%windir%\System32`.
104
105 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
106
107 Finally, you must run `mozc_broker32.exe` with administrator privilege to register IME module as follows.
108
109 ```
110 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=register_ime
111 ```
112
113 ### Register Mozc for TSF into 32-bit environment
114
115 Following file must be placed under `%ProgramFiles%\Mozc`.
116
117 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
118
119 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
120
121 ```
122 regsvr32 "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
123 ```
124
125 ---
126
127 ## Uninstall Mozc (32-bit)
128
129 ### Unregister Mozc for IMM32 from 32-bit environment
130
131 Run `mozc_broker32.exe` with administrator privilege to unregister IME module as follows.
132
133 ```
134 "%ProgramFiles%\Mozc\mozc_broker32.exe" --mode=unregister_ime
135 ```
136
137 Then delete the following file.
138
139 * `%windir%\System32\mozc_ja.ime`
140
141 ### Unregister Mozc for TSF from 32-bit environment
142
143 Run `regsvr32` with administrator privilege to unregister IME module as follows.
144
145 ```
146 regsvr32 /u "%ProgramFiles%\Mozc\mozc_ja_tip32.dll"
147 ```
148
149 ### Uninstall common files of Mozc from 32-bit environment
150
151 Delete following directory and files after unregistering Mozc from IMM32/TSF.
152
153 * `%ProgramFiles%\Mozc\`
154
155 ---
156
157 ## Install Mozc (64-bit)
158
159 Following files must be placed under %ProgramFiles(x86)%\Mozc.
160
161 * `C:\work\mozc\src\out\Release\mozc_broker32.exe`
162 * `C:\work\mozc\src\out\Release\mozc_cache_service.exe`
163 * `C:\work\mozc\src\out\Release\mozc_renderer.exe`
164 * `C:\work\mozc\src\out\Release\mozc_server.exe`
165 * `C:\work\mozc\src\out\Release\mozc_tool.exe` (if you specified `--noqt` option)
166 * `C:\work\mozc\src\out\ReleaseDynamic\mozc\_tool.exe` (if you didn't specify `--noqt` option)
167 * `C:\work\mozc\src\out\ReleaseDynamic\QtCore4.dll` (not required if you specified `--noqt` option)
168 * `C:\work\mozc\src\out\ReleaseDynamic\QtGui4.dll` (not required if you specified `--noqt` option)
169 * `C:\work\mozc\src\out\Release_x64\mozc_broker64.exe`
170
171 ### Register Mozc for IMM32 into 64-bit environment
172
173 Following files must be placed under `%windir%\System32`.
174
175 * `C:\work\mozc\src\out\Release_x64\mozc_ja.ime`
176
177 Following files must be placed under `%windir%\SysWOW64`.
178
179 * `C:\work\mozc\src\out\Release\mozc_ja.ime`
180
181 Finally, you must run `mozc_broker64.exe` with administrator privilege to register IME module as follows.
182
183 ```
184 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=register_ime
185 ```
186
187 ### Register Mozc for TSF into 64-bit environment
188
189 Following file must be placed under `%ProgramFiles(x86)%\Mozc`.
190
191 * `C:\work\mozc\src\out\Release\mozc_ja_tip32.dll`
192 * `C:\work\mozc\src\out\Release_x64\mozc_ja_tip64.dll`
193
194 Finally, you must run `regsvr32` with administrator privilege to register IME module as follows.
195
196 ```
197 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
198 regsvr32 "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
199 ```
200
201 ---
202
203 ## Uninstall Mozc (64-bit)
204
205 ### Unregister Mozc for IMM32 from 64-bit environment
206
207 Run `mozc_broker64.exe` with administrator privilege to unregister IME module as follows.
208
209 ```
210 "%ProgramFiles(x86)%\Mozc\mozc_broker64.exe" --mode=unregister_ime
211 ```
212
213 Then delete the following files.
214
215 * `%windir%\System32\mozc_ja.ime`
216 * `%windir%\SysWOW64\mozc_ja.ime`
217
218 ### Unregister Mozc for TSF from 64-bit environment
219
220 Run `regsvr32` with administrator privilege to unregister IME module as follows.
221
222 ```
223 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip32.dll"
224 regsvr32 /u "%ProgramFiles(x86)%\Mozc\mozc_ja_tip64.dll"
225 ```
226
227 ### Uninstall common files of Mozc from 64-bit environment
228
229 Delete following directory and files after unregistering Mozc from IMM32/TSF.
230
231 * `%ProgramFiles(x86)%\Mozc\`
232
233 ---
234
235
236 # Run unit tests
237
238 You can run unit tests as follows.
239
240 ```
241 cd c:\work\mozc\src
242 python build_mozc.py gyp --noqt
243 python build_mozc.py runtests -c Release
244 ```
245
246 Note that you can specify `--qtdir=` option instead of `--noqt` in GYP phase since 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.2288.102 - 2.17.2313.102 / *2016-01-03* - *2016-01-10*
4 --------------------------------------------------
5 You can check out Mozc [2.17.2313.102](https://github.com/google/mozc/commit/2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae) as follows.
6
7 ```
8 git clone https://github.com/google/mozc.git -b master --single-branch
9 cd mozc
10 git checkout 2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae
11 git submodule update --init --recursive
12 ```
13
14 Summary of changes between [2.17.2288.102](https://github.com/google/mozc/commit/a86c7d014ac7bf36e06c5567c92ef515b3780783) and [2.17.2313.102](https://github.com/google/mozc/commit/2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae) as follows.
15
16 * Third party libraries:
17 * None.
18 * Build related changes:
19 * None.
20 * Major changes:
21 * Update system dictionary.
22 * Status icons for OS X are updated with Noto font.
23 * Fixed issues:
24 * [#344](https://github.com/google/mozc/issues/344): Support ```icon_prop_key``` entry in ibus-mozc
25 * [#345](https://github.com/google/mozc/issues/345): Mozc for Android keeps crashing
26 * [#347](https://github.com/google/mozc/issues/347): Software keyboard is not rendered correctly on Android 6 if non-material theme is selected
27 * [#350](https://github.com/google/mozc/issues/350): Status icon is not updated when using Windows Store Apps in desktop mode on Windows 10
28 * [#351](https://github.com/google/mozc/issues/351): Mozc cannot be activated in the search box on the task bar when configured to be the default IME on Windows 10
29 * Following issues are not completely fixed yet, but at least worked around.
30 * [#348](https://github.com/google/mozc/issues/348): DirectWrite may fail to render text in certain enviromnents
31 * [#349](https://github.com/google/mozc/issues/349): Word suggestion can be unexpectedly suppressed on Chromium
32 * Total commits:
33 * [29 commits](https://github.com/google/mozc/compare/a86c7d014ac7bf36e06c5567c92ef515b3780783%5E...2628af6995dbbbb9ccdb52d1160db1dbd5ed3bae).
34
35
36 2.17.2285.102 - 2.17.2287.102 / *2016-01-01* - *2016-01-02*
37 --------------------------------------------------
38 You can check out Mozc [2.17.2287.102](https://github.com/google/mozc/commit/ab4569e73bca8d2375262d243f362c7b848646da) as follows.
39
40 ```
41 git clone https://github.com/google/mozc.git -b master --single-branch
42 cd mozc
43 git checkout ab4569e73bca8d2375262d243f362c7b848646da
44 git submodule update --init --recursive
45 ```
46
47 Summary of changes between [2.17.2285.102](https://github.com/google/mozc/commit/4a370c6ea6f003be99e7837713a939a68b75aeae) and [2.17.2287.102](https://github.com/google/mozc/commit/ab4569e73bca8d2375262d243f362c7b848646da) as follows.
48
49 * Third party libraries:
50 * None.
51 * Build related changes:
52 * None.
53 * Major changes:
54 * None.
55 * Fixed issues:
56 * None.
57 * Total commits:
58 * [4 commits](https://github.com/google/mozc/compare/4a370c6ea6f003be99e7837713a939a68b75aeae%5E...ab4569e73bca8d2375262d243f362c7b848646da).
59
60
61 2.17.2241.102 - 2.17.2284.102 / *2015-11-15* - *2015-12-31*
62 --------------------------------------------------
63 You can check out Mozc [2.17.2284.102](https://github.com/google/mozc/commit/be24638ab360c39995ab2c10e34ab9b269e39dac) as follows.
64
65 ```
66 git clone https://github.com/google/mozc.git -b master --single-branch
67 cd mozc
68 git checkout be24638ab360c39995ab2c10e34ab9b269e39dac
69 git submodule update --init --recursive
70 ```
71
72 Summary of changes between [2.17.2241.102](https://github.com/google/mozc/commit/a54fee0095ccc618e6aeb07822fa744f9fcb4fc1) and [2.17.2284.102](https://github.com/google/mozc/commit/be24638ab360c39995ab2c10e34ab9b269e39dac) as follows.
73
74 * Third party libraries:
75 * fontTools: [5ba7d98 -> 8724513](https://github.com/googlei18n/fonttools/compare/5ba7d98a4153fad57258fca23b0bcb238717aec3...8724513a67f954eac56eeb77ced12e27d7c02b6b)
76 * Build related changes:
77 * Reference Dockerfile for Fedora now uses Fedora 23 base image.
78 * Default ```SDKROOT``` for OS X build is switched from ```macosx10.8``` to ```macosx10.9```.
79 * Major changes:
80 * ```CalculatorRewriter``` is now triggered not only by inputs end with ```=``` but also by inputs start with ```=```. For instance, now ```=1+1``` triggers ```CalculatorRewriter```. See the commit message of [5d423b0b](https://github.com/google/mozc/commit/5d423b0ba6989481ad2474c0eaf8c387a2bdfcc9) and its unittests as for how it works.
81 * Performance improvements in LOUDS. See commits [3591f5e7](https://github.com/google/mozc/commit/3591f5e77d8bfb0ba6f1ac839b69eb9e7aa265c9) and [cac14650](https://github.com/google/mozc/commit/cac146508d32fcce1ecfec8d038f63f588ed13c4) for details.
82 * Fixed issues:
83 * [#317](https://github.com/google/mozc/issues/317): session_handler_scenario_test is flaky in Linux build on Travis-CI
84 * [#341](https://github.com/google/mozc/issues/341): ```1d*=``` should not trigger language-aware rewriter
85 * Total commits:
86 * [48 commits](https://github.com/google/mozc/compare/a54fee0095ccc618e6aeb07822fa744f9fcb4fc1%5E...be24638ab360c39995ab2c10e34ab9b269e39dac).
87
88
89 2.17.2124.102 - 2.17.2240.102 / *2015-09-20* - *2015-11-15*
90 --------------------------------------------------
91 You can check out Mozc [2.17.2240.102](https://github.com/google/mozc/commit/95de40fa884d693172605e7283ec82233a908b29) as follows.
92
93 ```
94 git clone https://github.com/google/mozc.git -b master --single-branch
95 cd mozc
96 git checkout 95de40fa884d693172605e7283ec82233a908b29
97 git submodule update --init --recursive
98 ```
99
100 Summary of changes between [2.17.2124.102](https://github.com/google/mozc/commit/0943e518ebff9ddd9390d0ec29509cb0096ac240) and [2.17.2240.102](https://github.com/google/mozc/commit/95de40fa884d693172605e7283ec82233a908b29) as follows.
101
102 * Third party libraries:
103 * gyp: [cdf037c1 -> e2e928ba](https://chromium.googlesource.com/external/gyp/+log/cdf037c1edc0ba3b5d25f8e3973661efe00980cc..e2e928bacd07fead99a18cb08d64cb24e131d3e5)
104 * zinnia: [44dddcf9 -> 814a49b0](https://github.com/taku910/zinnia/compare/44dddcf96c0970a806d666030295706f45cbd045...814a49b031709b34d23898bce47f08dc1b554ec8)
105 * zlib: [50893291](https://github.com/madler/zlib/commit/50893291621658f355bc5b4d450a8d06a563053d) was added to submodules for NaCl build.
106 * Build related changes:
107 * Linux-only build option ```-j```/```--jobs``` was deprecated by [b393fbdc](https://github.com/google/mozc/commit/b393fbdc346a5243ad35eb559d4468a274f2d2d2). See its commit log on how to work around it.
108 * Pepper 45 SDK is required to build Mozc for NaCl.
109 * Docker directory id moved from ```mozc/src/docker/``` to ```mozc/docker/``` by [cfe9a2a5](https://github.com/google/mozc/commit/cfe9a2a5c7576a01fdbbadca43760496a9405ece).
110 * Enabled continuous build for Android, NaCl, and Linux-desktop on [Travis CI](https://travis-ci.org).
111 * Enabled continuous test for OS X and Linux-desktop on [Travis CI](https://travis-ci.org).
112 * ```REGISTER_MODULE_INITIALIZER```, ```REGISTER_MODULE_RELOADER```, ```REGISTER_MODULE_SHUTDOWN_HANDLER```, and ```REGISTER_MODULE_FINALIZER``` were deprecated since they are known as bug-prone. Deprecating them allows us to reduce the number of use of ```Singleton<T>```, which is also known as bug-prone.
113 * [#320](https://github.com/google/mozc/pull/320): ```InitGoogle``` was renamed to ```mozc::InitMozc``` and now declared in ```base/init_mozc.h```. If you have relied on ```InitGoogle```, then you need to 1) include ```base/init_mozc.h``` and 2) replace ```InitGoogle``` with ```mozc::InitMozc```.
114 * Major changes:
115 * ```DateRewriter``` is now able to handle 3-digit. For instance, when converting ```123``` you will see additional candidates such as ```1:23``` and ```01/23```. See the commit message of [f2cc056f](https://github.com/google/mozc/commit/f2cc056fd289bb498703a451b163eb73de217c91) and its unittests for details.
116 * Known issues:
117 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
118 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
119 * [#317](https://github.com/google/mozc/issues/317): session_handler_scenario_test is flaky in Linux build on Travis-CI
120 * Fixed issues:
121 * [#27](https://github.com/google/mozc/issues/27): build fail of ```base/iconv.cc```, FreeBSD
122 * [#219](https://github.com/google/mozc/issues/219): Deprecate ```base/scoped_ptr.h```
123 * [#252](https://github.com/google/mozc/issues/252): Remove dependency on iconv
124 * [#328](https://github.com/google/mozc/issues/328): Partial commit clears remaining composing text in some cases
125 * [#331](https://github.com/google/mozc/issues/331): Predictions on mobile can be too different from conversion result
126 * [#332](https://github.com/google/mozc/issues/332): Clearing user dictionary on the preference app will not take effect immediately
127 * Total commits:
128 * [154 commits](https://github.com/google/mozc/compare/0943e518ebff9ddd9390d0ec29509cb0096ac240%5E...95de40fa884d693172605e7283ec82233a908b29).
129
130
131 2.17.2112.102 - 2.17.2123.102 / *2015-09-05* - *2015-09-19*
132 --------------------------------------------------
133 You can check out Mozc [2.17.2123.102](https://github.com/google/mozc/commit/e398317a086a78c0cf0004505eb8f56586e925b2) as follows.
134
135 ```
136 git clone https://github.com/google/mozc.git -b master --single-branch
137 cd mozc
138 git checkout e398317a086a78c0cf0004505eb8f56586e925b2
139 git submodule update --init --recursive
140 ```
141
142 Summary of changes between [2.17.2112.102](https://github.com/google/mozc/commit/25ae18a0ed595e5fee4bf546f21fbde2386a3da8) and [2.17.2123.102](https://github.com/google/mozc/commit/e398317a086a78c0cf0004505eb8f56586e925b2) as follows.
143
144 * Third party libraries:
145 * breakpad: [962f1b0e (r1391) -> d2904bb4 (r1419)](https://chromium.googlesource.com/breakpad/breakpad/+log/962f1b0e60eca939232dc0d46780da4fdbbcfd85%5E..d2904bb42181bc32c17b26ac4a0604c0e57473cc/)
146 * gtest: [102b5048 (r700) -> 1d53731f (r707)](https://github.com/google/googletest/compare/102b50483a4b515a94a5b1c75db468eb071cf172%5E...1d53731f2c210557caab5660dbe2c578dce6114f)
147 * gmock: [61adbcc5 (r501) -> d478a1f4 (r513)](https://github.com/google/googlemock/compare/61adbcc5c6b8e0385e3e2bf4262771d20a375002%5E...d478a1f46d51ac2baa3f3b3896139897f24dc2d1)
148 * zinnia: [b84ad858 (0.0.4) -> 44dddcf9 (0.0.6)](https://github.com/taku910/zinnia/compare/7bdc645d7212c51d4bba234acea9ae0c6da2bbb8...44dddcf96c0970a806d666030295706f45cbd045)
149 * Repository URL changes:
150 * [GoogleCode] googlemock -> [GitHub] google/googlemock
151 * [GoogleCode] googletest -> [GitHub] google/googletest
152 * [GoogleCode] google-breakpad -> chromium.googlesource.com/breakpad/breakpad
153 * [GoogleCode] japanese-usage-dictionary -> [GitHub] hiroyuki-komatsu/japanese-usage-dictionary
154 * [SourceForge] zinnia -> [GitHub] taku910/zinnia
155 * `src/DEPS` was deprecated and removed. We use `git submodule` to track and check out dependent third party source code.
156 * WTL is directly imported under `src/third_party` so as not to depend on subversion.
157 * Build related changes:
158 * Zinnia is now built from source and linked statically by default. To link to system-installed Zinnia, specify `GYP_DEFINES="use_libzinnia=1"`. Note that `build_mozc.py gyp --use_zinnia` is also deprecated.
159 * Major changes:
160 * Windows build now supports hand-writing with Zinnia.
161 * Known issues:
162 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
163 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
164 * Fixed issues:
165 * [#299](https://github.com/google/mozc/issues/299): Stop depending on subversion repositories in DEPS file
166 * [#300](https://github.com/google/mozc/pull/300): Replace gclient/DEPS with git sub-modules
167 * Total commits:
168 * [16 commits](https://github.com/google/mozc/compare/25ae18a0ed595e5fee4bf546f21fbde2386a3da8%5E...e398317a086a78c0cf0004505eb8f56586e925b2).
169
170
171 2.17.2094.102 - 2.17.2111.102 / *2015-05-10* - *2015-08-15*
172 --------------------------------------------------
173 You can check out Mozc [2.17.2111.102](https://github.com/google/mozc/commit/d7b6196aeac52dd908ca051ba65e97b389f4503a) as follows.
174
175 ```
176 gclient sync --revision=d7b6196aeac52dd908ca051ba65e97b389f4503a
177 ```
178
179 Summary of changes between [2.17.2094.102](https://github.com/google/mozc/commit/c57a78e2b84880718f2621b9e8e4791419bee923) and [2.17.2111.102](https://github.com/google/mozc/commit/d7b6196aeac52dd908ca051ba65e97b389f4503a).
180
181 * DEPS changes:
182 * none
183 * Build related changes:
184 * Android build requires NDK r10e.
185 * `*.proto` files are moved to `src/protocol/` to simplify build dependency. Downstream projects may need to update include path and/or `.gyp` file accordingly.
186 * Commit hashes between 2.17.2098.102 and 2.17.2106.102 were once changed [#292](https://github.com/google/mozc/issues/292).
187 * Possible build failures in releases from 2.17.2099.102 (dbe800583e5676896ce603494ef3b306f38f7b85) to 2.17.2106.102 (3648b9bf06d5d9b36bed2425640bfd18ae05b588) due to [#295](https://github.com/google/mozc/issues/295).
188 * Major changes:
189 * ibus-mozc no longer enables `undo-commit` unless `IBUS_CAP_SURROUNDING_TEXT` is specified (0796f5143400e2beb3d18156ae426f8ce06b0c0d).
190 * ibus-mozc no longer tries to align suggestion window to the left edge of the composing text (9fbcdd5e27cf26ff16d72bd2d92f269334912ede).
191 * Known issues:
192 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
193 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
194 * Fixed issues:
195 * [#243](https://github.com/google/mozc/issues/243): ibus predict window is shown at the previous cursor position
196 * [Mozilla Bug 1120851](https://bugzilla.mozilla.org/show_bug.cgi?id=1120851): Candidate window sometimes doesn't set correct position with ibus + mozc when starting composition
197 * [#254](https://github.com/google/mozc/issues/254): Preedit and candidate changes buffer modification flag
198 * [#291](https://github.com/google/mozc/issues/291): Fix a typo
199 * [#295](https://github.com/google/mozc/issues/295): Possible build failure due to missing dependency on `commands_proto` from `key_info_util`
200 * [#296](https://github.com/google/mozc/issues/296): ibus-mozc should enable undo-commit if and only if `IBUS_CAP_SURROUNDING_TEXT` is set
201 * Total commits:
202 * [24 commits](https://github.com/google/mozc/compare/c57a78e2b84880718f2621b9e8e4791419bee923...d7b6196aeac52dd908ca051ba65e97b389f4503a).
203
204
205 2.17.2073.102 - 2.17.2095.102 / *2015-04-11* - *2015-05-10*
206 --------------------------------------------------
207 You can check out Mozc [2.17.2095.102](https://github.com/google/mozc/commit/321e0656b0f2e233ab1c164bd86c58568c9e92f2) as follows.
208
209 ```
210 gclient sync --revision=321e0656b0f2e233ab1c164bd86c58568c9e92f2
211 ```
212
213 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).
214
215 * DEPS changes:
216 * GYP repository is switched from code.google.com to chromium.googlesource.com.
217 * ZLib repository is switched from src.chromium.org to github.com/madler/zlib.
218 * Build related changes:
219 * Reference build Docker image is switched from Ubuntu 14.04.1 to Ubuntu 14.04.2.
220 * Fix build breakage in Android since [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68).
221 * Add Dockerfile based on Fedora 21 to build Mozc for Android, NaCl, and Linux desktop.
222 * Continuous build is available for OS X and Windows.
223 * OS X: [Travis CI](https://travis-ci.org/google/mozc/)
224 * Windows: [AppVeyor](https://ci.appveyor.com/project/google/mozc)
225 * Major changes:
226 * Update system dictionary.
227 * Support rule-based zero query suggestion in [2.16.2080.102](https://github.com/google/mozc/commit/988392a0c821494fee2d90090cdca4c3c98bcf83).
228 * Known issues:
229 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
230 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
231 * Fixed issues:
232 * none
233 * Total commits:
234 * [28 commits](https://github.com/google/mozc/compare/20c1c08d7d4e89530e3e42db3476d682981c2b68...321e0656b0f2e233ab1c164bd86c58568c9e92f2).
235
236
237 2.16.2038.102 - 2.16.2072.102 / *2015-01-31* - *2015-03-15*
238 --------------------------------------------------
239 You can check out Mozc [2.16.2072.102](https://github.com/google/mozc/commit/20c1c08d7d4e89530e3e42db3476d682981c2b68) as follows.
240
241 ```
242 gclient sync --revision=20c1c08d7d4e89530e3e42db3476d682981c2b68
243 ```
244
245 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).
246
247 * DEPS changes:
248 * none
249 * Build related changes:
250 * [#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.
251 * Pepper 40 SDK is required to build Mozc for NaCl.
252 * Android 5.1 Lollipop SDK (or higher) is required to build Mozc for Android.
253 * Major changes:
254 * Target API level of Android binaries are incremented to 22, that is, `Build.VERSION_CODES.LOLLIPOP_MR1` a.k.a. Android 5.1.
255 * LOUDS Trie engine was rewritten for better performance and maintainability.
256 * `python build_mozc.py runtests` is now supported in Windows.
257 * Known issues:
258 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
259 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
260 * Fixed issues:
261 * [#286](https://github.com/google/mozc/issues/286): FIX: Build fails if clang-3.5 package is used in Ubuntu 14.04
262 * Total commits:
263 * [33 commits](https://github.com/google/mozc/compare/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a...20c1c08d7d4e89530e3e42db3476d682981c2b68).
264
265
266 2.16.2021.102 - 2.16.2037.102 / *2015-01-24* - *2015-01-25*
267 --------------------------------------------------
268 You can check out Mozc [2.16.2037.102](https://github.com/google/mozc/commit/091dc3bafa1645432dd9b8ba1ba0f77645d39c1a) as follows.
269
270 ```
271 gclient sync --revision=091dc3bafa1645432dd9b8ba1ba0f77645d39c1a
272 ```
273
274 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).
275
276 * DEPS changes:
277 * none
278 * Build related changes:
279 * libc++ is used by default to build Android target binaries.
280 * [#276](https://github.com/google/mozc/issues/276): Clang 3.5 is now required to build Mozc for Android, NaCl, and Linux.
281 * Visual C++ 2013 is required to build Mozc for Windows.
282 * Major changes:
283 * [#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.
284 * Known issues:
285 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
286 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
287 * Fixed issues:
288 * [#274](https://github.com/google/mozc/issues/274): FIX: Inconsistency between suggestion candidates and conversion candidates
289 * [#275](https://github.com/google/mozc/issues/275): FIX: Learning algorithm is sometimes too aggressive when punctuation is committed
290 * [#276](https://github.com/google/mozc/issues/276): FIX: Require Clang to build Linux host binaries
291 * [#277](https://github.com/google/mozc/issues/277): FIX: Discontinue the support of Windows XP/2003 Server
292 * Total commits:
293 * [17 commits](https://github.com/google/mozc/compare/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b...091dc3bafa1645432dd9b8ba1ba0f77645d39c1a).
294
295
296 2.16.2008.102 - 2.16.2020.102 / *2015-01-01* - *2015-01-18*
297 --------------------------------------------------
298 You can check out Mozc [2.16.2020.102](https://github.com/google/mozc/commit/5c96a77a0454f5877153d18d8a7ca5a5ddfb964b) as follows.
299
300 ```
301 gclient sync --revision=5c96a77a0454f5877153d18d8a7ca5a5ddfb964b
302 ```
303
304 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).
305
306 * DEPS changes:
307 * protobuf: [bba83652e1be610bdb7ee1566ad18346d98b843c -> 172019c40bf548908ab09bfd276074c929d48415](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c) (downgrading)
308 * Build related changes:
309 * 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.
310 * Known issues:
311 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
312 * [#273](https://github.com/google/mozc/issues/273): Compilation errors in Android arm64 and mips64 build
313 * Fixed issues:
314 * [#265](https://github.com/google/mozc/issues/265): FIX: All resources are not released in Service.onDestory
315 * [#266](https://github.com/google/mozc/issues/266): FIX: Many emojis are suggested from space
316 * [#267](https://github.com/google/mozc/issues/267): FIX: Noisy candidate "itsumo" due to language aware conversion
317 * [#269](https://github.com/google/mozc/issues/269): FIX: BuildInDocker fails when building for Android
318 * [#271](https://github.com/google/mozc/issues/271): FIX: Runtime CHECK failure on Windows: protobuf/src/google/protobuf/descriptor.cc:1018
319 * [#272](https://github.com/google/mozc/issues/272): FIX: `AssertionError` in `gen_zip_code_seed.py`
320 * Total commits:
321 * [13 commits](https://github.com/google/mozc/compare/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82...5c96a77a0454f5877153d18d8a7ca5a5ddfb964b).
322
323
324 2.16.2004.102 - 2.16.2007.102 / *2014-12-22* - *2014-12-24*
325 --------------------------------------------------
326 You can check out Mozc [2.16.2007.102](https://github.com/google/mozc/commit/1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82) as follows.
327
328 ```
329 gclient sync --revision=1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82
330 ```
331
332 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).
333
334 * DEPS changes:
335 * fontTools: initial import as of [5ba7d98a4153fad57258fca23b0bcb238717aec3](https://github.com/googlei18n/fonttools/compare/a8f3feacb0e197c00f3f1c236777748a4dc6cf64...5ba7d98a4153fad57258fca23b0bcb238717aec3)
336 * Build related changes:
337 * Android build requires Android-21 SDK
338 * Major changes:
339 * Enable Material Theme on Android
340 * Support floating window and floating mode indicator on Android 5.0 and later when physical keyboard is attached
341 * Improve accessibility support on Android
342 * Known issues:
343 * [#263](https://github.com/google/mozc/issues/263): Voiced sound marks on the key pad is not placed at correct position in Android
344 * Total commits:
345 * [4 commits](https://github.com/google/mozc/compare/fe635d73050960cdfdb31a11dc3d08f636e14d49...1ffe8c9b56798baf6cac68a6dd6d539e0ccaad82).
346
347
348 2.16.1918.102 - 2.16.2003.102 / *2014-11-09* - *2014-12-21*
349 --------------------------------------------------
350 You can check out Mozc [2.16.2003.102](https://github.com/google/mozc/commit/fe635d73050960cdfdb31a11dc3d08f636e14d49) as follows.
351
352 ```
353 gclient sync --revision=fe635d73050960cdfdb31a11dc3d08f636e14d49
354 ```
355
356 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).
357
358 * DEPS changes:
359 * gtest: [r692 -> r700](https://code.google.com/p/googletest/source/list?start=700&num=9)
360 * gmock: [r485 -> r501](https://code.google.com/p/googlemock/source/list?start=501&num=17)
361 * gyp: [r1987 -> r2012](https://code.google.com/p/gyp/source/list?start=2012&num=26)
362 * protobuf: [172019c40bf548908ab09bfd276074c929d48415 -> bba83652e1be610bdb7ee1566ad18346d98b843c](https://github.com/google/protobuf/compare/172019c40bf548908ab09bfd276074c929d48415...bba83652e1be610bdb7ee1566ad18346d98b843c)
363 * Build related changes:
364 * Android build requires NDK r10d
365 * [#259](https://github.com/google/mozc/issues/259): Android build supports arm64/mips64/x86-64
366 * [#260](https://github.com/google/mozc/issues/260): Android build supports Clang 3.5 and libc++
367 * Versioning scheme for Android is changed. See r439 (on Google Code) for details.
368 * Build time dependency on libzinnia-dev is removed from Android and NaCl builds
369 * Major changes:
370 * Android 2.1 - Android 3.2 are no longer supported
371 * armeabi-v7a is always enabled in arm 32-bit build for Android
372 * Updated main dictionary, Emoji dictionary, emoticon dictionary, and single kanji dictionary
373 * Fixed issues:
374 * [#248](https://github.com/google/mozc/issues/248): FIX: IME crashes when using US International hardware keyboard
375 * [#255](https://github.com/google/mozc/issues/255): FIX: ibus-mozc + XIM: preedit text is not cleared after preedit commit triggered by focus change
376 * [#257](https://github.com/google/mozc/issues/257): FIX: Entering symbol view causes NPE when "Switch Access" accessibility mode is enabled
377 * [#261](https://github.com/google/mozc/issues/261): FIX: An empty word can be suggested in the candidate list
378 * Total commits:
379 * [87 commits](https://github.com/google/mozc/compare/026d814598ba223e3becc638b01c79935ea98ee2...fe635d73050960cdfdb31a11dc3d08f636e14d49).
380
381 ---
382
383 Release History of Mozc 1.X
384 ---------------------------
385
386 ##1.0.558.102 - 1.15.1917.102 / *2010-12-09* - *2014-11-03*
387
388 **TODO: Import previous release notes here.**
389
390 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).
391 * Total commits:
392 * [161 commits](https://github.com/google/mozc/compare/cae073cc74bc31625a659eb91e95d557cb2a6428...026d814598ba223e3becc638b01c79935ea98ee2).
393
394 ---
395
396 Release History of Mozc 0.X
397 ---------------------------
398
399 ##0.11.347.100 - 0.13.523.102 / *2010-05-10* - *2010-11-02*
400
401 **TODO: Import previous release notes here.**
402
403 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).
404 * Total commits:
405 * [17 commits](https://github.com/google/mozc/compare/1d6e951d92680d30e1a41c16e8fa74eed4039098...cae073cc74bc31625a659eb91e95d557cb2a6428).