libreofficeコミュニティに不具合修正パッチを送ってみた

90
1 LibreOffice Productivity Suite LibreOfce コミュニティに 不具合修正パッチを送ってみた Tomofumi Yagi <yagitmknada[at]gmail.com> 2014- 5-31 1 回 徳島 LibreOffice 勉強会

Upload: tomofumi-yagi

Post on 21-May-2015

5.908 views

Category:

Technology


1 download

DESCRIPTION

第1回徳島LibreOffice勉強会で発表した資料です

TRANSCRIPT

Page 1: LibreOfficeコミュニティに不具合修正パッチを送ってみた

1LibreOffice Productivity Suite

LibreOfce コミュニティに不具合修正パッチを送ってみた

Tomofumi Yagi <yagitmknada[at]gmail.com>2014- 5-31 第 1 回 徳島 LibreOffice 勉強会

Page 2: LibreOfficeコミュニティに不具合修正パッチを送ってみた

2LibreOffice Productivity Suite

自己紹介とある地方自治体のシステム管理者その前は、組み込み系開発者その更に前は、地方の小さな会社のシステム管理者兼技術系何でも屋さん業純粋なユーザーとも言えず、かと言って開発者というのも違う気がする中途半端な人

Page 3: LibreOfficeコミュニティに不具合修正パッチを送ってみた

3LibreOffice Productivity Suite

今日お話する内容

不具合修正パッチを送る動機についてパッチを送ってみた:準備編パッチを送ってみた:送付編自分でバグ修正パッチを送ってみてわかった事

Page 4: LibreOfficeコミュニティに不具合修正パッチを送ってみた

4LibreOffice Productivity Suite

今日お話しない内容

LibreOfce内部のアーキテクチャ開発環境の整え方Git等の開発ツールの高度な使い方デバッグ技法

...

本日は、高度にテクニカルな話はありません。ごめんなさい

Page 5: LibreOfficeコミュニティに不具合修正パッチを送ってみた

5LibreOffice Productivity Suite

不具合修正パッチを送る動機について

Page 6: LibreOfficeコミュニティに不具合修正パッチを送ってみた

とにかく LibreOfceのバグを直したい!! (1/4)

プライベートでも仕事でも LibreOfceを使っていますWriter、 Impressが主使っていて、稀にどうしても我慢ならないバグがある最近だと「 Bug 73891 - UI color panel does not show the actual color 」

最後に選んだ色、今選択している文字の色がパレット上で示されないバグ

Page 7: LibreOfficeコミュニティに不具合修正パッチを送ってみた

とにかく LibreOfceのバグを直したい!! (2/4)

バグ報告をしても、なかなかバグが直らない時がある世界中から山のようなバグ報告が寄せられているため、自分のバグ報告が埋もれてしまうことがある (? )コア開発者 (LibreOfce開発の中心的開発者。仕事として LibreOfceの開発をしているケースが多い )は、コミュニティ全体にとって優先度が高い仕事から行うバグ修正も、クラッシュ、セキュリティ対策等の深刻なバグから対応する

LibreOfficeは、深刻なバグの修正は凄く早いと思います

自分の報告したバグ修正の優先度は必ずしも高くないリソースは凄く限られているので、深刻でないバグ修正は後回し

Page 8: LibreOfficeコミュニティに不具合修正パッチを送ってみた

とにかく LibreOfceのバグを直したい!! (3/4)

世界中から寄せられるバグ報告の山についてMAB(Most Annoying Bugs) … 最も厄介なバグ下は LibreOfceのバグ管理システムから抜粋。これは氷山の一角 ...

バグ管理システムから届くメール ([email protected]メーリングリスト )、最近の 5ヶ月弱で 2万 8千通以上 ...

LibreOffice 4.2のMAB 192個 (まだ増えます )

Page 9: LibreOfficeコミュニティに不具合修正パッチを送ってみた

とにかく LibreOfceのバグを直したい!! (4/4)

【結論】自分で見つけたバグは自分で直してみよう!DIYの精神 (? )でパッチを書いてみるバグ報告に、自分が書いたパッチを添付するパッチを提示してコア開発者の手間を省く代わりに、自分の直して欲しいバグ修正の優先度を上げてもらう意図

自分が書いたパッチを LibreOfceコミュニティに送ってmasterに取り込んで貰えれば更に嬉しい

Page 10: LibreOfficeコミュニティに不具合修正パッチを送ってみた

