SlideShare a Scribd company logo
Firefoxの開発プロセス

   Makoto Kato
   Mozilla Japan
Agenda

• Bug Management
• Source Code Management
• Automation Tools
• Communication
About Mozilla

• Mozilla Foundation
 •   Mozilla Corporation
 •   Mozilla Messaging
 •   Mozilla China
 •   Mozilla Europe
 •   Mozilla Japan
Mozilla

• 現在では世界中にオフゖスがあります
 •   ゕメリカ (マウンテンビュー)
 •   カナダ (バンクーバー / トロント)
 •   ニュージーランド
 •   パリ (Mozilla Europe)
 •   北京 (Mozilla China)
 •   東京 (Mozilla Japan)
 •   その他




                          4
BUG MANAGEMENTS




5
Bugzilla

• Mozilla.org設立時に作られたバグトラッキン
  グシステム(BTS)
• http://www.bugzilla.org/
• Netscapeでは別のBTSを利用していたけど、
  Mozilla.orgのために新規開発を行う
• 最新版は3.6
 •   https://bugzilla.mozilla.org/では、3.4.6を利用
Mozilla.org’s Bugzilla




          7
• 新規バグはステータスが基本UNCONFORMED
  で作成
• 誰かが確認すればNEWに
 •   人によっては、UNCONFORMEDじゃなくて、
     NEWで作れたり、Assignを変えられる権限もって
     ます
• セキュリテゖバグは、一部メンバのみ参照可能
 •   CCに入れられれば見えますが




                8
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
SOURCE CODE MANAGEMENTS




1
CVS

• Mozilla.orgプロジェクトはCVSを最初から利
  用
• cvs.mozilla.org
 •   SSHゕクセス用(コミッタのみ)
• cvs-mirror.mozilla.org
 •   Anonymous access(一般利用)
• Bonsai
 •   CVSのWeb Interface
 •   http://bonsai.mozilla.org/
今はCVSじゃないものをメ゗ンに利用




        12
Why instead of CVS?

• CVSには多くの問題が存在している
 •   ブランチ
 •   パフォーマンス
 •   帯域
 •   オフラ゗ンゕクセス




                   13
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
Mercurial




    15
Mercurial

• マルチプラットフォーム対応の分散型VCS
 •       大部分がPythonで書かれている
 •       Windows / Mac OS X / Unixをサポート
     •    Mozillaのコードベースは複数のプラットフォーム対応を必要
          とする

• ホステゖング
 •       Web゗ンターフェ゗スを標準で含む
• パフォーマンス
 •       CVSよりも圧倒的に速い
Mercurial

• サブプロジェクトレポジトリ
 •   http://hg.mozilla.org/ or
     http://hg.mozilla.org/projects/
• リリース用
 •   http://hg.mozilla.org/releases/
• ユーザーレポジトリ
 •   http://hg.mozilla.org/users/<email>/




                        17
その他

• Subversion
 •   いくつかのプロジェクトで使用




                18
Committing Access

• 現在は3レベルのパーミッションがある
 •   Try Server用
 •   Sub projects用 (ex. TraceMonkey)
 •   すべて (mozilla-central)
• パーミッションを得るには…
 •   承認者が必要
 •   Commit Agreement Letters (FAXまたは手紙)
 •   SSH Key




                      19
コードレビュー

• 基本はすべてのチェック゗ンするコードには、
  コードレビューを受ける必要がある
 •   変更ポ゗ントが広い場合は、スーパーレビューも
     必要
• コードレビューはすべてBugzilla上で行う
 •   差分は、Diff形式で添付
 •   最近は、Mercurial Queue形式で添付するのが主
     流




                 20
修正をコミット
•   コードレビューすれば、
    コードのコミットが可能
    になる
•   権限がない人は、別の人
    に頼むか、Bugzillaに
    checkin-neededキーワー
    ドを追加する
•   そうすると誰かがコミッ
    トしてくれる(大体はレ
    ビューを行った人)




                         21
BUILDING SOUCE CODE




2
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
Tinderbox

• VMWare ESX
• Run automation tests
• Build / Test Result




                        24
