SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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

Tendances (20)

20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
xUnitハンズオン第4回テキスト
xUnitハンズオン第4回テキストxUnitハンズオン第4回テキスト
xUnitハンズオン第4回テキスト
 
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテストスーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
 
Neo4j を Javaプログラムから使う
Neo4j を Javaプログラムから使うNeo4j を Javaプログラムから使う
Neo4j を Javaプログラムから使う
 
Windowsでhaskell
WindowsでhaskellWindowsでhaskell
Windowsでhaskell
 
Jenkins tips 20161014
Jenkins tips 20161014Jenkins tips 20161014
Jenkins tips 20161014
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
 
node.js koとhtml5とwebsocketsと
node.js koとhtml5とwebsocketsとnode.js koとhtml5とwebsocketsと
node.js koとhtml5とwebsocketsと
 
OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
C# design note sep 2014
C# design note sep 2014C# design note sep 2014
C# design note sep 2014
 
テスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたテスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみた
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
HTTP/2の現状とこれから
HTTP/2の現状とこれからHTTP/2の現状とこれから
HTTP/2の現状とこれから
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
 
AsyncTask アンチパターン
AsyncTask アンチパターンAsyncTask アンチパターン
AsyncTask アンチパターン
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 

En vedette

Analisis Struktur Jalur
Analisis Struktur JalurAnalisis Struktur Jalur
Analisis Struktur Jalurpipin
 
Dia del libro 23 de abril
Dia del libro 23 de abrilDia del libro 23 de abril
Dia del libro 23 de abrilO9O7
 
Glosario Administrativo
Glosario AdministrativoGlosario Administrativo
Glosario Administrativoguestcd2b35
 
Aventuras del pequeño chiri
Aventuras del pequeño chiriAventuras del pequeño chiri
Aventuras del pequeño chiriElisa
 

En vedette (8)

Analisis Struktur Jalur
Analisis Struktur JalurAnalisis Struktur Jalur
Analisis Struktur Jalur
 
Dia del libro 23 de abril
Dia del libro 23 de abrilDia del libro 23 de abril
Dia del libro 23 de abril
 
Mi presentacion
Mi presentacionMi presentacion
Mi presentacion
 
Glosario Administrativo
Glosario AdministrativoGlosario Administrativo
Glosario Administrativo
 
Aventuras del pequeño chiri
Aventuras del pequeño chiriAventuras del pequeño chiri
Aventuras del pequeño chiri
 
Afip
AfipAfip
Afip
 
Underwater
UnderwaterUnderwater
Underwater
 
B08 lax
B08 laxB08 lax
B08 lax
 

Similaire à Firefoxの開発プロセス

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

Similaire à Firefoxの開発プロセス (20)

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

Plus de Makoto Kato

Active scripting
Active scriptingActive scripting
Active scriptingMakoto Kato
 
e10sとアプリ間通信
e10sとアプリ間通信e10sとアプリ間通信
e10sとアプリ間通信Makoto Kato
 
Firefox OSのアーキテクチャと構成技術
Firefox OSのアーキテクチャと構成技術Firefox OSのアーキテクチャと構成技術
Firefox OSのアーキテクチャと構成技術Makoto Kato
 
Openness, Innovation and Opptunity
Openness, Innovation and OpptunityOpenness, Innovation and Opptunity
Openness, Innovation and OpptunityMakoto Kato
 
Firefox 4 and Mobile
Firefox 4 and MobileFirefox 4 and Mobile
Firefox 4 and MobileMakoto Kato
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internalsMakoto Kato
 
Firefox 4 with SVG
Firefox 4 with SVGFirefox 4 with SVG
Firefox 4 with SVGMakoto Kato
 
Firefox for mobile
Firefox for mobileFirefox for mobile
Firefox for mobileMakoto Kato
 
ブラウザの歴史
ブラウザの歴史ブラウザの歴史
ブラウザの歴史Makoto Kato
 
CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情Makoto Kato
 
FirefoxとMozillaでのSVGの取り組み
FirefoxとMozillaでのSVGの取り組みFirefoxとMozillaでのSVGの取り組み
FirefoxとMozillaでのSVGの取り組みMakoto Kato
 

Plus de Makoto Kato (20)

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

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