門外漢がいきなりバグを直せるか? (1/2)

明らかに壁がある (自分の場合 )世の中には LibreOfce(やOpenOfce.org)の開発にスッと入っていける人もいるみたいだけど、自分の場合は残念ながらそうじゃなかった。数百万行規模のソースコードの中で迷子に ...

巨大なマルチプラットフォームの開発プロジェクト内部のアーキテクチャやデータ構造がわからない ( 土地勘がない上に地図がない状態 )

始めて触れる概念やツールGit、GerritによるコードレビューやCI、ユニットテスト、タイムベースリリース、 etc...

Page 11: LibreOfficeコミュニティに不具合修正パッチを送ってみた

門外漢がいきなりバグを直せるか? (2/2)

資料はあるけど ...例えばCode Overview

無いよりはずっとずっといいしかし、もう少しヒントが欲しい ...

Page 12: LibreOfficeコミュニティに不具合修正パッチを送ってみた

Easy Hacksは? (1/2)

LibreOfceと言えば Easy Hackshttps://wiki.documentfoundation.org/Development/Easy_Hacks

Easy Hacksについて「新規貢献者の方々への敷居を低くするために, LibreOfceチームはイージー・ハックのリストをまとめています. この目的は,最初のタスクを見つけ出しやすくすることです.」

Page 13: LibreOfficeコミュニティに不具合修正パッチを送ってみた

Easy Hacksは? (2/2)

自分の場合は Easy Hacksでも躓いた ...orzSkill Levelを目安に探してみたものの、即座に手を出せそうなものを見つけられなかったたとえばBug 35862 -"Increase font" and "decrease font" could work even if the selection contains... なんかは面白そうだけど手が出ない ...

自分には色々と足りてないスキルや知識がありそうだが、残念ながら打開策が見つからないし、聞くアテもない

どこかに突破口はないか?まだ諦めたくない ...

Page 14: LibreOfficeコミュニティに不具合修正パッチを送ってみた

LibreOfceのビルド&ビルドエラー解消で経験を積む (1/3)

EasyHacksより Easyなタスク= ビルドビルド→ソースコードから LibreOfceの実行ファイルを作るEasy HacksのGetting Startedの最初にある「 Build LibreOfce」の部分「 fnd something fun you want to fx」の前にある (! )

開発に参加するための基本中の基本スキルEasy HacksのGetting Started

ココ

Page 15: LibreOfficeコミュニティに不具合修正パッチを送ってみた

LibreOfceのビルド&ビルドエラー解消で経験を積む (2/3)

ビルド環境を構築して、 LibreOfceをひたすらビルド1日〜数日おきにmasterをビルドする

ビルドエラーが出たら、ビルドを通すために自分でエラーを修正してみるビルドのどのフェーズでエラーが出たか?どのモジュール、どのソースコードでエラーが出たか?何が原因でエラーになっているのか?どのコミットが原因でエラーが出たか?どこを修正すればビルドを通す事ができるか?他の人はどのように修正したか?コミットの内容を調べる

ビルドエラーの修正を繰り返すことで、 LibreOfceのビルドシステム、内部構造、開発ツール類の知識を蓄積する門外漢でも、だんだんと LibreOfceのソースコードが読めるようになる

Page 16: LibreOfficeコミュニティに不具合修正パッチを送ってみた

LibreOfceのビルド&ビルドエラー解消で経験を積む (3/3)

ビルドエラー解消のためのパッチをmasterに取り込んで貰うコミュニティの様子を知るパッチを送付するときに使うツールや作法に慣れる

コミュニティに貢献しつつ経験を積む最終的に、自分が直したいバグが自分で直せるようになることが目標

Page 17: LibreOfficeコミュニティに不具合修正パッチを送ってみた

17LibreOffice Productivity Suite

パッチを送ってみた:準備編まずパッチを送るための環境を整える

Page 18: LibreOfficeコミュニティに不具合修正パッチを送ってみた

全体像

①LibreOfceをソースコードからビルドする環境を整える②Gerritが使えるように設定する③ライセンス宣言を行う

Page 19: LibreOfficeコミュニティに不具合修正パッチを送ってみた

①LibreOfceをソースコードからビルドする環境を整える

資料①Linux

「 Linux環境で LibreOfceをビルドしてみようかね 」小笠原氏http://www.slideshare.net/naruoga/libreofcelinux?from_search=12

②Mac「Mac OS X での LibreOfce ビルド報告Ver.2」 testnoda 氏