Tinderbox (Burning)
Tinderbox
•   ビルドエラーやテスト失
    敗の時はコメントを入れ
    るルール
•   ようは「オレのチェック
    ゗ンのせいじゃない」と
    言い訳をしないといけな
    い
•   やらかした場合は、IRC
    で補足される




                   26
Tree Status

• 状況に応じてチェック゗ンが制限される時があ
  ります
• CLOSED
 •   基本チェック゗ン不可
 •   サーバートラブルな時など
• RESTRICTED
 •   リリース直前やリリースレポジトリなど




                    27
Tree Closed




     28
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
Tinderbox

• コミッタはここまでケゕする必要がある
• だから、それの軽減をするツールが必要
 •   Tinderbox Pushlog
 •   Tinderbox Topfails




                          30
Tinderbox Pushlog




        31
Tinderbox Pushlog




        32
Mozilla Tinderbox Topfails




            33
AUTOMATION TESTS
Why automation?

• Mozillaのリソースは限られている
• 手動でテストするなんて、無理
• Regressionの発見なんてうんざり
Automation Tests

• Talos
• XPC Shell
• RefTests
• CrashTest
• JsRefTest
• MochiTest
• MozMill




                     36
Talos

• パフォーマンステスト
• スタートゕップやシャットダウン時間の計測
• ウゖンドウを開く速度の計測も
• 有名なWebサ゗トのローカルコピーを利用し
  た描画速度計測
 •   日本のWebサ゗トも含まれます。たとえばニコニ
     コ動画とかゕンサ゗クロペデゖゕとかとか
Talos
•   パフォーマンスの結果は
    随時送られる
•   パフォーマンスのレグ
    レッションに対しては、
    コードのバックゕウトも
    あり




                  38
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);
}
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>
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>
Crash Test

• クラッシュするテストケースを作成
• テスト内容としては、RefTestsと同じもの




             42
MozMill

• Thunderbirdで主に使用
• Firefoxでも使うように作業中
• ユーザーの操作をPythonでエミューレート




               43
Try Server

• テスト項目がたくさん
• サポートするプラットフォームがたくさん
• Geckoのコードの変更は、Thunderbirdにも
  SeaMonkeyにも影響
• 全員が全プラットフォームでテストするなんて、
  無理
• なら、チェック゗ン前にテストをする必要があ
  るよね




              44
Try Server

• メ゗ンレポジトリに影響せずにビルドテストや
  テスト項目の実行が可能
• ビルドされたバ゗ナリはダウンロード可能
 •       2週間で削除される
• Mercurial Queueの゗ンターフェ゗スまたは、
  Web゗ンターフェ゗スでパッチをコミット
 •       MozillaではMercurial Queueが実質必須
     •    http://mercurial.selenic.com/wiki/MqExtension




                               45
COMMUNICATIONS / MEETING
MEETINGS

• Weekly widely meeting
• Developer meeting
 •   Platform
 •   Mobile
 •   Etc (e10s and etc)
• Firefox delivery meeting
 •   Marketing
• 電話参加または、Air Mozilla
 •   http://air.mozilla.com/


                          47
IRC

• irc://irc.mozilla.org/
• 多くのチャンネルが存在する
  •   #developers … All developers (200名強)
  •   #mobile … Mobile Developers (90名強)
  •   #maildev … Thunderbird Developers (50名強)
  •   Etc
• 基本的な連絡、決定事項はすべてIRCで




                       48
Mailing List

• 項目ごとに様々
• NetNewsまたは、Google Groupsで参照可能
 •   http://groups.google.com/groups/dir?sel=use
     net%3Dmozilla%2C&
 •   nntp://news.mozilla.org/




                       49
WIKI

• http://wiki.mozilla.org/
• Meeting Minutesなども基本公開
  •   https://wiki.mozilla.org/WeeklyUpdates
  •   https://wiki.mozilla.org/Platform
  •   https://wiki.mozilla.org/Mobile/Notes




                         50
Any Question?




      51

More Related Content

What's hot (20)

PDF
20210515 cae linux_install_vb
YohichiShiina
 
