My Free Software Activities in May 2025

5月のハイライト

今月はそれほど活動的ではなかったが、Debian Installer(GUI版)の日本語フォントの 改善の件が進展したというのが個人的に印象深い。 ローカルビルドされたフォントパッケージがはいるのか、あるいはインストーラーへと 正式にパッケージングされたフォントが組み込まれるのかは定かではないが、Debian 13 (trixie)では それなりにちゃんとした日本語フォントで表示されるはずである。

5月の活動記録

My Free Software Activities in April 2025

4月のハイライト

4月は、Debian Trixieにむけたマイルストーン2のソフトフリーズ期間に突入した。 先月はツールチェインだったが、今月からは一般のパッケージにもフリーズの制限がかかる。 (testingに降ってくるまでに10日間の遅延がautopkgtestがあろうとなかろうと適用される。)

groongaやdeskflowのパッケージの更新をした。

deskflowはソフトフリーズ直前で1.21.2がでたし、gr-frameworkも0.73.14がフリーズ後にリリースされたので追従した。 つぎのHard Freezeは5/15なのでひとまず間に合いそう。

rvmについてはリリースされてからすぐに対応してフィードバックしたので嬉しかった人はいたんじゃないかと思う。 他は、FTBFSな問題について他のパッケージにフィードバックをしたくらいか。最近同僚に触発されてrubocopを覚えたので積極的に試してみている。

UHK 60 v2というキーボードを使ってそれなりに経過したので、備忘録的なものを記事として残しておいた。 トラックポイントポインティングスティック)つきの左右分割キーボードとしては(人を選ぶものの)かなりおすすめできるとは思う。

kenhys.hatenablog.jp

4月の活動記録

Ultimate Hacking Keyboard 60 v2に関する所感

Ultimate Hacking Keyboard 60 v2のレビュー的ななにか

2023年にそれまで使っていたThinkPad USB トラックポイントキーボードに別れを告げ(無論手元には大事にとってある)、 Ultimate Hacking Keyboard 60 v2というキーボードに切り替えた。 これはいわゆる分割(左右分離)できるタイプのキーボードであり、専用のモジュールを追加して機能拡張できるというのが特徴となっているキーボードである。

当時、キーボードを切り替えたことはなかなかインパクトがあったので、次のような記事を書いていたようだ。

My New Gear...UHK - ひとりしずかに。

元々トラックポイントポインティングスティック)がついていないキーボードなぞまかりならん、という派閥であったため Ultimate Hacking Keyboard 60自体はよさそうという思いはあったもののなかなか手を出すには至らなかった。 後述するモジュール等もセットにするとなかなかの費用となるためである。 幸いにして、Debianプロジェクトから費用の一部支援が受けられることになり、手に入れることができた。 *1

2年ほど経過してどうだったかをいくつかふりかえってみたい。

なお、Ultimate Hacking Keyboard 60 v2は次の仕様のものを当時入手した。

当時から変更しているのは次のとおりである。

キースイッチ

元々付属していたキースイッチ(Kailh Silent Pink)もよいスイッチだけれども、ほぼ一部(modifierキーあたり)にしかもう使っていない。かなりの部分を置き換えた。

数字キーに関しては、あれこれ混載した状態になっている。 Kailh Super Speed SilverとかGateron G Pro 3.0 Silverあたりとまだ定番がない。

キースイッチはリニアもしくはサイレントリニアのものを時折試してみたりはしているが、 TTC Frozen SilentやKailh Deep Sea Isletがを超えてくるものはなく、個人的な定番になっている。

キーキャップ

さまざまなキーキャップをあれこれ試している。 とはいえ、デザインを変えるというよりかは、キーキャップのプロファイルを変更してあったものを探そうとしている。 標準でついていたOEMプロファイルのキーは、キーキャップの幅が特殊な右端列のキー以外はほぼ使っていない。

これまでいくつか試したプロファイルは次のとおり。

  • OEM: 可もなく不可もなくという印象。世の中のキーボードはたいていこれなので違和感は皆無。
  • ASA: ちょっとキーキャップの高さがありすぎる。指先がひっかかり、やや打鍵が疲れる印象。打鍵音は低めで良い。
  • XVX: キーキャップの高さが低く、傾斜がきつめに感じた。数字キーを打鍵するときに、自分は誤爆しがちだった。
  • MDA: あまり印象に残っていない。
  • Meow: たとえば、Meow Keycapsみたいなやつ。これはプロファイル云々というより猫ありきでつい買ってしまった。
  • MOG: やたらまるっこく、他のキーキャップとはまるで違う打鍵感を提供する。慣れがかなり必要だが、変すぎて楽しい。

