2012年2月20日月曜日

GNOME の String Freeze をおさらいする

最近、意図しない形で String Freeze にわずらわされてしまい、調べていくなかで自分でもちゃんと理解していなかったことがいくつかわかったので、備忘録として String Freeze についておさらいしておこうと思う。
ついでに、i18n、翻訳に関わっている/関わりたい人や、GNOMEデベロッパー(やコミッター)になりたい人の参考にもなれば幸いである。


何?

String Freeze とは、モジュール開発において、「翻訳対象」文字列の追加や変更を制限することである。
それが必要となる理由がわからなければ、翻訳者になれば実感できるので、これを機会に参加しよう。


どんな制限か、もうちょっと正確に

次の2点が制限される。

  • 翻訳対象メッセージを新規に追加すること
  • すでに存在するメッセージを修正すること

上記は原則やっちゃいけないことになる。
ただし、どうしても対処する必要があれば、翻訳プロジェクト(GTP)コーディネーターの同意を得た上で、リリースチームおよびドキュメンテーションチームへ通知を行えば、一時的に String Freezeを解除することができる。
GTPの許可は、gnome-i18n@ 上で行われるため、翻訳メンバーはSring Freeze解除を事前に把握しておくことができる。また、実際に変更がコミットされた場合は、String Freezeブレークの通知がgnome-i18n@に自動送信される。それを契機に翻訳作業に着手できる。

一方で、以下のケースは、String Freezeを破ることに該当しないので、開発者は好き放題更新してよい。もちろんString Freezeブレークの通知などもない。

  • 翻訳対象でない文字列の操作 (=> PO影響なし)
  • 翻訳対象メッセージの削除 (=> PO影響あり Obsoleteになる)
  • 翻訳者向けコメントの追加 (=> PO影響あり コメントが追記される)
  • すでに存在するメッセージと同一内容メッセージの追加 (=> PO影響あり、ロケーションが追加される)
  • ドキュメントの更新


さらに、ちょっと微妙なケースもある (よく揉めるところ)。
以下のケースは、String Freeze ブレークに袖が引っかかっているけれど、明示的な許可なくやってもかまわないことになっている。

  • すでに存在する翻訳対象で「ない」文字列を、翻訳対象メッセージとする (gettextのラッピング忘れの対処など)
  • POTFILES.in に記載が漏れていたファイルの追記 (全く新規ファイルの追記はダメ)
  • domain の変更 (おそらくこれはかなりレアケースだと思う)

上記は、翻訳対象メッセージに変更があった旨の通知がgnome-i18n@に送信される。特に一番目のケースはモジュールメンテナーでもなければそれが新規追加のメッセージなのかどうか即座にわからないともあるので、該当のコミットがGTPの許可を得たものかどうかでしばしば揉める原因となる。そのため、余計な手間や混乱を招かないためには、このケースであってもGTPに通知しておくことが望ましいとされている。


フリーズ対象のモジュールはどれ?

一言で言うと、Damned Lies の「開発版」のリリースセットに含まれるモジュールが該当する。それ以外はSstring Freezeになることはない。モジュールメンテナーがString Freezeしたことを通知することがあるが、それは単なる親切心であったり、ここでいうString Freezeの制約などは一切ない。


フリーズはいつ始まる?

リリーススケジュールに具体的な日時が明記されているので、それを参照のこと。
その日時を持って、該当するモジュールのmasterブランチは一斉にフリーズとなる。


フリーズはいつ終わる?

フリーズ終了のタイミングはモジュール毎に変わる。
リリースの前後に

  • gnome-x-y という名称のブランチを作成する (x, yはリリースバージョンの番号)
  • 「このコミットをもってgnome-x-yのブランチを作成した」という通知をgnome-i18n@に送信する

を行うことが、終了条件となる。これによって、フリーズがgnome-x-yブランチに引き継がれ、masterは String Freezeが解除される。 なお、リリースの前だろうが、後だろうが、モジュール次第である。

ちなみに、今回String Freezeに煩わされたというのは、String Freezeの解除をしていなかったモジュールがあり、それを知らずにメッセージを操作してしまい、gnome-i18n@に通知が飛んでしまったということである。


参考