http://www.slideshare.net/testnoda/lib-o-buildmacosx20140210

③Windows「 LibreOfceをWindows上でビルドする」拙作

http://www.slideshare.net/tomofumiyagi/libreofce-buildytmkndshortver

Page 20: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (1/13)

Gerritって?LibreOfceの開発で使われるオープンソースのパッチレビューシステム

Webベースhttps://gerrit.libreoffice.org/

Gitと連携 (Gitは LibreOfceの開発で使われるバージョン管理システム )Android(AOSP)等の開発で使われている

コミット権限を持ってない開発者は、Gerritのレビューを通じてパッチを取り込んで貰うか、本家開発メーリングリストにパッチを送って取り込んで貰う必要がある

Gerritを利用しましょう

Page 21: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (2/13)

Gerritの画面 1

Page 22: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (3/13)

Gerritの画面 2

Page 23: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (4/13)

TDF Wiki「 Setting yourself up for gerrit」に従って設定を行う

https://wiki.documentfoundation.org/Development/gerrit/setup「 ./logerrit setup」を実行しますメッセージに従ってパスフレーズ等を入力します

;; Gerritのセットアップスクリプトを実行します$ ./logerrit setup It appears that you have no ssh setup, running ssh-keygen to create that:

Hit enter to generate an ssh key - you will need to enter a pass-phrase

./logerrit: 87: read: arg countGenerating public/private rsa key pair.Enter passphrase (empty for no passphrase): Enter same passphrase again:

;; メッセージに従ってパスフレーズ等を入力します...

Page 24: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (5/13)

実行が終了したら、画面に表示された公開鍵をコピーしておきます

GerritのWeb ページ上でコピペする必要があるため...Please go to https://gerrit.libreoffice.org/ and:- press the 'register' button in the top right corner- after login set yourself a username (its recommended to use your IRC-nick)- paste the key below into the 'Add SSH Public Key' box.

ssh-rsa ここに公開鍵の内容が表示されます ................................................................................................................................................................................................................

Note that you need to register additional email addresses, if you want tocommit from them. Additional emails must be confirmed with repling to theinvitation mail it sends you.

Which user name did you choose? yagimAutomatically creating your ssh configTo see if your setup was successful, run './logerrit test' then.$

Page 25: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (6/13)

https://gerrit.libreoffice.org/をブラウザで開き、「 Register」をクリックします

Page 26: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (7/13)

OpenIDをサポートしたアカウント (Google Account等 )

でサインインします ( 例として Yahoo!Japan IDを使用 )

「 yahoo.co.jp」を入力し「 Sign in」をクリック

補足 :Google Accountの場合はこのリンクをクリック

Page 27: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (8/13)

Yahoo!JAPAN IDとパスワードを入力し「ログイン」をクリック

Page 28: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (9/13)

「同意する」をクリック

Page 29: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (10/13)

「 Full Name」「 Preferred Email」「 Username」を登録します入力後「 Save Changes」や「 Select Username」をクリックしておくこと

Page 30: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (11/13)

「 Add SSH Public Key」欄に公開鍵をペーストし「 Add」をクリック

Page 31: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (12/13)

「 ./logerrit test」を実行し設定をテストします「Your gerrit setup was successful!」のメッセージが表示されたら正しく設定できています「 There seems to be trouble.please have the output of: ssh -vvvv logerrit at hand when looking for help.」のメッセージが表示されたら何かがおかしい

~/.ssh 配下の設定ファイルのパーミッションがおかしいとエラーになることがあるアカウントの「 Profle」ー「Username」が空欄になっているとエラーになることがある

;; 設定をテストします$ ./logerrit test…

Page 32: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②Gerritが使えるように設定する (13/13)

Gerritの設定ができたら、最後に git push originした時にデフォルトで LibreOfceのGerrit サーバーへ送るようGitの設定を追加します

;; pushした時に LibreOfficeの Gerritサーバーへ送るよう設定します$ git config remote.origin.pushurl ssh://logerrit/core…

Page 33: LibreOfficeコミュニティに不具合修正パッチを送ってみた

③ライセンス宣言を行う

TDF Wiki「Developers and Contributors list」に従ってライセンス宣言を開発メーリングリストに送付する

https://wiki.documentfoundation.org/Development/DevelopersKoheiさんによる日本語の説明 (メールの後半部分)

http://listarchives.libreoffice.org/ja/discuss/msg02262.html