キーキャップは世の中にこれほどプロファイルがあるというのが新鮮であった。 あれこれ試している最中で、いまはMOGプロファイルのキーキャップを使っている。

結局のところ、あまり合わないなというASAプロファイルのキーキャップを除いてローテーションして、打鍵感の違いを楽しんだりしている。

総評的なメモ

使い始めのときから印象が変わっていないものもあれば、使い込んでいくうちに気になってきたものがある。

  • 当時は肩こりに悩んでいたので、分割型キーボードであるUHK 60 v2にしたのはよかったと今でも思っている。 たまにノートPCであったり、トラックポイントキーボードに戻って長めの作業をするとやっぱり肩がこるので、自分には切り替えたことがよかったんだろう。分割できるキーボードがあうかどうかは人にもよるとは思う。
  • 付属のモジュラーケーブルは短すぎる。使い勝手が悪いので、モジュラーケーブルを長めのものに交換する必要があった。モジュラーケーブルがあんまり一般的でなくなりつつあるので、ここはちょっと新規の人にはすすめづらいポイントかもしれない。
  • モジュラーケーブルを長いやつに変更すると、ファームウェアの更新にしくじる。ファームウェアの更新は付属していた元のモジュラーケーブルでやらないと駄目なのはちょっと不便である。
  • キーキャップをあれこれ交換して楽しんでいるが、右端一列(Backspace, Enter, Shift, Ctrlとか)はキーキャップの幅が0.5Uほど一般のものとは違うので、そこだけ置き換えられないのが一貫性がなくてちょっと不満である。
  • キークラスターモジュールについている、トラックボールも意外と便利で活用している。左手だけでスクロール操作できるため。ただし、最近空回りして反応しなくなることが増えたので適宜メンテナンスは必要かもしれない。
  • テンティングありで使っているのだけれど、傾きをささえるゴム足パーツがちょっとぐらつきやすい。Riser 60みたいに専用なやつを使ったほうが安定するかもしれない。

細かな不満はあれど、すごくよくできているので、今後も使い続けることだろう。 勢いあまって、Ultimate Hacking Keyboard 60入門という薄い本を書いたくらいには気に入っている。 トラックポイントポインティングスティック)が必須で分割できるキーボードを使ってみたい人には推奨できる。 でも、そうじゃないひとは、きっとこれじゃなくていい。

Debianプロジェクトから支援を受けたこともあり、Debian関連のバグ報告やらパッケージメンテナンス等、日々の開発作業を支えるなくてはならない道具となっている。 願わくは支援を受けたぶんくらいにはDebianプロジェクトに還元できていたらいいなと思う次第である。

UHK 80という80%レイアウトの新モデルがでたけど、私はこのままUHK 60 v2で生き延びていくつもりである。

*1:Debian Reeimbursementというしくみがなかったら、UHK 60を入手しようとは多分ならなかったはず。送料とかもろもろで当時$585.90とかだったはずなので、なかなかである。

My Free Software Activities in March 2025

3月のハイライト

3月は、DebianのToolchainのフリーズ期間に突入した。 d-iではまった件についてDebian勉強会で発表したが、netcfgにフィードバックするところまではできていない。 deskflowがようやくunstableに入り、trixieから利用できるようになったのが成果である。

3月の活動記録

My Free Software Activities in February 2025

2月のハイライト

2月は、粛々とパッケージのメンテナンス作業を実施した。 gr-frameworkに関して、フォントの権利関係を確認できたので、CMUSerif-Mathを既定のフォントとして 復活させることができた。手作業で生成されているフォント関連データファイルはなんとかできれば いいなとは思うが、まぁ問題がでてからでよいだろう。

あとは、はてなブログで昨年ちょっと頑張ったMozcをunstableで更新した話について書いた。

あとから読み返してみると、そんな大したことやっていない感がある。 なぜ最新に追従できなかったかについての事情はこのあと引き継ごうとする人には参考になるのではないだろうか。

2月の活動記録

Short journey to Mozc 2.29.5160.102+dfsg-1

Introduction

This is just a note-taking about how to upgrading Mozc package for up-coming trixie ready (with many restrictions) last year.

