• Like
  • Save
SD, a P2P bug tracking system
Upcoming SlideShare
Loading in...5
×
 

SD, a P2P bug tracking system

on

  • 5,185 views

 

Statistics

Views

Total Views
5,185
Views on SlideShare
5,175
Embed Views
10

Actions

Likes
7
Downloads
83
Comments
0

1 Embed 10

http://www.slideshare.net 10

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />

SD, a P2P bug tracking system SD, a P2P bug tracking system Presentation Transcript

  • P2P Bug Tracking with SD http://syncwith.us Jesse Vincent Best Practical jesse@bestpractical.com
  • Hi!
  • I’m Jesse (obra)
  • clkao and I own a small software company
  • (Best Practical)
  • I’ve been making issue trackers since 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 Internet access
  • I’ve tried everything
  • Text files
  • Text files in version control
  • IMAP Servers
  • RSS Feeds
  • Running RT on my laptop
  • Keeping browsers open
  • Nothing was quite right
  • So we built SD
  • SD is a P2P Bug Tracker
  • It syncs the way you do
  • Clone a project’s bug database over HTTP
  • Work offline
  • Pull from anyone you work with
  • Publish your database replica with rsync
  • Topology doesn’t matter...
  • Don’t worry
  • It won’t break
  • SD learns how to resolve each conflict...
  • based on how everyone else resolves it
  • But you already have a bug tracker?
  • No Problem!
  • SD can talk to foreign bug trackers
  • RT, Hiveminder and Trac work today
  • Google Code is next
  • Want to help with Bugzilla, Github or something else?
  • Time to get SD up and running
  • SD is in Perl
  • SD uses 45-90 CPAN modules
  • Are you afraid?
  • Are you afraid?
  • Don’t be
  • You’ll need: curl, perl 5.8, C compiler
  • You won’t need: CPAN
  • You won’t need: to answer prompts
  • You won’t need: to fix dependencies
  • curl http://fsck.com/sd|perl export PATH=$PATH:~/sd/bin
  • curl http://17h.local/sd|perl export PATH=$PATH:~/sd/bin
  • Using 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
  • Mirroring a project $ sd clone
  • Publishing $ sd publish
  • Pulling $ sd pull
  • 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
  • Using SD (Web)
  • Web? Isn’t SD an offline tool?
  • Local microserver
  • Home
  • Search
  • Show a bug
  • Update a bug
  • History
  • Create a ticket
  • Working with others
  • Working with others (Using SD)
  • Any topology
  • It doesn’t matter who you sync with
  • You get all the updates eventually
  • Cloning $ sd clone
  • Make a copy of someone else’s database
  • Pulling $ sd pull
  • Grab unseen changes from another database replica
  • Publishing $ sd publish
  • Write out your database replica for sharing
  • (As SD changesets and static HTML)
  • Hackathon mode (using Bonjour)
  • Publish your replica $ sd server
  • Pull updates $ sd pull --local
  • Working with others (Using other systems)
  • What other systems?
  • Sync with RT
  • Sync with Trac
  • Sync with Hiveminder
  • Sync with lots more...
  • (If you help write code)
  • Star topology
  • One SD node acts as a gateway
  • Clone $ sd clone
  • SD reverse engineers a database history
  • Pull $ sd pull
  • SD reverse engineers partial database history
  • Push $ sd push
  • SD figures out local updates and sends them upstream
  • What’s wrong with SD?
  • $ sd clone http://fsck.com/~jesse/sd-bugs
  • You don’t want to install SD?
  • Point your browser at http://fsck.com/~jesse/sd-bugs
  • What’s next?
  • Push to Trac
  • Google Code support
  • Indexing
  • GPG-signed changesets
  • Actually releasing 1.0
  • Questions? http://syncwith.us jesse@bestpractical.com
  • Bonus Material
  • Perl and Dependencies
  • SD is in Perl
  • SD uses CPAN modules.
  • This is a blessing.
  • This is a curse.
  • CPAN = Dependency Hell
  • 123 Dependencies
  • ...one hour later:
  • 95 Dependencies
  • ...another hour later
  • 82 Dependencies
  • Where we are today:
  • 42 Dependencies
  • Only one needs a compiler.
  • Shipwright gives us one-command install
  • curl http://fsck.com/sd|perl export PATH=$PATH:~/sd/bin
  • What’s that do?
  • $ head /Library/WebServer/Documents/sd open (my $tar,'|tar xz 2>/dev/null'); while (<DATA>) { print $tar $_; } close $tar; exec(quot;cd sd-build; bin/shipwright-builder --install-base=$ENV{HOME}/sdquot;); __DATA__ ?I?Isd-build.tar?<is?F???_1?䀌yH?quot;#‫{$ۿ‬U???H?eH ...
  • Then it installs some Perl modules...
  • ...in order
  • Array-Compare Params-Util Module-Pluggable Carp-Assert Params-Validate Net-DNS Class-Accessor Path-Class Sub-Exporter Class-Data-Inheritable Proc-InvokeEditor Test-Exception Class-Inspector Scalar-List-Utils Test-HTTP-Server-Simple Class-Singleton String-BufferStack Test-LongString Clone Sub-Install Test-MockObject Compress-Raw-Bzip2 Sub-Uplevel Test-MockTime Compress-Raw-Zlib TermReadKey Test-Script-Run DBI Test-Harness Test-Warn Data-UUID Test-Simple libwww-perl Devel-StackTrace Text-CSV Carp-Assert-More Digest-SHA Time-Piece DateTime-Locale Digest-SHA1 Time-Progress DateTime-TimeZone Email-Address Tree-DAG_Node HTTP-Response-Encoding Error UNIVERSAL-can Mouse Exception-Class UNIVERSAL-isa Net-Bonjour Exporter-Lite URI RT-Client-REST ExtUtils-CBuilder XML-Atom-SimpleFeed Template-Declare ExtUtils-ParseXS YAML WWW-Mechanize File-Temp YAML-Syck Any-Moose HTML-Tagset boolean DateTime Hash-Merge version DateTime-Format-Natural IO-Compress DBD-SQLite Net-Jifty IPC-Run3 Data-OptList Net-Trac JSON Digest-HMAC Path-Dispatcher JSON-XS File-ShareDir Test-WWW-Mechanize Lingua-EN-Inflect HTML-Parser - prophet.git List-MoreUtils HTML-Tree - sd.git Module-Refresh HTTP-Server-Simple Net-IP Module-Build
  • I’m never offline. Why do I care about P2P bug tracking?
  • ...about cloud computing ☔
  • Living in the cloud = sharecropping )
  • (That’s bad)
  • The bad old days:
  • Pic of sharecroppers
  • You farmed land you didn’t own...
  • ...with tools you couldn’t really afford
  • You paid for it with part of your harvest...
  • It sounded like a pretty sweet deal...
  • ...until things got bad
  • (Things always got bad)
  • (Internet)
  • (Cloud) (Internet)
  • In a bad year, you got further in debt to the land owner
  • So, what does this have to do with software?
  • The (more recent) bad old days:
  • pic of mainframes
  • You ran code you didn’t own on hardware you didn’t own
  • Things started to get better in the 1980s
  • Pic of PCs
  • Users started to be able to make choices about computing...
  • They weren’t all rosy
  • Pic of BSOD
  • Sometimes new versions of software broke things...
  • ...leaving you locked in to old versions
  • pic of win 31?
  • Things got ‘better’
  • rms che
  • Now, things are getting worse again...
  • What happens when your favorite service goes down?
  • pic of twitter being down
  • ...or stops accepting new signups?
  • ...or starts making arbitrary choices about what’s ‘safe’ content?
  • ...or breaks
  • You don’t own the services you use
  • You probably don’t even have a contract
  • When a service provider cuts you off, you lose
  • Not so secret shame: I still need the cloud
  • My calendar lives at google.com
  • I make a Web 2.0 todo list service called Hiveminder.com
  • pic of hiveminder
  • ☣ Using hosted apps is going to hurt you! ☣
  • What about Google Gears, Adobe Air, etc?
  • Great. now you can use your word processer while you’re offline!
  • Pic of wordperfect
  • Real offline apps should not need servers
  • Real offline apps should sync like you do