PPTX
xUnitハンズオン第4回テキスト
mizuky fujitani
 
PDF
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
Masanori Sumitomo
 
PDF
Neo4j を Javaプログラムから使う
Masahiro Satake
 
PDF
Windowsでhaskell
Tadahiro Ishisaka
 
PPTX
Jenkins tips 20161014
Hideaki Ishijima
 
PDF
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
shigeki_ohtsu
 
ODP
node.js koとhtml5とwebsocketsと
scdn
 
PDF
OPNFV Handson Tokyo #1
Mibu Ryota
 
PDF
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
 
PPTX
C# design note sep 2014
信之 岩永
 
PDF
テスト環境まるごとAwsにのっけてみた
Kazuaki Fujikura
 
PPTX
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
 
PDF
jenkinsで遊ぶ
(^-^) togakushi
 
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
 
PDF
HTTP/2の現状とこれから
shigeki_ohtsu
 
PDF
JavaScriptでWebDriverのテストコードを書きましょ
Kohki Nakashima
 
PDF
AsyncTask アンチパターン
Hiroshi Kurokawa
 
PDF
LibreOffice を Windows 上でビルドする UPDATE2
Tomofumi Yagi
 
PDF
jjugccc2018 app review postmortem
tamtam180
 
20210515 cae linux_install_vb
YohichiShiina
 
xUnitハンズオン第4回テキスト
mizuky fujitani
 
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
Masanori Sumitomo
 
Neo4j を Javaプログラムから使う
Masahiro Satake
 
Windowsでhaskell
Tadahiro Ishisaka
 
Jenkins tips 20161014
Hideaki Ishijima
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
shigeki_ohtsu
 
node.js koとhtml5とwebsocketsと
scdn
 
OPNFV Handson Tokyo #1
Mibu Ryota
 
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
 
C# design note sep 2014
信之 岩永
 
テスト環境まるごとAwsにのっけてみた
Kazuaki Fujikura
 
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
 
jenkinsで遊ぶ
(^-^) togakushi
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
 
HTTP/2の現状とこれから
shigeki_ohtsu
 
JavaScriptでWebDriverのテストコードを書きましょ
Kohki Nakashima
 
AsyncTask アンチパターン
Hiroshi Kurokawa
 
LibreOffice を Windows 上でビルドする UPDATE2
Tomofumi Yagi
 
jjugccc2018 app review postmortem
tamtam180
 

Viewers also liked (8)

DOCX
Analisis Struktur Jalur
pipin
 
PPT
Dia del libro 23 de abril
O9O7
 
PPTX
Mi presentacion
Antonio Gonzales
 
PPTX
Glosario Administrativo
guestcd2b35
 
PPT
Aventuras del pequeño chiri
Elisa
 
DOC
Afip
guest86fccb
 
PPS
Underwater
Puntaprima bc
 
PDF
B08 lax
Nombre Apellidos
 
Analisis Struktur Jalur
pipin
 
Dia del libro 23 de abril
O9O7
 
Mi presentacion
Antonio Gonzales
 
Glosario Administrativo
guestcd2b35
 
Aventuras del pequeño chiri
Elisa
 
Underwater
Puntaprima bc
 
Ad

Similar to Firefoxの開発プロセス (20)

PDF
テスト勉強会よしおか100311 1
Hiro Yoshioka
 
PDF
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
KEY
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
 
PDF
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
PDF
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
PDF
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
 
PPTX
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
GoAzure
 
PDF
ALMツールたべくらべ
Kaoru NAKAMURA
 
PDF
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
Kazuhiro Hara
 
PDF
ProjectAtomic-and-geard
Naoto TAKAHASHI
 
PDF
Gamedevenvstudy1
Takashi Kokawa
 
PDF
Modulemaking
Hikawa Kilica
 
PDF
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
 
PDF
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
Makoto Kato
 
PDF
JavaScript And Keywords
uupaa
 
PDF
IT Pro のための PowerShell スクリプティング
Kazuki Takai
 
PDF
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
Tetsuo Yamabe
 
PPTX
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
Satoshi Yazawa
 
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
 