Maybe Mozc 2.29.5160.102+dfsg-1.3 will be shipped for Debian 13 (trixie).

FTBFS with Mozc 2.28.4715.102+dfsg-2.2

In May 2024, I've found that Mozc was removed from testing, and still in FTBFS.

#1068186 - mozc: FTBFS with abseil 20230802: ../../base/init_mozc.cc:90:29: error: ‘absl::debian5::flags_internal::ArgvListAction’ has not been declared - Debian Bug report logs

That FTBFS was fixed in the Mozc upstream, but not applied for a while. Not only upstream patch, but also additional linkage patch was required to fix it.

Mozc is the de-fact standard input method editor for Japanese. Most of Japanese uses it by default on linux desktop.

(Even though frontend input method framework is different, the background engine is Mozc in most cases - uim-mozc for task-japanese-desktop, ibus-mozc for task-japanese-gnome-desktop in Debian)

There is a case that Mozc was re-built locally with integrated external dictionary to improve quantity of vocabulary. If FTBFS keep ongoing, it means that it blocks such a usage. So I've sent patches to fix it and they were merged.

Motivation to update Mozc

With fixing #1068186, I've also found Mozc version is not synced to upstream for a long time.

At that time, Mozc in unstable was version 2.28.4715.102+dfsg, but upstream already released 2.30.5544.102. It seems that Mozc's maintainer was too busy and can't afford to update it, so I've tried to do it.

The blockers for updating Mozc