http://mail.gnome.org/archives/gnome-i18n/2012-February/msg00047.html
https://live.gnome.org/TranslationProject/HandlingStringFreezes
https://live.gnome.org/ReleasePlanning/Freezes#String_Freeze

2011年12月23日金曜日

GNOME アクセシビリティ・キャンペーン

2011年12月16日、GNOMEプロジェクトはアクセシビリティ・キャンペーンをアナウンスしました。アクセシビリティ機能を強化するために、広く寄付や協力を募っています。私もGNOMEユーザーとして微力ながら寄付しました。寄付はFrineds of GNOMEというサイトから行えます。

そもそもアクセシビリティとは何かというと、誤解をおそれず簡単に言えば、コンピューターを誰にでも使いやすくするということです。高齢者や障害者など身体機能が低下している人をイメージすると分かりやすいですが、たとえば視力が弱い人向けに画面を拡大表示したり、手が思うように動かせない人向けにマウスやキーボードに代わる入力手段を用意する、といったことがそうです。とりわけ高齢化が避けられない日本においては重要な課題となるものです。まさに私たちが必要とする(している)ものなので。(本当はアクセシビリティとは、もっと対象領域の広い言葉なので、詳しく知りたいかたは他の情報にあたってください。)

GNOME は以前からアクセシビリティの専門チームを設け、その改善・整備に力を入れて来ましたが、まだまだ課題も多いのが実情です。とくに今年は新バージョンGNOME3をリリースしたばかりであり、GNOME3への対応・テストにおいては、膨大な作業・支援がまさに今求められています。そのなかでも重要度の高い課題がアクセシビリティチームのページに簡単にまとめられているので、関心があればぜひご覧になってください。経済的な支援だけでなく、直接コードを書く、テストをする、など他の具体的な貢献方法も見つかります。

肝心の寄付の方法ですが、いくつかオプションがあります。気軽なケースでは、個人ベースで一度きり25USドルからの寄付が可能です。PayPalが利用できるのでアカウントがあれば手続きも簡単に済みます。もちろんPayPalを使わずにクレジットカードなどによるお支払いも可能です。正確な情報はFriends of GNOME公式サイトをご覧ください。
ちなみに、寄付をすれば最低でもGNOMEオリジナルのマウスパッドやステッカーセットが手に入ります。 (もちろん必要なければ断ることもできます)。また希望すれば寄付者リストに名前を載せることもできます。これはOSSへの貢献の物的証拠とも言えるので、理解のある知人に自慢することもできます[要出典]。

また、Friends of GNOMEのサイトには、Amazonへのアフィリエイトページがあり、こちらを経由してAmazonでお買い物をすれば、間接的にGNOMEを支援することができます。私はよく活用しています。

2011年12月3日土曜日

GNOME Shell 拡張の公式配布サイトがアルファ公開

extensions.gnome.org こと、GNOME Shell拡張(extension)の公式配布用ウェブサイトがアルファ版にて公開されました。URLは以下です。
https://extensions.gnome.org/

公式アナウンスは以下を参照してください:
https://mail.gnome.org/archives/gnome-announce-list/2011-December/msg00000.html

GNOME Shellにはプラグイン機構が備わっており、ユーザーが自分好みの拡張を簡単に施すことができます。extensions.gnome.orgを利用すれば、この拡張機能を簡単に利用できるようになります。

extensions.gnome.orgでは、次のことが可能です。
(以下で述べることは、すべてアルファ版の現時点においてです)
* 拡張の一覧および詳細情報の取得
* 拡張のインストール/アンインストール
* インストール済み拡張機能のオン/オフ切り替え
* 拡張機能のアップロード(開発者用)

使ってみた限りで、かなり簡単に使えます。説明不要・マニュアル不要なほど簡単です。ブラウザー(Firefox)からサイトのトップページにアクセスすると、拡張機能一覧がみれるので、そこから各拡張のページへ移り、画面左上で目立っているオン/オフつまみをクリックするだけで、インストールおよび有効無効の切り替えができます。初回オン時(要するにインストール時)は、インストールするか確認ダイアログが表示されます。

インストールした拡張機能はリアルタイムで反映されるので、再ログイン(GNOME Shellの再起動)は不要でした。簡単で良いです。ただ、拡張機能によっては再起動を要求するものもあるかもしれません。