メールを送るだけ。紙にサインする必要とかはない。シンプル!ライセンス宣言は、パッチを送る直前でよい (と思う )

Developers and Contributors list への名前の追加は、良くわかっている人にお願いした方が良いかも

Example Statement

All of my past & future contributions to LibreOffice may belicensed under the MPLv2/LGPLv3+ dual license.

Page 34: LibreOfficeコミュニティに不具合修正パッチを送ってみた

パッチを送ってみた:送付編ビルドエラー修正パッチをmasterに取り込んで貰う

Page 35: LibreOfficeコミュニティに不具合修正パッチを送ってみた

35LibreOffice Productivity Suite

全体の流れ (私のやり方 )

①バグ報告を行う②バグの原因を探す③バグ修正のためのブランチを作成する④バグ修正作業を行う⑤ビルドの確認、動作の確認を行う⑥パッチをGerritに送る⑦masterに修正が取り込まれたことを確認する

Page 36: LibreOfficeコミュニティに不具合修正パッチを送ってみた

36LibreOffice Productivity Suite

事前のお断り

説明の都合で、この後の例の中にmaster以外のブランチ(libreofce-4-2など )の修正を行っている部分がありますが、その時はブランチ名を適宜 masterに読み替えてください

Page 37: LibreOfficeコミュニティに不具合修正パッチを送ってみた

①バグ報告を行う

LibreOfceのバグは Bugzillaというシステムで管理されますビルドエラー修正の場合、バグ報告は省略可能と思います

誤字、脱字を直すようなものバグ修正のためにバグ報告をされる方はこの資料がお勧め「 LibreOfceでバグを見つけたときの報告方法」小笠原氏

http://www.slideshare.net/naruoga/how-to-report-bugs-of-libreoffice-in-japanese-libre

office

Page 38: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (1/7)

ソースコードやログを調査しますビルドエラーの場合、原因が直ぐ分かることも多々あります

$/opt/lo/bin/make...F:/lo4mas/core/i18npool/qa/cppunit/test_breakiterator.cxx(798) : error C2065: 'LAO' : 定義されていない識別子です。[build CUT] sal_osl_setthreadnameF:/lo4mas/core/i18npool/qa/cppunit/test_breakiterator.cxx(798) : error C2070: ''unknown-type'': sizeof オペランドが正しくありません。...make[1]: *** [F:/lo4mas/core/workdir/CxxObject/i18npool/qa/cppunit/test_breakiterator.o] Error 2make[1]: *** Waiting for unfinished jobs....Makefile:219: recipe for target 'build' failedmake: *** [build] Error 2

Page 39: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (2/7)

LibreOfceのソースコードを調べたい時はhttp://opengrok.libreofce.org/が凄く便利です

OpenGrokは JAVAで書かれたソースコード検索エンジン

Page 40: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (3/7)

エラーの原因になっているソースコードを表示します

Page 41: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (4/7)

この行でコンパイルエラー

Page 42: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (5/7)

ソースコード変更の履歴を表示し、新旧のソースコードを比較してみます

Page 43: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (6/7)

コードが追加されています

Page 44: LibreOfficeコミュニティに不具合修正パッチを送ってみた

②バグの原因を探す (7/7)

コメントに注目Windows日本語環境 & Visual Studio ではコンパイルエラーが出ます

Page 45: LibreOfficeコミュニティに不具合修正パッチを送ってみた

③バグ修正用のブランチを作成する

Gitのコマンドを使ってブランチを作成します$ ./g checkout -b fix-windows-build Switched to a new branch 'fix-windows-build'$ git branch* fix-windows-build Master$

master追跡ブランチ(普段はこちらで ビルドを行う )

バグ修正用 fix-windows-buildブランチ(ここでバグ修正を行う )

Page 46: LibreOfficeコミュニティに不具合修正パッチを送ってみた

46LibreOffice Productivity Suite

④バグ修正作業を行う

テキストエディタでソースコードを編集するコメント行を 1行削除しただけ

Page 47: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑤ ビルドの確認、動作の確認を行う (1/2)

ビルドエラー修正の場合、ビルドが通ることが動作確認になります

;; モジュールをビルドしエラーが解消した確認します$ /opt/lo/bin/make i18npool …;; 全体をビルドしエラーが解消したか確認します$ /opt/lo/bin/make…;; make clean後に全体をビルドしエラーが解消したか確認します$ /opt/lo/bin/make clean && /opt/lo/bin/make…

