p2p bug tracking with sd

Post on 17-May-2015

5.699 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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 softwarehas some bugs

うちのソフトには バグがあります

All softwarehas some bugs

どんなソフトでもバグはあります

(All software is made of bugs)

ソフトなんてバグでできているのです

I spend a lot of timeon 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 inversion control

バージョン管理したテキストファイル

IMAP Servers

IMAPサーバ

RSS Feeds

RSSフィード

Running RT onmy laptop

ラップトップで RTを走らせてみたり

Keeping browsers open

ブラウザを開きっぱなしにしてみたり

Nothing was quite right

どれもイマイチでした

So we built SD

そこで作ったのが SDです

SD is a Bug Tracker

SDはバグトラッカーです

SD is a DistributedBug Tracker

SDは分散型のバグトラッカーです

SD Features (の特徴 )

Tracks bugsCLIWeb UIScriptableWorks offlineAttachmentsCommentsCustomizable workflowCustom properties

P2P SyncTrac SyncRT SyncHiveminder SyncGitHub SyncGoogle Code SyncConflict ResolutionGit integrationDarcs 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

彼らは用意しましたが

Principles of distributed computing

Fallacie

sFall

acies

分散コンピューティングの原理

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は同期先の中央管理システム側でポリシーを実装できるようになっています

Transportcosts 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 wellwith others

ほかのソフトともうまくつきあえます

It syncs the way you do

同期の取り方は人間と同じ

Clone a project’s bugdatabase (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 anoffline 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 leasttwo others.

私も少なくともあと 2つ使っています

I wrote at leasttwo 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スター構成にすれば外部の複製も使えます

An SD node can act as a gateway

X

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 alice.com:public_html/k9

SD exports a full copy of Alice’s bug database and rsyncs 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.

push --to k9mail Alice publishes all updates her bug database has seen since she last sent updates to Google Code. Google Code now has all of Alice and Bob’s changes.

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 Scalar-List-Utils String-BufferStack Class-Accessor Class-Data-Inheritable Tree-DAG_Node Test-Simple Sub-Uplevel Test-Exception Array-Compare Test-Tree-DAG_Node Test-Simple Sub-Uplevel Test-Exception Array-Compare Test-Warn Template-Declare URI HTTP-Server-Simple Params-Util Class-Inspector Warn Template-Declare URI HTTP-Server-Simple Params-Util Class-Inspector File-ShareDir DBI DBD-SQLite HTML-Tagset HTML-Parser HTML-Tree Crypt-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 SSLeay JSON YAML-Syck JSON-XS JSON-DWIW JSON-Any Mouse Any-Moose Compress-Raw-Zlib Compress-Raw-Bzip2 IO-Compress libwww-perl HTTP-Compress-Raw-Zlib Compress-Raw-Bzip2 IO-Compress libwww-perl HTTP-Response-Encoding WWW-Mechanize WWW-Mechanize-GZip File-Slurp Test-Response-Encoding WWW-Mechanize WWW-Mechanize-GZip File-Slurp Test-MockModule Net-GitHub MIME-Types Class-Singleton Params-Validate MockModule Net-GitHub MIME-Types Class-Singleton Params-Validate version ExtUtils-CBuilder ExtUtils-ParseXS Test-Harness File-Temp Module-version ExtUtils-CBuilder ExtUtils-ParseXS Test-Harness File-Temp Module-Build DateTime-TimeZone List-MoreUtils DateTime-Locale DateTime File-Build DateTime-TimeZone List-MoreUtils DateTime-Locale DateTime File-MMagic Net-Google-Code Term-ReadLine-Perl Digest-SHA1 Digest-HMAC Net-MMagic Net-Google-Code Term-ReadLine-Perl Digest-SHA1 Digest-HMAC Net-IP Net-DNS Net-Bonjour TermReadKey UUID-Tiny XML-Atom-SimpleFeed IP Net-DNS Net-Bonjour TermReadKey UUID-Tiny XML-Atom-SimpleFeed Digest-SHA Exporter-Lite IPC-Run3 MIME-Base64-URLSafe Sub-Install Data-Digest-SHA Exporter-Lite IPC-Run3 MIME-Base64-URLSafe Sub-Install Data-OptList Sub-Exporter Path-Dispatcher Module-Pluggable Time-Progress Carp-OptList Sub-Exporter Path-Dispatcher Module-Pluggable Time-Progress Carp-Assert Proc-InvokeEditor Test-HTTP-Server-Simple Module-Refresh Carp-Assert Proc-InvokeEditor Test-HTTP-Server-Simple Module-Refresh Carp-Assert-More Test-LongString Test-WWW-Mechanize Test-Script-Run Assert-More Test-LongString Test-WWW-Mechanize Test-Script-Run prophet.git Devel-StackTrace Exception-Class Error RT-Client-REST Email-prophet.git Devel-StackTrace Exception-Class Error RT-Client-REST Email-Address YAML Path-Class Clone Hash-Merge UNIVERSAL-isa UNIVERSAL-can Address YAML Path-Class Clone Hash-Merge UNIVERSAL-isa UNIVERSAL-can Test-MockObject Net-Jifty Lingua-EN-Inflect Text-CSV Net-Trac boolean Time-Test-MockObject Net-Jifty Lingua-EN-Inflect Text-CSV Net-Trac boolean Time-Piece Test-MockTime DateTime-Format-Natural sd.git Piece Test-MockTime DateTime-Format-Natural sd.git

(104 dists with our sync plugins)

syncプラグイン経由で 104個

What’s wrongwith SD?

SDにバグがあったら?

$ sd clone --from http://fsck.com/~jesse/sd-bugs

Don’t want to install SD?

インストールはしたくない?

Point your browser athttp://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.usjesse@bestpractical.com

top related