But, it was not so easy task to do so. If you want to package latest Mozc, there were many blockers.

  • Newer Mozc requires Bazel to build, but there is no Bazel package to fit it (There is bazel-bootstrap 4.x, but it's old. v6.x or newer one is required.)
  • Newer abseil and protobuf were required
  • Renderer was changed to Qt. GTK renderer was removed
  • Revise existing patchsets (e.g. for UIM, for Fcitx)

It was not all.

Road to latest Mozc

First, I knew the existence of debian-bazel, so I've posted about bazel-packaging progress.

Any updates about bazel packaging effort?

Sadly there was no response from it. Thus, it was not realistic to adopt Bazel as build tool chain. In other words, we need to keep GYP patch and maintain it.

And as another topic, upstream changed renderer from GTK+ to Qt.

Here are the major topics about each release of Mozc.

  • 2.30.5544.102 Require abseil 20240116.1 or later
  • 2.29.5544.102 GYP was deprecated
  • 2.29.5374.102
  • 2.29.5268.102 No gtk renderer anymore, need Qt.
  • 2.29.5160.102
    • The last version that gtk renderer is available.
    • --use_gyp_for_ibus_build option was removed.
  • 2.28.5029.102
  • 2.28.4880.102
  • 2.28.4715.102+dfsg Debian sid

The internal renderer change are too big, and before GYP deprecation in 2.29.5544.102, GYP support was already removed gradually.

As a result, target to 2.29.5160.102 was the practical approach to make it forward.

Revisit existing patchsets for 2.28.4715.102+dfsg

Second, need to revisit existing patchset to triage them.

  • 0001-Update-uim-mozc-to-c979f127acaeb7b35d3344e8b1e40848e.patch
    • Required
  • 0002-Support-fcitx.patch
    • Required
  • 0003-Change-compiler-from-clang-to-gcc.patch
  • 0004-Add-usage_dict.txt.patch
    • Required. (maybe)
  • 0005-Enable-verbose-build.patch
    • Required.
  • 0006-Update-gyp-using-absl.patch
    • Required and need massive refactoring.
  • 0007-common.gypi-Use-command-v-instead-of-which.patch
    • (maybe) Not needed anymore
  • 0009-protobuf.gyp-Add-latomic-to-link_settings.patch
    • Required.
  • 0010-Fix-the-compile-error-of-ParseCommandLineFlags-with.patch
    • Required. Should be merged into 0006 patch.
  • 0011-Fix-missing-abseil-gyp-link-settings.patch
    • Required. Should be merged into 0006 patch.

UIM patch was maintained in third-party repository, and directory structure was quite different from Mozc. It seems that maintenance activity was too low, so it was not enough that picking changes from macuim. It was required to fix FTBFS additionally.

Fcitx patch was also maintained in fcitx/mozc. But it tracks only master branch, so it was hard to pick patchset for specific version of Mozc.

Finally, I could manage to refresh patchset for 2.29.5160.102.

  • support-uim.patch
  • support-fcitx.patch
  • change-compiler-from-clang-to-gcc.patch
  • add-japanese-usage-dictionary.patch
  • enable-verbose-build.patch
  • update-gyp-using-system-abseil.patch
  • gyp-using-command-instead-of-which.patch
  • gyp-protobuf-link-with-atomic.patch
  • enable-deprecated-gtk-renderer.patch
  • fix-compile-error-of-ParseCommandLineFlags.patch
  • enable-use_gyp_for_ibus_build-again.patch
  • ibus-drop-needless-client_mock.patch
  • protobuf-revert-internal-cleanup.patch
  • uim-mozc-fix-ftbfs.patch

Improve packaging task

Mozc need to be repacked, but it didn't use Files-Excluded yet. So I've introduced d/watch to repack upstream source.

It makes source package more reproducible.

OT: Hardware breakage

There was another blocker to do this task. I've hit the situation that g++ cause SEGV during building Mozc randomly. First, I wonder why it fails, but digging further more, finally I've found that memory module was corrupted. Thus I've lost 32GB memory modules. :-<

Unexpected behaviour in uim-mozc

When uploaded Mozc 2.29.5160.102+dfsg-1 to experimental, I've found that there is a case that uim-mozc behaves weird. The candidate words were shown with flickering.

But it was not regression in this upload.

uim-mozc with Wayland cause that problem.

Thus GNOME and derivatives might not be affected because ibus-mozc will be used.

Mozc 2.29.5160.102+dfsg-1

As the patchset was matured, then uploaded 2.29.5160.102+dfsg-1 with --delayed 15 option.

$ dput --delayed 15 mozc_2.29.5160.102+dfsg-1_source.changes
Uploading mozc using ftp to ftp-master (host: ftp.upload.debian.org; directory: /pub/UploadQueue/DELAYED/15-day)
running allowed-distribution: check whether a local profile permits uploads to the target distribution
running protected-distribution: warn before uploading to distributions where a special policy applies
running checksum: verify checksums before uploading
running suite-mismatch: check the target distribution for common errors
running gpg: check GnuPG signatures before the upload
 signfile dsc mozc_2.29.5160.102+dfsg-1.dsc 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

 fixup_buildinfo mozc_2.29.5160.102+dfsg-1.dsc mozc_2.29.5160.102+dfsg-1_amd64.buildinfo
 signfile buildinfo mozc_2.29.5160.102+dfsg-1_amd64.buildinfo 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

 fixup_changes dsc mozc_2.29.5160.102+dfsg-1.dsc mozc_2.29.5160.102+dfsg-1_source.changes
 fixup_changes buildinfo mozc_2.29.5160.102+dfsg-1_amd64.buildinfo mozc_2.29.5160.102+dfsg-1_source.changes
 signfile changes mozc_2.29.5160.102+dfsg-1_source.changes 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

Successfully signed dsc, buildinfo, changes files
Uploading mozc_2.29.5160.102+dfsg-1.dsc
Uploading mozc_2.29.5160.102+dfsg-1.debian.tar.xz
Uploading mozc_2.29.5160.102+dfsg-1_amd64.buildinfo
Uploading mozc_2.29.5160.102+dfsg-1_source.changes

Mozc 2.29.5160.102+dfsg-1 was landed to unstable at 2024-12-20.

Additional bug fixes

Additionally, the following bugs were also fixed.

These bugs were fixed in 2.29.5160.102+dfsg-1.1

And more, I've found that even though missing pristine-tar branch commit, salsa CI succeeds. I've sent MR for this issue and already merged into.

Mozc and future in Debian

In this short journey, I gave up to updating more newer Mozc because the version of dependency libraries were not updated.

Note that protobuf 3.25.4 on experimental depends on older absl 20230802, so it must be rebuilt against absl 20240722.0.

And more, we need to consider how to migrate from GTK renderer to Qt renderer in the future.

Breaking compatibility, upgrade from createrepo-c 0.17.3 to 1.2.0

Recently createrepo-c on Debian unstable was updated from 0.17.3 to 1.2.0. It introduces breaking compatibility about metadata (repodata/*).

In the previous versions, generated metadata was compressed in gz format, newer version use zst compression instead. This kills some yum client to work because old yum client can't handle newer metadata format correctly.

At least, (as far as I know) it affects on Amazon Linux 2 for example.

To keep compatibility with such a old platform, need to specify --compatibility option for createrepo-c.