Page 48: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑤ ビルドの確認、動作の確認を行う (2/2)

補足:モジュールについてcore 配下の各ディレクトリがモジュールに対応

Page 49: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (1/11)

まず、修正をコミットします

$ git add i18npool/qa/cppunit/test_breakiterator.cxx…$ git commit

Page 50: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (2/11)

コミットログの入力

Page 51: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (3/11)

Gerritにパッチを pushしますTDF Wikiに習ってコマンドを実行します;; Gerritにパッチを pushします$ git push origin fix-windows-build:refs/for/master…

パッチを push開発用 PC

LibreOfficeのGerritサーバー(インターネット上 )

Page 52: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (4/11)

Gerritに送られた

masterに読み替えてください

Page 53: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (5/11)

レビュー、検証を待っている状態

Page 54: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (6/11)

レビューが始まった (コメントが付く )メールでも通知されます

Page 55: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (7/11)

Eike RathkeさんのコメントEike Rathke

Patch Set 1: This need some tweaks before it is merged

The comment breaks the build in what sense? Rather than loosing the comment that actually is the clear text of the test data I'd prefer if there were some means that convinced MSVC to not bail out on it.

Eike Rathke

Patch Set 1:

Maybe it helps to put the comment line in an #if 0 block?

「どうゆうこと?」というニュアンスなのだろうか orz...

Page 56: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (8/11)

Tor LillqvistさんのコメントPatch Set 1:

I don't think it's the localised or not version of MSVC that matters, but the system codepage.Apparently MSVC insists that C++ source code is a valid byte sequence in the system codepage, and this UTF-8 comment is not in yours. Or something like that... I guess you don't want to change your system codepage...?

こちらの伝えたいことを書いてくれている嬉しい!!

Page 57: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (9/11)

Tor Lillqvistさんに回答Tomofumi Yagi

Patch Set 1:

It is a problem of the system code page. And I do not want to change the system code page. Because many messages on Windows will not be localized.

Please refer, fdo#66395 - Compilation error in Windows with UTF-8 unfriendly codepage fdo#66246 - compile failure for Chinese developers fdo#68790 - Other: Build fails on Windows when system locale is "Japanese(Japan)"

先人の偉業を引用しつつ説明(長文を書かないための技 )

Page 58: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (10/11)

Eike Rathkeさんに回答Thank you for committing, and I'm sorry for the late reply.

#if 0 block around the comment causes an another build error(fatal error C1004: Unexpected End Of File Found).

Build Error message is here.

F:/lo4mas/core/i18npool/qa/cppunit/test_breakiterator.cxx(725) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。F:/lo4mas/core/i18npool/qa/cppunit/test_breakiterator.cxx(961) : fatal error C1004: 予期せぬ EOF が検出されました。

Torさんへ回答しつつ、 Eikeさんに回答するために必死でビルドしてました(二人とも、レスポンスが凄く早かった )

Page 59: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑥パッチをGerritに送る (11/11)

レビューと検証の終了 ( 承認された )自分が送ったパッチが LibreOfceのソースコードに取り込まれます

masterに読み替えてください

Page 60: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑦masterに修正が取り込まれたことを確認する(1/3)

LibreOfceのリポジトリ( Freedesktop.orgにある)を見てみます

Page 61: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑦masterに修正が取り込まれたことを確認する(2/3)

Page 62: LibreOfficeコミュニティに不具合修正パッチを送ってみた

⑦masterに修正が取り込まれたことを確認する(3/3)

最新のmasterをビルドし問題が修正されたことを確認します

ビルドエラー修正の場合、ビルドエラーが解消しビルドが完了する事を確認しますmasterから後に分岐する安定版にも、この修正が入ります;; ブランチを masterに切り替えます$ ./g checkout master Switched to branch 'master';; ワークツリーを最新の状態に更新します$ ./g pull…;; 念のためにログを確認します$ git log...;; masterをビルドします$ /opt/lo/bin/make

Page 63: LibreOfficeコミュニティに不具合修正パッチを送ってみた

自分でバグ修正パッチを送ってみてわかった事そして皆さんに伝えたいこと

Page 64: LibreOfficeコミュニティに不具合修正パッチを送ってみた

開発コミュニティの人達は親切すぎるくらい親切だった (1/3)

Gerritにパッチを送れば、ちゃんとレスポンスがあるカタコトの英語にも関わらず、ちゃんと読んでくれているわかりやすく丁寧な説明を心掛けてはいます (自分なりに )...