PDF
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
 
テスト勉強会よしおか100311 1
Hiro Yoshioka
 
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
GoAzure
 
ALMツールたべくらべ
Kaoru NAKAMURA
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
Kazuhiro Hara
 
ProjectAtomic-and-geard
Naoto TAKAHASHI
 
Gamedevenvstudy1
Takashi Kokawa
 
Modulemaking
Hikawa Kilica
 
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
 
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
Makoto Kato
 
JavaScript And Keywords
uupaa
 
IT Pro のための PowerShell スクリプティング
Kazuki Takai
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
Tetsuo Yamabe
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
Satoshi Yazawa
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
 
Ad

More from Makoto Kato (20)

PDF
Active scripting
Makoto Kato
 
PDF
e10sとアプリ間通信
Makoto Kato
 
PDF
Emoji
Makoto Kato
 
PDF
Moz2D
Makoto Kato
 
PDF
Firefox OSのアーキテクチャと構成技術
Makoto Kato
 
PDF
Openness, Innovation and Opptunity
Makoto Kato
 
PDF
Mobile Web
Makoto Kato
 
PDF
Firefox Mobile
Makoto Kato
 
PDF
Firefox 4 and Mobile
Makoto Kato
 
PDF
Mobile addon
Makoto Kato
 
PDF
keep it real
Makoto Kato
 
PDF
Firefox mobile for android internals
Makoto Kato
 
PDF
Think.next
Makoto Kato
 
PDF
Firefox 4 with SVG
Makoto Kato
 
PDF
Firefox for mobile
Makoto Kato
 
PDF
"Open"
Makoto Kato
 
PDF
ブラウザの歴史
Makoto Kato
 
PDF
Raindrop
Makoto Kato
 
PDF
CSS3の最新事情
Makoto Kato
 
PDF
FirefoxとMozillaでのSVGの取り組み
Makoto Kato
 
Active scripting
Makoto Kato
 
e10sとアプリ間通信
Makoto Kato
 
Firefox OSのアーキテクチャと構成技術
Makoto Kato
 
Openness, Innovation and Opptunity
Makoto Kato
 
Mobile Web
Makoto Kato
 
Firefox Mobile
Makoto Kato
 
Firefox 4 and Mobile
Makoto Kato
 
Mobile addon
Makoto Kato
 
keep it real
Makoto Kato
 
Firefox mobile for android internals
Makoto Kato
 
Think.next
Makoto Kato
 
Firefox 4 with SVG
Makoto Kato
 
Firefox for mobile
Makoto Kato
 
"Open"
Makoto Kato
 
ブラウザの歴史
Makoto Kato
 
Raindrop
Makoto Kato
 
CSS3の最新事情
Makoto Kato
 
FirefoxとMozillaでのSVGの取り組み
Makoto Kato
 

Recently uploaded (9)

PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 

Firefoxの開発プロセス

  • 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
  • 6. Bugzilla • Mozilla.org設立時に作られたバグトラッキン グシステム(BTS) • http://www.bugzilla.org/ • Netscapeでは別のBTSを利用していたけど、 Mozilla.orgのために新規開発を行う • 最新版は3.6 • https://bugzilla.mozilla.org/では、3.4.6を利用
  • 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
  • 11. CVS • Mozilla.orgプロジェクトはCVSを最初から利 用 • cvs.mozilla.org • SSHゕクセス用(コミッタのみ) • cvs-mirror.mozilla.org • Anonymous access(一般利用) • Bonsai • CVSのWeb Interface • http://bonsai.mozilla.org/
  • 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
  • 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
  • 26. Tinderbox • ビルドエラーやテスト失 敗の時はコメントを入れ るルール • ようは「オレのチェック ゗ンのせいじゃない」と 言い訳をしないといけな い • やらかした場合は、IRC で補足される 26
  • 27. Tree Status • 状況に応じてチェック゗ンが制限される時があ ります • CLOSED • 基本チェック゗ン不可 • サーバートラブルな時など • RESTRICTED • リリース直前やリリースレポジトリなど 27
  • 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
  • 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
  • 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