なお、現時点で検索機能を備えていないようで、欲しいものを探すには一覧を上から順に追うしかなさそうです。また、提供数もまだ少ないと言えます。現時点で30弱がリストアップされています (が、昨日時点では20弱だったので、増えています)

拡張機能作成者向けには、アップロード用のメニューが用意されています。アカウントの登録が必要になります。また、実際に配布に至るまでに、GNOME側による審査、レビューをパスする必要があります。どうやら数週間はかかるようです。

まだまだテスト段階ですが、けっこう便利なので、みなさんぜひ試してみてください。また、拡張の開発者はどんどんアップロードしてみましょう。使いにくかったり、不具合/おかしな挙動が見つかれば、どんどん報告しましょう。
報告はGNOME Bugzillaからどうぞ:
https://bugzilla.gnome.org/enter_bug.cgi?product=website

いちおう既知の問題のうち、大事な注意点:
* GNOME3.2+上のFirefoxからしか利用できません。
少なくとも現時点においてwebkitベースのブラウザーからは使用できないことが知られています。

* アンインストールに不備があります
アンインストールしてもファイルが残ったままになります。
事実上、インストールされたまま無効化された状態になります。

他の既知のバグは以下を参照してください:
https://bugzilla.gnome.org/buglist.cgi?quicksearch=component%3Aextensions.gnome.org+product%3A%22website%22+

ここを利用して快適なデスクトップをつくりましょう。



== 以下は暇な人向け ==
(ちょっと長くなったので、暇な人向けのものを以下に追いやりました)

こういった公式の配布サイトは長い間待たれていました。shell拡張は、デスクトップUIを自分好みにカスタマイズできるという点で非常にすばらしい仕組みですが、一方で実際にユーザーの使用に至るまでにいくつか課題がありました。

たとえば、カジュアルユーザーが簡単かつ気軽にインストールする方法が、今までありませんでした。
ユーザーが拡張機能をインストールするには、
A. ディストリービューションが提供するパッケージを利用する
B. 作成元が配布するパッケージ(tarballなどのアーカイブ)を利用する
C. リポジトリからソースを取得して自分でビルドする(GNOME本家のものが代表的)
という方法がありましたが、それぞれ見過ごせない問題があります。

A は、ディストリビューションのパッケージマネージャーを利用して簡単に導入できますが
- 管理者権限が必要になるので場合によって利用できない
- システムワイドにインストールされるので、複数ユーザーで利用する環境では他ユーザーへ副作用が生じる可能性がある
という問題があります。
なお、ディストリビューションのパッケージとして拡張機能を提供することは、GNOMEが公式に非推奨としています。
https://mail.gnome.org/archives/gnome-announce-list/2011-July/msg00005.html

Bは、Aとは対照的に、一般ユーザーがその権限で各自のローカル環境にインストールできますが、
- インストールにあたってそれなりの知識が必要になる
という点で、カジュアルユーザーにはちょっと敷居が高めでした。
shell拡張機能は、${HOME}/.local配下にインストールする必要がありますが、普通のユーザーは.localディレクトリなんて知りません。ホームフォルダーでtarballを展開すればいいだけだと教えられても、アンインストールしたくなったらお手上げです。下手にいじると環境を破壊します。

Cは、Bの延長線上にあるので、同じ問題を持っています。リリースもされていないexperimentalなものを使える/使いたい人が取る手段です。


また、GNOME公式の配布サイトという点で、信頼性を確保できるという大きなメリットがあります。サードパーティ配布の(悪く言えば"野良")拡張が、信頼性を確保するのは決して簡単ではありません。また、ユーザーからしてもよく知らない誰かが作った拡張機能を、安心してインストールすることはできません。
extensions.gnome.orgで提供されるものは、GNOMEによる審査・レビューをパスしているので、稚拙なセキュリティバグなどは含まれていないと期待できます(あなたがGNOMEを信頼するなら:)。また公式にオーソライズされたものか、そうでないか、というのは配布・使用にあたって非常に重要な要素になります。

# あと、これはぜひ翻訳すべきなので、翻訳させろと言っておきました:)
https://bugzilla.gnome.org/show_bug.cgi?id=665459