私の場合、コミットログや Bugzillaのコメントを書くのに一番時間を使います

生産的なアドバイスが貰えるどうしてこうしないの、ここがおかしいよ、等々

Gerritにパッチを送ったのに放置されたという経験は ( 私は )ありません

Page 65: LibreOfficeコミュニティに不具合修正パッチを送ってみた

開発コミュニティの人達は親切すぎるくらい親切だった (2/3)

こんなサプライズもNorbert Thiebaudさんの「パッチを送ってくれてありがとう」メール

すごく驚いた&感動した

Page 66: LibreOfficeコミュニティに不具合修正パッチを送ってみた

開発コミュニティの人達は親切すぎるくらい親切だった (3/3)

パッチを取り込んで貰えるパッチに不備があっても、レビューで指摘された通りに直せば取り込んでくれる結構、大胆に取り込んで貰えるように思います

仮に問題が出ても、あっという間に誰かが直してしまう ( 速さは正義的な ...)

ビルドエラー修正、些細なバグ修正等の極小パッチしか送ったことがないが、全てマージして貰えてて、今のところ拒否されたことはない

伝え聞くOpenOfce.orgの頃の閉鎖的な開発体制についてパッチを取り込んで貰いにくいという噂があった「LibreOfceの発足から3ヶ月」(Koheiのどうでもいい話 )

日本語環境での動作を改善するパッチが一部取り込まれてない事実

Page 67: LibreOfficeコミュニティに不具合修正パッチを送ってみた

開発のために必要な情報は全て公開されている(1/2)

wiki.documentfoundation.org/Developmenthttps://wiki.documentfoundation.org/Developmentここに全部書いてある

ソースコードのリポジトリhttp://cgit.freedesktop.org/libreofce/

バグトラッキングhttps://www.libreofce.org/bugzilla/

メーリングリスト (アーカイブ )http://www.libreofce.org/get-help/mailing-lists/

Page 68: LibreOfficeコミュニティに不具合修正パッチを送ってみた

開発のために必要な情報は全て公開されている(2/2)

ソースコード検索http://opengrok.libreofce.org/

パッチレビューhttps://gerrit.libreofce.org/

誰でも開発の状況を参照できるし、誰でも開発に参加できる

Page 69: LibreOfficeコミュニティに不具合修正パッチを送ってみた

日本のコミュニティの人達から教えて貰った日本語でコミュニケーションできる日本語のメーリングリストがある

http://ja.libreofce.org/get-help/mailing-lists/この中の [email protected]で開発に関する相談に乗って貰ったコードの分からない部分に関する相談英語に関する相談コーディングスタイルなど、パッチを送った際に引っかかりそうなところのアドバイスをいただいた

チャレンジの姿勢を見せれば、 Koheiさんを筆頭に誰かが教えてくれたコミュニティの方々に相当助けて貰っています (感謝 )

Koheiさんの存在は日本の LibreOfceコミュニティにとって非常に大きい

IRCの日本語チャンネルもある実は、私は参加したことがないので様子がわかりません (ごめんなさい )。

Page 70: LibreOfficeコミュニティに不具合修正パッチを送ってみた

初心者は LibreOfceのビルド&ビルドエラー解消から始めてみよう

大事だと思うのでもう一度 ...LibreOfceのビルド&ビルドエラー解消から始めるメリット開発に参加するための基本中の基本スキルEasy Hacksより Easyなタスク初心者でも、少しずつプロジェクトへの理解を深めていくことができるコア開発者にとっては退屈で煩雑なタスクだが、初心者にとってはプロジェクトへの理解を深めるための大事なタスクだと思います

Page 71: LibreOfficeコミュニティに不具合修正パッチを送ってみた

ソースコードを読もう

折角のオープンソースソースコードが読めれば、結構何とかなる

OpenGrokはとにかく便利ですhttp://opengrok.libreofce.org/インターネットに繋がるなら環境なら使えるスマートフォン上でもソースコードが閲覧/検索可能

他の方のコミット内容を見よう! (自戒を込めて )http://cgit.freedesktop.org/libreofce/core/

情報の宝庫。勉強になる「 2013年における LibreOfce の開発をログから振り返る」安部氏

http://fixedpoint.jp/2013/12/22/libreoffice-2013-retrospect.html

Page 72: LibreOfficeコミュニティに不具合修正パッチを送ってみた

手を動かそう (1/2)

