P2P Bug Tracking with SD
Upcoming SlideShare
Loading in...5

P2P Bug Tracking with SD



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.



Total Views
Views on SlideShare
Embed Views



5 Embeds 27

http://www.slideshare.net 20 2
http://www.linkedin.com 2
http://www.techgig.com 2
https://twitter.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

P2P Bug Tracking with SD P2P Bug Tracking with SD Presentation Transcript

  • P2P Bug Tracking with SD http://syncwith.us curl fsck.com/sd|perl; ~/sd/bin/sd SD を使った P2P バグトラッキング
  • Hi! こんにちは
  • I’m Jesse (obra) Jesse です
  • I own a small software company 小さな会社の社長をしています
  • (Best Practical)
  • I’ve been making issue trackers since 1995 1995 年からバグトラッカーを作ってきました
  • Our software has some bugs うちのソフトには バグがあります
  • All software has some bugs どんなソフトでもバグはあります
  • (All software is made of bugs) ソフトなんてバグでできているのです
  • I spend a lot of time on airplanes... 私はよく飛行機に乗ります
  • ...and at conferences with bad wifi ネットにつながりにくい イベントにもよく行きます
  • I need to keep track of our bugs and our work でも、バグや仕事から目を 離すわけにはいきません
  • I’m the boss 社長ですから
  • I have no excuse for not doing my work 言い訳は通用しません
  • I need to keep track of our bugs and our work even when I don’t have net access ネットがなくてもバグや仕事は 管理しないといけないのです
  • I’ve tried everything あらゆる方法を試してみました
  • Text files テキストファイル
  • Text files in version control バージョン管理した テキストファイル
  • IMAP Servers IMAP サーバ
  • RSS Feeds RSS フィード
  • Running RT on my laptop ラップトップで RT を走らせてみたり
  • Keeping browsers open ブラウザを開きっぱなしにしてみたり
  • Nothing was quite right どれもイマイチでした
  • So we built SD そこで作ったのが SD です
  • SD is a Bug Tracker SD はバグトラッカーです
  • SD is a Distributed Bug Tracker SD は分散型のバグトラッカーです
  • 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
  • Principles of distributed computing 分散コンピューティングの原理
  • Bill Joy, Tom Lyon, Peter Deutsch and James Gosling created these ビル・ジョイらはこんなものを作りました
  • The network is reliable ネットワークが信頼できて
  • Latency is zero 遅延時間はゼロで
  • Bandwidth is infinite 帯域幅は無限
  • The network is secure ネットワークは安全で
  • Transport cost is zero 転送料はゼロ
  • The network is homogeneous ネットワークは均質で
  • Topology doesn't change ネットワークの構成は変化しない
  • There is one administrator 管理者はひとり
  • I didn’t make those up 私にはそんなもの用意できませんでした
  • Bill Joy, Tom Lyon, Peter Deutsch and James Gosling did 彼らは用意しましたが
  • s ie of lac Principles l a F distributed computing 分散コンピューティングの原理
  • Those are all LIES そんなものは真っ赤な嘘です
  • The network is not reliable ネットワークなんて信頼できません
  • SD isn’t network- dependent だから SD はネットワークに依存しません
  • Latency hurts 遅延時間もひどいものです
  • SD runs at the edge だから SD は境界上で動作します
  • Bandwidth is always a problem 帯域幅はいつでも悩みの種です
  • SD knows which changesets you’ve already seen だから SD はどのチェンジセット を見たか覚えています
  • The network is insecure ネットワークは安全ではありません
  • SD doesn’t depend on a network security layer だから SD はネットワークのセキ ュリティ層には依存しません
  • Topology is unpredictable and fluid ネットワークの構成は予測 できませんし流動的です
  • SD is topology- agnostic だから SD は構成不可知 論の立場をとります
  • There is no administrator 管理者なんていません
  • (But there are many people who think they’re administrators) そのつもりでいる人はたくさんいますが
  • SD lets you implement policy in the centralized systems it syncs to だから SD は同期先の中央管理システム側で ポリシーを実装できるようになっています
  • Transport costs money 転送料はタダではありません
  • SD doesn’t use much bandwidth & can use non-network substrates だから SD はあまり帯域幅を使いません。 ネットワーク以外の下位層にも対応しています
  • The network is heterogeneous ネットワークは均質ではありません
  • SD is designed to sync to foreign systems だから SD は外部のシステムと同期 できるようになっています
  • SD runs locally SD はローカルで実行できます
  • SD plays well with others ほかのソフトともうまくつきあえます
  • It syncs the way you do 同期の取り方は人間と同じ
  • Clone a project’s bug database (over HTTP) (HTTP 経由で ) プロジェクトの バグデータベースのクローンを作って
  • Work offline オフラインで作業して
  • Pull changesets from anyone you work with 仕事仲間からチェンジセットを取ってきて
  • Publish your database replica with rsync データベースの複製を rsync で公開
  • Topology doesn’t matter... ネットワークの構成なんて関係ありません
  • Don’t worry ご心配なく
  • It won’t break それでも壊れませんから
  • SD learns how to resolve each conflict... SD は衝突の解決策をひとつ ひとつ学んでいきます
  • ...based on how everyone else resolves it ベースとなるのは、ほか の人がどう解決したかです
  • Using SD (CLI) SD の使い方 (CLI)
  • Getting Started 使ってみましょう
  • SD Shell $ sd シェル
  • ./
  • Getting help $ sd help ヘルプ
  • Creating a new project $ sd init 新規プロジェクトの作成
  • Project settings $ sd settings プロジェクトの設定
  • Config file $ sd config 設定ファイル
  • Create a bug $ sd ticket create バグ情報を登録する
  • Listing bugs $ sd ticket list バグ情報の一覧表示
  • Show a bug $ sd ticket show バグ情報を表示する
  • Update a bug $ sd ticket update バグ情報を更新する
  • Log $ sd log ログ
  • Git Integration $ git sd Git に統合
  • Using SD (Web) SD の使い方 (Web)
  • Web? Isn’t SD an offline tool? あれ、 SD ってオフラインツー ルじゃなかったの?
  • Local microserver ローカルのマイクロサーバ
  • $ sd browser
  • Home ホーム
  • Create a ticket チケットを登録する
  • Search 検索
  • Show a bug バグ情報を表示する
  • Update a bug バグ情報を更新する
  • Comments コメント
  • History 履歴
  • Working with others ほかの人と一緒に作業する場合
  • Working with others (Using SD) ほかの人と一緒に作業する場合 (SD を利用 )
  • Any topology ネットワークの構成は任意
  • It doesn’t matter who you sync with 同期する相手は誰でもかまいません
  • You get all the updates eventually そのうちすべての更新情報が届きます
  • Cloning $ sd clone クローン
  • clone makes a replica of someone else’s database クローンするとほかの人のデー タベースの複製を作ります
  • Pulling $ sd pull 取得
  • pull imports unseen changes from another database replica ほかのデータベースの複製から未見 の変更をインポートします
  • Publishing $ sd publish 公開
  • publish writes out a copy of your database replica for sharing データベースの複製のコピーをほかの人と共 有できるように書き出します
  • (As SD changesets and static HTML) SD のチェンジセットと静的な HTML の形で
  • Hackathon mode (using Bonjour) ハッカソンモード (Bonjour を使って )
  • Publish your replica $ sd server
  • Pull updates $ sd pull --local 更新を取得
  • Working with others (Using other systems) ほかの人と一緒に作業する場合 ( ほかのシステムを使う )
  • But you already have a bug tracker? もうバグトラッカーを使っていますって?
  • No Problem! 大丈夫!
  • I use at least two others. 私も少なくともあと 2 つ使っています
  • I wrote at least two others. 少なくともあと 2 つ書きました
  • We designed SD talk to foreign bug trackers Sd は外部のバグトラッカーともや りとりできるように設計しました
  • RT
  • RT::Client::REST (By DMITRI, DAMS & AMS)
  • Hiveminder
  • Net::Jifty (by SARTAK)
  • Trac
  • Net::Trac (by JESSE & TSIBLEY)
  • Google Code
  • Net::Google::Code (by SUNNAVY and FAYLAND)
  • GitHub
  • Net::GitHub (by FAYLAND)
  • Lighthouse (VERY beta!)
  • Net::Lighthouse (by SUNNAVY)
  • Redmine (Read-only for now)
  • Net::Redmine (by GUGOD)
  • Want to help with Bugzilla, Jira, FogBugz or something else? Bugzilla とかも使いたい?
  • Work with foreign replicas in a Star Topology スター構成にすれば外部の複製も使えます
  • X An SD node can act as a gateway SD のノードはゲートウェイにもなります
  • Clone $ sd clone クローン
  • Clone from Google Code $ sd clone --from gcode:k9mail Google Code から
  • Clone from RT $ sd clone --from "rt:https://rt.cpan.org|DBI|" RT から
  • Clone from Trac $ sd clone --from trac:https://trac.parrot.org/parrot Trac から
  • Clone from GitHub $ git sd clone --from github:miyagawa/remedie Github から
  • SD reverse engineers a database history SD はデータベースの履歴を逆解析します
  • Pull $ sd pull
  • SD reverse engineers a partial database history SD は部分的なデータベースの 履歴も逆解析します
  • Push $ sd push
  • SD figures out local updates and sends them upstream SD はローカルの更新を見 つけて上流に送ります
  • (Then it does a bunch of book-keeping) それからさまざまな記録をつけます
  • So what’s that all look like in the real world? 実際の例を見てみましょう
  • 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.
  • Installing SD SD のインストール
  • It’s time to get SD up and running いよいよ SD を走らせてみましょう
  • SD is in Perl SD は Perl で書かれています
  • SD uses 45-90 CPAN modules 45 ~ 90 個の CPAN モジュールを使っています
  • Are you afraid? 大変そう?
  • Don’t be 心配ご無用
  • I have a novel idea for a Perl application これまでの Perl アプリとは違う 新しいやり方を思いついたんです
  • One-tweet install. インストールはつぶやき 1 回分
  • I’m installing #SD (http://syncwith.us) after seeing @obra’s talk at #YAPCASIA! YAPCASIA で @obra の話を見て #SD (http://syncwith.us) をインストールしてる
  • 80 bytes! I still have 60 to work with! 80 バイト !  まだ 60 バイトもありますよ !
  • 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
  • You’ll need: curl, perl 5.8, C compiler 必要なのは curl, perl 5.8, C コンパイラ
  • You won’t need: CPAN CPAN 不要
  • You won’t need: to answer prompts 質問に答えたりする必要もなし
  • You won’t need: to fix dependencies 依存モジュールの修正も不要
  • SD is in Perl SD は Perl で書かれています
  • SD uses CPAN modules. CPAN モジュールも使っています
  • This is a blessing. ありがたいことです
  • This is a curse. 呪いでもありますが
  • CPAN = Dependency Hell CPAN は依存地獄です
  • When we first built SD, we used anything we thought was useful SD を最初に作ったときは便利 そうなものを使いまくりました
  • (The first version of SD used a SVN backend) 最初のバージョンはバックエンドに SVN を使っていました
  • The first ~useful version of SD: 最初のバージョンがほぼ使えるように なったときはこんな感じでした
  • 123 Dependencies 123 個の依存モジュール
  • ...a couple hours later … 数時間後には
  • 54 Dependencies 54 個の依存モジュール
  • Only one needs a compiler. コンパイラが必要なのは 1 つだけ
  • Shipwright gives us one-command install Shipwright のおかげでコマンド 1 つでイン ストールできるようになりました
  • curl fsck.com/sd|perl export PATH=$PATH:~/sd/bin
  • What’s that do? どうなってるのか
  • curl
  • perl
  • $ 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 ...
  • Shipwright installs a few Perl modules... Shipwright は Perl モジュールをいくつかイ ンストールします…
  • ...in order 順にあげると…
  • 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
  • (104 dists with our sync plugins) sync プラグイン経由で 104 個
  • What’s wrong with SD? SD にバグがあったら?
  • $ sd clone --from http://fsck.com/~jesse/sd-bugs
  • Don’t want to install SD? インストールはしたくない?
  • Point your browser at http://fsck.com/~jesse/sd-bugs/html ブラウザからでも大丈夫
  • What’s next? SD のこれから?
  • Indexing インデックス
  • GPG-signed changesets GPG 署名付きのチェンジセット
  • Actually releasing 1.0 本当に 1.0 をリリースすること
  • Thanks! Questions? curl fsck.com/sd | perl http://syncwith.us jesse@bestpractical.com