Your SlideShare is downloading. ×
0
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

P2P Bug Tracking with SD

5,736

Published on

SD is a new distributed issue tracking system designed for the open web.

SD is a new distributed issue tracking system designed for the open web.

Published in: Technology, Business
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
5,736
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
29
Comments
1
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. P2P Bug Tracking with SD http://syncwith.us curl fsck.com/sd|perl; ~/sd/bin/sd SD を使った P2P バグトラッキング
  2. Hi! こんにちは
  3. I’m Jesse (obra) Jesse です
  4. I own a small software company 小さな会社の社長をしています
  5. (Best Practical)
  6. I’ve been making issue trackers since 1995 1995 年からバグトラッカーを作ってきました
  7. Our software has some bugs うちのソフトには バグがあります
  8. All software has some bugs どんなソフトでもバグはあります
  9. (All software is made of bugs) ソフトなんてバグでできているのです
  10. I spend a lot of time on airplanes... 私はよく飛行機に乗ります
  11. ...and at conferences with bad wifi ネットにつながりにくい イベントにもよく行きます
  12. I need to keep track of our bugs and our work でも、バグや仕事から目を 離すわけにはいきません
  13. I’m the boss 社長ですから
  14. I have no excuse for not doing my work 言い訳は通用しません
  15. I need to keep track of our bugs and our work even when I don’t have net access ネットがなくてもバグや仕事は 管理しないといけないのです
  16. I’ve tried everything あらゆる方法を試してみました
  17. Text files テキストファイル
  18. Text files in version control バージョン管理した テキストファイル
  19. IMAP Servers IMAP サーバ
  20. RSS Feeds RSS フィード
  21. Running RT on my laptop ラップトップで RT を走らせてみたり
  22. Keeping browsers open ブラウザを開きっぱなしにしてみたり
  23. Nothing was quite right どれもイマイチでした
  24. So we built SD そこで作ったのが SD です
  25. SD is a Bug Tracker SD はバグトラッカーです
  26. SD is a Distributed Bug Tracker SD は分散型のバグトラッカーです
  27. SD Features ( の特徴 ) Tracks bugs P2P Sync CLI Trac Sync Web UI RT Sync Scriptable Hiveminder Sync Works offline GitHub Sync Attachments Comments Google Code Sync Customizable workflow Conflict Resolution Custom properties Git integration Darcs integration
  28. Principles of distributed computing 分散コンピューティングの原理
  29. Bill Joy, Tom Lyon, Peter Deutsch and James Gosling created these ビル・ジョイらはこんなものを作りました
  30. The network is reliable ネットワークが信頼できて
  31. Latency is zero 遅延時間はゼロで
  32. Bandwidth is infinite 帯域幅は無限
  33. The network is secure ネットワークは安全で
  34. Transport cost is zero 転送料はゼロ
  35. The network is homogeneous ネットワークは均質で
  36. Topology doesn't change ネットワークの構成は変化しない
  37. There is one administrator 管理者はひとり
  38. I didn’t make those up 私にはそんなもの用意できませんでした
  39. Bill Joy, Tom Lyon, Peter Deutsch and James Gosling did 彼らは用意しましたが
  40. s ie of lac Principles l a F distributed computing 分散コンピューティングの原理
  41. Those are all LIES そんなものは真っ赤な嘘です
  42. The network is not reliable ネットワークなんて信頼できません
  43. SD isn’t network- dependent だから SD はネットワークに依存しません
  44. Latency hurts 遅延時間もひどいものです
  45. SD runs at the edge だから SD は境界上で動作します
  46. Bandwidth is always a problem 帯域幅はいつでも悩みの種です
  47. SD knows which changesets you’ve already seen だから SD はどのチェンジセット を見たか覚えています
  48. The network is insecure ネットワークは安全ではありません
  49. SD doesn’t depend on a network security layer だから SD はネットワークのセキ ュリティ層には依存しません
  50. Topology is unpredictable and fluid ネットワークの構成は予測 できませんし流動的です
  51. SD is topology- agnostic だから SD は構成不可知 論の立場をとります
  52. There is no administrator 管理者なんていません
  53. (But there are many people who think they’re administrators) そのつもりでいる人はたくさんいますが
  54. SD lets you implement policy in the centralized systems it syncs to だから SD は同期先の中央管理システム側で ポリシーを実装できるようになっています
  55. Transport costs money 転送料はタダではありません
  56. SD doesn’t use much bandwidth & can use non-network substrates だから SD はあまり帯域幅を使いません。 ネットワーク以外の下位層にも対応しています
  57. The network is heterogeneous ネットワークは均質ではありません
  58. SD is designed to sync to foreign systems だから SD は外部のシステムと同期 できるようになっています
  59. SD runs locally SD はローカルで実行できます
  60. SD plays well with others ほかのソフトともうまくつきあえます
  61. It syncs the way you do 同期の取り方は人間と同じ
  62. Clone a project’s bug database (over HTTP) (HTTP 経由で ) プロジェクトの バグデータベースのクローンを作って
  63. Work offline オフラインで作業して
  64. Pull changesets from anyone you work with 仕事仲間からチェンジセットを取ってきて
  65. Publish your database replica with rsync データベースの複製を rsync で公開
  66. Topology doesn’t matter... ネットワークの構成なんて関係ありません
  67. Don’t worry ご心配なく
  68. It won’t break それでも壊れませんから
  69. SD learns how to resolve each conflict... SD は衝突の解決策をひとつ ひとつ学んでいきます
  70. ...based on how everyone else resolves it ベースとなるのは、ほか の人がどう解決したかです
  71. Using SD (CLI) SD の使い方 (CLI)
  72. Getting Started 使ってみましょう
  73. SD Shell $ sd シェル
  74. ./
  75. Getting help $ sd help ヘルプ
  76. Creating a new project $ sd init 新規プロジェクトの作成
  77. Project settings $ sd settings プロジェクトの設定
  78. Config file $ sd config 設定ファイル
  79. Create a bug $ sd ticket create バグ情報を登録する
  80. Listing bugs $ sd ticket list バグ情報の一覧表示
  81. Show a bug $ sd ticket show バグ情報を表示する
  82. Update a bug $ sd ticket update バグ情報を更新する
  83. Log $ sd log ログ
  84. Git Integration $ git sd Git に統合
  85. Using SD (Web) SD の使い方 (Web)
  86. Web? Isn’t SD an offline tool? あれ、 SD ってオフラインツー ルじゃなかったの?
  87. Local microserver ローカルのマイクロサーバ
  88. $ sd browser
  89. Home ホーム
  90. Create a ticket チケットを登録する
  91. Search 検索
  92. Show a bug バグ情報を表示する
  93. Update a bug バグ情報を更新する
  94. Comments コメント
  95. History 履歴
  96. Working with others ほかの人と一緒に作業する場合
  97. Working with others (Using SD) ほかの人と一緒に作業する場合 (SD を利用 )
  98. Any topology ネットワークの構成は任意
  99. It doesn’t matter who you sync with 同期する相手は誰でもかまいません
  100. You get all the updates eventually そのうちすべての更新情報が届きます
  101. Cloning $ sd clone クローン
  102. clone makes a replica of someone else’s database クローンするとほかの人のデー タベースの複製を作ります
  103. Pulling $ sd pull 取得
  104. pull imports unseen changes from another database replica ほかのデータベースの複製から未見 の変更をインポートします
  105. Publishing $ sd publish 公開
  106. publish writes out a copy of your database replica for sharing データベースの複製のコピーをほかの人と共 有できるように書き出します
  107. (As SD changesets and static HTML) SD のチェンジセットと静的な HTML の形で
  108. Hackathon mode (using Bonjour) ハッカソンモード (Bonjour を使って )
  109. Publish your replica $ sd server
  110. Pull updates $ sd pull --local 更新を取得
  111. Working with others (Using other systems) ほかの人と一緒に作業する場合 ( ほかのシステムを使う )
  112. But you already have a bug tracker? もうバグトラッカーを使っていますって?
  113. No Problem! 大丈夫!
  114. I use at least two others. 私も少なくともあと 2 つ使っています
  115. I wrote at least two others. 少なくともあと 2 つ書きました
  116. We designed SD talk to foreign bug trackers Sd は外部のバグトラッカーともや りとりできるように設計しました
  117. RT
  118. RT::Client::REST (By DMITRI, DAMS & AMS)
  119. Hiveminder
  120. Net::Jifty (by SARTAK)
  121. Trac
  122. Net::Trac (by JESSE & TSIBLEY)
  123. Google Code
  124. Net::Google::Code (by SUNNAVY and FAYLAND)
  125. GitHub
  126. Net::GitHub (by FAYLAND)
  127. Lighthouse (VERY beta!)
  128. Net::Lighthouse (by SUNNAVY)
  129. Redmine (Read-only for now)
  130. Net::Redmine (by GUGOD)
  131. Want to help with Bugzilla, Jira, FogBugz or something else? Bugzilla とかも使いたい?
  132. Work with foreign replicas in a Star Topology スター構成にすれば外部の複製も使えます
  133. X An SD node can act as a gateway SD のノードはゲートウェイにもなります
  134. Clone $ sd clone クローン
  135. Clone from Google Code $ sd clone --from gcode:k9mail Google Code から
  136. Clone from RT $ sd clone --from "rt:https://rt.cpan.org|DBI|" RT から
  137. Clone from Trac $ sd clone --from trac:https://trac.parrot.org/parrot Trac から
  138. Clone from GitHub $ git sd clone --from github:miyagawa/remedie Github から
  139. SD reverse engineers a database history SD はデータベースの履歴を逆解析します
  140. Pull $ sd pull
  141. SD reverse engineers a partial database history SD は部分的なデータベースの 履歴も逆解析します
  142. Push $ sd push
  143. SD figures out local updates and sends them upstream SD はローカルの更新を見 つけて上流に送ります
  144. (Then it does a bunch of book-keeping) それからさまざまな記録をつけます
  145. So what’s that all look like in the real world? 実際の例を見てみましょう
  146. Google Code Alice’s SD Bob’s SD Create some bugs clone --from gcode:k9mail Alice’s SD makes a full copy of the k9mail from google code Someone updates ticket 12 ticket update 13 ticket create pull --from k9mail SD integrates upstream changes from Google Code since Alice ran the ‘clone’ command. push --to k9mail SD figures out what’s changed locally since the original ‘clone’ command. SD then sends any changes that Google Code hasn’t seen upstream as ticket updates. Alice’s new ticket and her updates to ticket 13 are now part of the upstream bug database in Google Code publish --to SD exports a full copy of Alice’s bug database and rsyncs alice.com:public_html/k9 it up to alice.com/k9. Anyone browsing alice.com/k9 can clone her SD replica. (Or see it in static HTML) clone --from http://alice.com/k9 Bob makes a full copy of Alice’s SD replica of the k9mail database. He’s now free to make changes to his local database replica. ticket update 45 ticket create ticket create ticket update 45 publish --to bob.com:public_html/k9 Bob publishes his full K9 bug database. Anyone browsing bob.com/k9 can clone Bob’s K9 replica. Anyone who already has a copy of Alice or Bob’s database can incorporate Bob’s new ticket and his changes to ticket 45. pull --from http://bob.com/k9 Alice’s SD pulls all previously unseen updates from Bob’s published database replica and incorporates them. If Bob's edits to ticket 45 didn't conflict, Alice's SD incorporate them. If they did conflict, Alice will be prompted to resolve the conflict.
  147. Installing SD SD のインストール
  148. It’s time to get SD up and running いよいよ SD を走らせてみましょう
  149. SD is in Perl SD は Perl で書かれています
  150. SD uses 45-90 CPAN modules 45 ~ 90 個の CPAN モジュールを使っています
  151. Are you afraid? 大変そう?
  152. Don’t be 心配ご無用
  153. I have a novel idea for a Perl application これまでの Perl アプリとは違う 新しいやり方を思いついたんです
  154. One-tweet install. インストールはつぶやき 1 回分
  155. I’m installing #SD (http://syncwith.us) after seeing @obra’s talk at #YAPCASIA! YAPCASIA で @obra の話を見て #SD (http://syncwith.us) をインストールしてる
  156. 80 bytes! I still have 60 to work with! 80 バイト !  まだ 60 バイトもありますよ !
  157. I’m installing #SD (http://syncwith.us) after seeing @obra’s talk at #YAPCASIA! curl fsck.com/sd|perl; export PATH=~/sd/bin:$PATH; sd curl fsck.com/sd|perl; export PATH=~/sd/bin:$PATH; sd
  158. You’ll need: curl, perl 5.8, C compiler 必要なのは curl, perl 5.8, C コンパイラ
  159. You won’t need: CPAN CPAN 不要
  160. You won’t need: to answer prompts 質問に答えたりする必要もなし
  161. You won’t need: to fix dependencies 依存モジュールの修正も不要
  162. SD is in Perl SD は Perl で書かれています
  163. SD uses CPAN modules. CPAN モジュールも使っています
  164. This is a blessing. ありがたいことです
  165. This is a curse. 呪いでもありますが
  166. CPAN = Dependency Hell CPAN は依存地獄です
  167. When we first built SD, we used anything we thought was useful SD を最初に作ったときは便利 そうなものを使いまくりました
  168. (The first version of SD used a SVN backend) 最初のバージョンはバックエンドに SVN を使っていました
  169. The first ~useful version of SD: 最初のバージョンがほぼ使えるように なったときはこんな感じでした
  170. 123 Dependencies 123 個の依存モジュール
  171. ...a couple hours later … 数時間後には
  172. 54 Dependencies 54 個の依存モジュール
  173. Only one needs a compiler. コンパイラが必要なのは 1 つだけ
  174. Shipwright gives us one-command install Shipwright のおかげでコマンド 1 つでイン ストールできるようになりました
  175. curl fsck.com/sd|perl export PATH=$PATH:~/sd/bin
  176. What’s that do? どうなってるのか
  177. curl
  178. perl
  179. $ head /Library/WebServer/Documents/sd open (my $tar,'|tar xz 2>/dev/null'); while (<DATA>) { print $tar $_; } close $tar; exec("cd sd-build; bin/shipwright-builder --install-base=$ENV{HOME}/sd"); __DATA__ ?I?Isd-build.tar?<is?F???_1? 䀌 yH?"#‫{$ٲ‬U???H?eH ...
  180. Shipwright installs a few Perl modules... Shipwright は Perl モジュールをいくつかイ ンストールします…
  181. ...in order 順にあげると…
  182. Scalar-List-Utils String-BufferStack Class-Accessor Class-Data-Inheritable Tree-DAG_Node Test-Simple Sub-Uplevel Test-Exception Array-Compare Test- Warn Template-Declare URI HTTP-Server-Simple Params-Util Class-Inspector File-ShareDir DBI DBD-SQLite HTML-Tagset HTML-Parser HTML-Tree Crypt- SSLeay JSON YAML-Syck JSON-XS JSON-DWIW JSON-Any Mouse Any-Moose Compress-Raw-Zlib Compress-Raw-Bzip2 IO-Compress libwww-perl HTTP- Response-Encoding WWW-Mechanize WWW-Mechanize-GZip File-Slurp Test- MockModule Net-GitHub MIME-Types Class-Singleton Params-Validate version ExtUtils-CBuilder ExtUtils-ParseXS Test-Harness File-Temp Module- Build DateTime-TimeZone List-MoreUtils DateTime-Locale DateTime File- MMagic Net-Google-Code Term-ReadLine-Perl Digest-SHA1 Digest-HMAC Net- IP Net-DNS Net-Bonjour TermReadKey UUID-Tiny XML-Atom-SimpleFeed Digest-SHA Exporter-Lite IPC-Run3 MIME-Base64-URLSafe Sub-Install Data- OptList Sub-Exporter Path-Dispatcher Module-Pluggable Time-Progress Carp- Assert Proc-InvokeEditor Test-HTTP-Server-Simple Module-Refresh Carp- Assert-More Test-LongString Test-WWW-Mechanize Test-Script-Run prophet.git Devel-StackTrace Exception-Class Error RT-Client-REST Email- Address YAML Path-Class Clone Hash-Merge UNIVERSAL-isa UNIVERSAL-can Test-MockObject Net-Jifty Lingua-EN-Inflect Text-CSV Net-Trac boolean Time- Piece Test-MockTime DateTime-Format-Natural sd.git
  183. (104 dists with our sync plugins) sync プラグイン経由で 104 個
  184. What’s wrong with SD? SD にバグがあったら?
  185. $ sd clone --from http://fsck.com/~jesse/sd-bugs
  186. Don’t want to install SD? インストールはしたくない?
  187. Point your browser at http://fsck.com/~jesse/sd-bugs/html ブラウザからでも大丈夫
  188. What’s next? SD のこれから?
  189. Indexing インデックス
  190. GPG-signed changesets GPG 署名付きのチェンジセット
  191. Actually releasing 1.0 本当に 1.0 をリリースすること
  192. Thanks! Questions? curl fsck.com/sd | perl http://syncwith.us jesse@bestpractical.com

×