LibreOfce上で日本語を使っていて発生する問題は、日本語を使う人々が自ら解決する必要がある

例えば「縦書き」の問題たとえコア開発者であっても、日本語を使わない人には、何が問題かすら理解できないこともある日本人のほとんどが RTL言語 (右から左へ書く言語 )における問題がわからないのと同じ

UIやヘルプの「翻訳」もそうですね

Page 73: LibreOfficeコミュニティに不具合修正パッチを送ってみた

手を動かそう (2/2)

日本人の開発者は (現状 )とても少ないhttp://www.libreofce.org/about-us/credits/を見てみると ...最近アクティブな方は、Koheiさん、Abeさん、Kurosawaさん、Mogiさんと Apache OpenOfceで頑張っておられるUchinoさんくらい (?)LibreOficeにパッチをマージされたことのある日本人は総勢 14人程度(開発者総数が 748人とすれば約 1.87%)と、とても少ないこれは寂しい、困った ...

ある意味、チャンス?ちょっと頑張れば、先頭集団 ?に入って最前線の方々と一緒にやれる (かも )

Page 74: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (1/6)

Bug 77683 - UI: The color in the toolbar buttons doesn't change when we use the Floating Font/Background/Highlight Color Toolbarの場合

1回目のクリック 2回目のクリック

こんなバグでした

Page 75: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (2/6)

修正したら、こんな指摘が ...

直前のこのコミット

そうなの?

Page 76: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (3/6)

結局、自分が修正した部分も含めて丸ごとリファクタリングされ、問題がごっそり解決した

お騒がせしました

Page 77: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (4/6)

Bug 37129 - Dotted and Dashed table borders are not drawn correctlyの場合

開発メーリングリストにておかしいよね。どうして?という鋭いツッコミちょっと焦る ...

Page 78: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (5/6)

何故そういう修正をしたのか、頑張って説明しました自分の書いたコードの説明するのはプログラマとしては当たり前

曲がりなりにもこの時は収束したしかし、後々ボーダーライン関連はKoheiさんが (この問題も含めて )全面的に書き直すことに ...ボーダーライン修正の詳細は、Koheiさんのブログ記事を読んでみてください (The art of drawing border lines)

再度、お騒がせいたしました

Page 79: LibreOfficeコミュニティに不具合修正パッチを送ってみた

これからチャレンジする人に教える私の失敗 (6/6)

こんなんで大丈夫か?と思いつつも懲りずに続けています同じ失敗は繰り返さないように勉強しつつ ...

これまで見てきたあなた、自信が湧いてきたでしょう?

Page 80: LibreOfficeコミュニティに不具合修正パッチを送ってみた

どうせやるなら楽しくやろう!!

私も不安なことは多いですコア開発者に迷惑を掛けてないか?カタコトの英語が通じているか?知らず知らずに無礼なことをしてないか?でも、取って食われる訳じゃないし、単に相手にされなくなるだけ

どうせやるなら楽しくやろう!!楽しくなければ続かない (当然ですが ...)プロにはプロの、アマチュアにはアマチュアのなりのやり方が多分ある個人のOSS開発 =趣味の盆栽いじり論 (恩師の受け売り )

モチベーション再び冒頭で敢えて言わなかったこと ...

Page 81: LibreOfficeコミュニティに不具合修正パッチを送ってみた

質疑応答もしお聞きになりたいことがありましたらどうぞ

Page 82: LibreOfficeコミュニティに不具合修正パッチを送ってみた

All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.

ご清聴ありがとうございました

Page 83: LibreOfficeコミュニティに不具合修正パッチを送ってみた

83LibreOffice Productivity Suite

参考文献 / WebページLibreOffice: Hermenutical keys to a complex code-baselibreoffice/core main, development code repository Michael Meeks

https://people.gnome.org/~michael/data/2013-07-26-libreoffice-code-structure.pdf

Welcome to the Review of the LibreOffice Conference 2013http://conference.libreoffice.org/talks/2013/

Development/Code Overviewhttps://wiki.documentfoundation.org/Development/Code_Overview

LibreOffice Easy Hackshttps://wiki.documentfoundation.org/Development/Easy_Hacks

Page 84: LibreOfficeコミュニティに不具合修正パッチを送ってみた

84LibreOffice Productivity Suite

参考文献 / WebページLinux環境で LibreOfficeをビルドしてみようかね by Naruhiko Ogasawara

