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

20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
YohichiShiina
 
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
 
Windowsでhaskell
WindowsでhaskellWindowsでhaskell
Windowsでhaskell
Tadahiro Ishisaka
 
Jenkins tips 20161014
Jenkins tips 20161014Jenkins tips 20161014
Jenkins tips 20161014
Hideaki Ishijima
 
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 #1
Mibu Ryota
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji 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 上でビルドする UPDATE2
Tomofumi Yagi
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
 

What's hot (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
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to Firefoxの開発プロセス

テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro 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.
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
 
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
GoAzure
 
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
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
Takashi Kokawa
 
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 later
Makoto Kato
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
uupaa
 
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勉強会 #4
Satoshi Yazawa
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
 

Similar to 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
 

More from Makoto Kato

Active scripting
Active scriptingActive scripting
Active scripting
Makoto 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 Opptunity
Makoto Kato
 
Mobile Web
Mobile WebMobile Web
Mobile Web
Makoto Kato
 
Firefox Mobile
Firefox MobileFirefox Mobile
Firefox Mobile
Makoto 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
 
"Open"
"Open""Open"
"Open"
Makoto Kato
 
ブラウザの歴史
ブラウザの歴史ブラウザの歴史
ブラウザの歴史
Makoto Kato
 
Raindrop
RaindropRaindrop
Raindrop
Makoto Kato
 
CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情
Makoto Kato
 
FirefoxとMozillaでのSVGの取り組み
FirefoxとMozillaでのSVGの取り組みFirefoxとMozillaでのSVGの取り組み
FirefoxとMozillaでのSVGの取り組み
Makoto Kato
 

More from 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の取り組み
 

Recently uploaded

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 

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