• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,868
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Firefoxの開発プロセス Makoto Kato Mozilla Japan
  • 2. Agenda • Bug Management • Source Code Management • Automation Tools • Communication
  • 3. About Mozilla • Mozilla Foundation • Mozilla Corporation • Mozilla Messaging • Mozilla China • Mozilla Europe • Mozilla Japan
  • 4. Mozilla • 現在では世界中にオフゖスがあります • ゕメリカ (マウンテンビュー) • カナダ (バンクーバー / トロント) • ニュージーランド • パリ (Mozilla Europe) • 北京 (Mozilla China) • 東京 (Mozilla Japan) • その他 4
  • 5. BUG MANAGEMENTS 5
  • 6. Bugzilla • Mozilla.org設立時に作られたバグトラッキン グシステム(BTS) • http://www.bugzilla.org/ • Netscapeでは別のBTSを利用していたけど、 Mozilla.orgのために新規開発を行う • 最新版は3.6 • https://bugzilla.mozilla.org/では、3.4.6を利用
  • 7. Mozilla.org’s Bugzilla 7
  • 8. • 新規バグはステータスが基本UNCONFORMED で作成 • 誰かが確認すればNEWに • 人によっては、UNCONFORMEDじゃなくて、 NEWで作れたり、Assignを変えられる権限もって ます • セキュリテゖバグは、一部メンバのみ参照可能 • CCに入れられれば見えますが 8
  • 9. Mozilla Crash Reports • クラッシュ報告のデータ収集 • http://crash-stats.mozilla.org/ • ベース技術としてGoogleのBreakPadを利用 • http://code.google.com/p/google-breakpad/ • DWARF(Debug用データフォーマット)とかARM とかMac OS X 64-bitの対応はほぼMozillaの貢献 • 定期的にバグをフゔ゗ルして、各開発者がク ラッシュ調査 • Crash-Kill meeting 9
  • 10. SOURCE CODE MANAGEMENTS 1
  • 11. CVS • Mozilla.orgプロジェクトはCVSを最初から利 用 • cvs.mozilla.org • SSHゕクセス用(コミッタのみ) • cvs-mirror.mozilla.org • Anonymous access(一般利用) • Bonsai • CVSのWeb Interface • http://bonsai.mozilla.org/
  • 12. 今はCVSじゃないものをメ゗ンに利用 12
  • 13. Why instead of CVS? • CVSには多くの問題が存在している • ブランチ • パフォーマンス • 帯域 • オフラ゗ンゕクセス 13
  • 14. Moving to … • メ゗ンの開発については、Mercurialに移行 • mozilla-central (Firefox / Gecko) • comm-central (Thunderbird / SeaMonkey) • etc • でも、いくつかのものは未だにCVS • NSS (Netscape / Network Security Service) • NSPR (Netscape Potable Runtime) • LDAP C SDK 14
  • 15. Mercurial 15
  • 16. Mercurial • マルチプラットフォーム対応の分散型VCS • 大部分がPythonで書かれている • Windows / Mac OS X / Unixをサポート • Mozillaのコードベースは複数のプラットフォーム対応を必要 とする • ホステゖング • Web゗ンターフェ゗スを標準で含む • パフォーマンス • CVSよりも圧倒的に速い
  • 17. Mercurial • サブプロジェクトレポジトリ • http://hg.mozilla.org/ or http://hg.mozilla.org/projects/ • リリース用 • http://hg.mozilla.org/releases/ • ユーザーレポジトリ • http://hg.mozilla.org/users/<email>/ 17
  • 18. その他 • Subversion • いくつかのプロジェクトで使用 18
  • 19. Committing Access • 現在は3レベルのパーミッションがある • Try Server用 • Sub projects用 (ex. TraceMonkey) • すべて (mozilla-central) • パーミッションを得るには… • 承認者が必要 • Commit Agreement Letters (FAXまたは手紙) • SSH Key 19
  • 20. コードレビュー • 基本はすべてのチェック゗ンするコードには、 コードレビューを受ける必要がある • 変更ポ゗ントが広い場合は、スーパーレビューも 必要 • コードレビューはすべてBugzilla上で行う • 差分は、Diff形式で添付 • 最近は、Mercurial Queue形式で添付するのが主 流 20
  • 21. 修正をコミット • コードレビューすれば、 コードのコミットが可能 になる • 権限がない人は、別の人 に頼むか、Bugzillaに checkin-neededキーワー ドを追加する • そうすると誰かがコミッ トしてくれる(大体はレ ビューを行った人) 21
  • 22. BUILDING SOUCE CODE 2
  • 23. Tinderbox • Automation Building & Testing Tools • Tier 1 Platform • Windows (x86 / x86-64) / Linux (x86 / x86-64) / Mac OS X (PPC / x86 / x86-64) • Mobile Tier 1 Platform • Maemo (GTK / Qt) • Android • Other (Port) Platform • Solaris (SPARC / x86) • Past… (Not current) • FreeBSD / OS/2
  • 24. Tinderbox • VMWare ESX • Run automation tests • Build / Test Result 24
  • 25. Tinderbox (Burning)
  • 26. Tinderbox • ビルドエラーやテスト失 敗の時はコメントを入れ るルール • ようは「オレのチェック ゗ンのせいじゃない」と 言い訳をしないといけな い • やらかした場合は、IRC で補足される 26
  • 27. Tree Status • 状況に応じてチェック゗ンが制限される時があ ります • CLOSED • 基本チェック゗ン不可 • サーバートラブルな時など • RESTRICTED • リリース直前やリリースレポジトリなど 27
  • 28. Tree Closed 28
  • 29. IRC Log (#developers) 11:57 (Callek) nthomas: so z_linearhistory fails, and pushlog unable to update... ? 11:57 (Mossop) Oh 11:57 (nthomas) 1) I'm not aravind 11:57 (Mossop) That is bad 11:57 (Callek) nthomas: _exactly_ 11:57 (nthomas) 2) probably 11:57 (nthomas) so file a blocker and close the tree 11:57 (Callek) philor: close tree please? 11:58 (Callek) (or really, anyone) 11:58 (khuey) hahaha 11:58 (khuey) today is a really bad day for the tree 11:58 (Mossop) facepalms 11:58 (Mossop) I knew I should have landed! 11:58 (sauron) poor Mossop 11:58 (khuey) !topic mozilla-central is CLOSED | http://build.mozilla.org/builds/pending 11:58 (khuey) er 11:58 (firebot) Check-in: http://hg.mozilla.org/releases/mozilla-1.9.1/rev/446e17503f87 - Jonas Sicking - Bug 529087: Fix crash involving XBL and cloned XUL elements. r=smaug a=dveditz 11:58 (mwu) 33 oranges? 11:58 *khuey topic : mozilla-central is CLOSED | http://build.mozilla.org/builds/pending 29
  • 30. Tinderbox • コミッタはここまでケゕする必要がある • だから、それの軽減をするツールが必要 • Tinderbox Pushlog • Tinderbox Topfails 30
  • 31. Tinderbox Pushlog 31
  • 32. Tinderbox Pushlog 32
  • 33. Mozilla Tinderbox Topfails 33
  • 34. AUTOMATION TESTS
  • 35. Why automation? • Mozillaのリソースは限られている • 手動でテストするなんて、無理 • Regressionの発見なんてうんざり
  • 36. Automation Tests • Talos • XPC Shell • RefTests • CrashTest • JsRefTest • MochiTest • MozMill 36
  • 37. Talos • パフォーマンステスト • スタートゕップやシャットダウン時間の計測 • ウゖンドウを開く速度の計測も • 有名なWebサ゗トのローカルコピーを利用し た描画速度計測 • 日本のWebサ゗トも含まれます。たとえばニコニ コ動画とかゕンサ゗クロペデゖゕとかとか
  • 38. Talos • パフォーマンスの結果は 随時送られる • パフォーマンスのレグ レッションに対しては、 コードのバックゕウトも あり 38
  • 39. XPC Shell • XPCOM API testing • 別名Unit Test • JavaScriptまたはC++でテストコードを作成 Components.utils.import("resource://gre/modules/Services.jsm"); function run_test() { // Needs a profile folder for the database. do_get_profile(); testURI(Services.io.newURI("about:mozilla", null, null)); testURI(Services.io.newURI("moz-safe-about:rights", null, null)); } function testURI(aURI) { print("Testing: " + aURI.spec); do_check_true(/about$/.test(aURI.scheme)); let principal = Components.classes["@mozilla.org/scriptsecuritymanager;1"]. getService(Components.interfaces.nsIScriptSecurityManager). getCodebasePrincipal(aURI); let dsm = Components.classes["@mozilla.org/dom/storagemanager;1"]. getService(Components.interfaces.nsIDOMStorageManager); let storage = dsm.getLocalStorageForPrincipal(principal, ""); storage.setItem("test-item", "test-value"); print("Check that our value has been correctly stored."); do_check_eq(storage.getItem("test-item"), "test-value"); storage.removeItem("test-item"); print("Check that our value has been correctly removed."); do_check_eq(storage.getItem("test-item"), null); }
  • 40. MochiTest • XULまたはHTMLでテスト項目を作成 • DOM操作に関するもの • XUL操作に関するもの • APIに関するもの <!DOCTYPE HTML> <html><head> <title>nsIDOMWindowUtils::nodesFromRect test - bug 489127</title> <script type="text/javascript" src="/MochiKit/packed.js"></script> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"> <script type="application/javascript"> SimpleTest.waitForExplicitFinish(); function done() { testwindow.close(); SimpleTest.finish(); } var testwindow = window.open("489127.html", '_new', 'width=600,height=400'); </script></head><body><p id="display"></p> <div id="content" style="display: none"> </body></html>
  • 41. RefTests • レンダリングテスト • 同じ描画結果をする2つのHTMLフゔ゗ルでの 描画結果を比較 • Firefox –reftest <reffile.list> <!DOCTYPE html PUBLIC "-//W3C//DTD <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> HTML 4.01 Transitional//EN"> <html> <html> <head> <head> <meta http-equiv="content-type" <meta http-equiv="content-type" content="text/html; charset=UTF-8"> content="text/html; charset=UTF-8"> <title>Bug 206802</title> <title>Bug 206802</title> </head> </head> <body> <body> <div style="width: 1px;">あ々あ々々 <div>あ々<br>あ々々</div> </div> </body> </body> </html> </html>
  • 42. Crash Test • クラッシュするテストケースを作成 • テスト内容としては、RefTestsと同じもの 42
  • 43. MozMill • Thunderbirdで主に使用 • Firefoxでも使うように作業中 • ユーザーの操作をPythonでエミューレート 43
  • 44. Try Server • テスト項目がたくさん • サポートするプラットフォームがたくさん • Geckoのコードの変更は、Thunderbirdにも SeaMonkeyにも影響 • 全員が全プラットフォームでテストするなんて、 無理 • なら、チェック゗ン前にテストをする必要があ るよね 44
  • 45. Try Server • メ゗ンレポジトリに影響せずにビルドテストや テスト項目の実行が可能 • ビルドされたバ゗ナリはダウンロード可能 • 2週間で削除される • Mercurial Queueの゗ンターフェ゗スまたは、 Web゗ンターフェ゗スでパッチをコミット • MozillaではMercurial Queueが実質必須 • http://mercurial.selenic.com/wiki/MqExtension 45
  • 46. COMMUNICATIONS / MEETING
  • 47. MEETINGS • Weekly widely meeting • Developer meeting • Platform • Mobile • Etc (e10s and etc) • Firefox delivery meeting • Marketing • 電話参加または、Air Mozilla • http://air.mozilla.com/ 47
  • 48. IRC • irc://irc.mozilla.org/ • 多くのチャンネルが存在する • #developers … All developers (200名強) • #mobile … Mobile Developers (90名強) • #maildev … Thunderbird Developers (50名強) • Etc • 基本的な連絡、決定事項はすべてIRCで 48
  • 49. Mailing List • 項目ごとに様々 • NetNewsまたは、Google Groupsで参照可能 • http://groups.google.com/groups/dir?sel=use net%3Dmozilla%2C& • nntp://news.mozilla.org/ 49
  • 50. WIKI • http://wiki.mozilla.org/ • Meeting Minutesなども基本公開 • https://wiki.mozilla.org/WeeklyUpdates • https://wiki.mozilla.org/Platform • https://wiki.mozilla.org/Mobile/Notes 50
  • 51. Any Question? 51