http://www.slideshare.net/naruoga/libreofficelinux?from_search=12

Mac OS X での LibreOffice ビルド報告 Ver.2 ( 2014年 2月 10日発表) by testnoda

http://www.slideshare.net/testnoda/lib-o-buildmacosx20140210

LibreOfficeをWindows上でビルドする by Tomofumi Yagihttp://www.slideshare.net/tomofumiyagi/libreoffice-buildytmkndshortver

Page 85: LibreOfficeコミュニティに不具合修正パッチを送ってみた

85LibreOffice Productivity Suite

参考文献 / WebページGerrit Code Review LibreOffice

https://gerrit.libreoffice.org/Setting yourself up for gerrit(TDF Wiki)

https://wiki.documentfoundation.org/Development/gerrit/setup

Developers and Contributors list(TDF Wiki)https://wiki.documentfoundation.org/Development/Developers

Kohei さんによるライセンス宣言の説明 (日本語 )http://listarchives.libreoffice.org/ja/discuss/msg02262.html

How to report bugs of LibreOffice in Japanese / LibreOfficeの不具合を日本語で報告するには by Naruhiko Ogasawarahttp://www.slideshare.net/naruoga/how-to-report-bugs-of-libreoffice-in-japanese-libreoffice

Page 86: LibreOfficeコミュニティに不具合修正パッチを送ってみた

86LibreOffice Productivity Suite

参考文献 / WebページGerrit Code Review LibreOffice

https://gerrit.libreoffice.org/OpenGrok.libreoffice.org

http://opengrok.libreoffice.org/Remove UTF-8 comment.(Gerrit Code Review Change 6847)

https://gerrit.libreoffice.org/#/c/6847/LibreOffice main, development code repository

http://cgit.freedesktop.org/libreoffice/core/

Page 87: LibreOfficeコミュニティに不具合修正パッチを送ってみた

87LibreOffice Productivity Suite

参考文献 / Webページ「 LibreOfficeの発足から 3ヶ月」 (Koheiのどうでもいい話

http://kohei-yoshida.blogspot.jp/2010/12/libreoffice3.htmlDevelopment(TDF Wiki)

https://wiki.documentfoundation.org/DevelopmentWelcome to Bugzilla

https://www.libreoffice.org/bugzilla/Mailing Lists

http://www.libreoffice.org/get-help/mailing-lists/メーリングリスト (日本語 )

http://ja.libreoffice.org/get-help/mailing-lists/

Page 88: LibreOfficeコミュニティに不具合修正パッチを送ってみた

88LibreOffice Productivity Suite

参考文献 / Webページfixedpoint.jp - 「 2013年における LibreOffice の開発をログから振り返る」

http://fixedpoint.jp/2013/12/22/libreoffice-2013-retrospect.html

Creditshttp://www.libreoffice.org/about-us/credits/

Bugous bug fix(Document Foundation Mail Archive)http://nabble.documentfoundation.org/Bugous-bug-fix-td4073889.html「 THE ART OF DRAWING BORDER LINES」 (Roundtrip to Shanghai via Tokyo)

http://kohei.us/2014/01/17/the-art-of-drawing-border-lines/

Page 89: LibreOfficeコミュニティに不具合修正パッチを送ってみた

89LibreOffice Productivity Suite

参考文献 / WebページBug 73891 - UI color panel does not show the actual color

https://bugs.freedesktop.org/show_bug.cgi?id=73891Bug 65675 - (mab4.2) LibreOffice 4.2 most annoying bugs

https://bugs.freedesktop.org/show_bug.cgi?id=65675Bug 35862 - "Increase font" and "decrease font" could work even if the selection contains...

https://bugs.freedesktop.org/show_bug.cgi?id=35862 Bug 37129 - Dotted and Dashed table borders are not drawn correctly.

https://bugs.freedesktop.org/show_bug.cgi?id=37129

Page 90: LibreOfficeコミュニティに不具合修正パッチを送ってみた

90LibreOffice Productivity Suite

参考文献 / Webページ「OpenOffice.orgソースコード探検」中本氏

http://bd.tank.jp/presentation/「非公認 OpenOffice ハッカーズガイド - 1.1」

https://code.google.com/p/ooo/source/browse/trunk/ooo-build/www/hackers-guide-1.1-ja.html「 LibreOfficeの最新動向 - コミュニティとプロダクトの面から」 by Naruhiko Ogasawara

http://www.slideshare.net/naruoga/osc2013-fk