Your SlideShare is downloading. ×
0
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 ...
Then it installs some
  Perl modules...
...in order
Array-Compare            Params-Util
                                               Module-Pluggable
Carp-Assert          ...
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
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
SD, a P2P bug tracking system
Upcoming SlideShare
Loading in...5
×

SD, a P2P bug tracking system

3,222

Published on

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,222
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
87
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide




































































































































































































































































































































































































































































  • Transcript of "SD, a P2P bug tracking system"

    1. 1. P2P Bug Tracking with SD http://syncwith.us Jesse Vincent Best Practical jesse@bestpractical.com
    2. 2. Hi!
    3. 3. I’m Jesse (obra)
    4. 4. clkao and I own a small software company
    5. 5. (Best Practical)
    6. 6. I’ve been making issue trackers since 1995
    7. 7. Our software has some bugs
    8. 8. All software has some bugs
    9. 9. (All software is made of bugs)
    10. 10. I spend a lot of time on airplanes...
    11. 11. ...and at conferences with bad wifi
    12. 12. I need to keep track of our bugs and our work
    13. 13. I’m the boss
    14. 14. I have no excuse for not doing my work
    15. 15. I need to keep track of our bugs and our work even when I don’t have Internet access
    16. 16. I’ve tried everything
    17. 17. Text files
    18. 18. Text files in version control
    19. 19. IMAP Servers
    20. 20. RSS Feeds
    21. 21. Running RT on my laptop
    22. 22. Keeping browsers open
    23. 23. Nothing was quite right
    24. 24. So we built SD
    25. 25. SD is a P2P Bug Tracker
    26. 26. It syncs the way you do
    27. 27. Clone a project’s bug database over HTTP
    28. 28. Work offline
    29. 29. Pull from anyone you work with
    30. 30. Publish your database replica with rsync
    31. 31. Topology doesn’t matter...
    32. 32. Don’t worry
    33. 33. It won’t break
    34. 34. SD learns how to resolve each conflict...
    35. 35. based on how everyone else resolves it
    36. 36. But you already have a bug tracker?
    37. 37. No Problem!
    38. 38. SD can talk to foreign bug trackers
    39. 39. RT, Hiveminder and Trac work today
    40. 40. Google Code is next
    41. 41. Want to help with Bugzilla, Github or something else?
    42. 42. Time to get SD up and running
    43. 43. SD is in Perl
    44. 44. SD uses 45-90 CPAN modules
    45. 45. Are you afraid?
    46. 46. Are you afraid?
    47. 47. Don’t be
    48. 48. You’ll need: curl, perl 5.8, C compiler
    49. 49. You won’t need: CPAN
    50. 50. You won’t need: to answer prompts
    51. 51. You won’t need: to fix dependencies
    52. 52. curl http://fsck.com/sd|perl export PATH=$PATH:~/sd/bin
    53. 53. curl http://17h.local/sd|perl export PATH=$PATH:~/sd/bin
    54. 54. Using SD (CLI)
    55. 55. Getting Started
    56. 56. SD Shell $ sd
    57. 57. ./
    58. 58. Getting help $ sd help
    59. 59. Creating a new project $ sd init
    60. 60. Project settings $ sd settings
    61. 61. Config file $ sd config
    62. 62. Mirroring a project $ sd clone
    63. 63. Publishing $ sd publish
    64. 64. Pulling $ sd pull
    65. 65. Create a bug $ sd ticket create
    66. 66. Listing bugs $ sd ticket list
    67. 67. Show a bug $ sd ticket show
    68. 68. Update a bug $ sd ticket update
    69. 69. Log $ sd log
    70. 70. Git Integration $ git sd
    71. 71. Using SD (Web)
    72. 72. Web? Isn’t SD an offline tool?
    73. 73. Local microserver
    74. 74. Home
    75. 75. Search
    76. 76. Show a bug
    77. 77. Update a bug
    78. 78. History
    79. 79. Create a ticket
    80. 80. Working with others
    81. 81. Working with others (Using SD)
    82. 82. Any topology
    83. 83. It doesn’t matter who you sync with
    84. 84. You get all the updates eventually
    85. 85. Cloning $ sd clone
    86. 86. Make a copy of someone else’s database
    87. 87. Pulling $ sd pull
    88. 88. Grab unseen changes from another database replica
    89. 89. Publishing $ sd publish
    90. 90. Write out your database replica for sharing
    91. 91. (As SD changesets and static HTML)
    92. 92. Hackathon mode (using Bonjour)
    93. 93. Publish your replica $ sd server
    94. 94. Pull updates $ sd pull --local
    95. 95. Working with others (Using other systems)
    96. 96. What other systems?
    97. 97. Sync with RT
    98. 98. Sync with Trac
    99. 99. Sync with Hiveminder
    100. 100. Sync with lots more...
    101. 101. (If you help write code)
    102. 102. Star topology
    103. 103. One SD node acts as a gateway
    104. 104. Clone $ sd clone
    105. 105. SD reverse engineers a database history
    106. 106. Pull $ sd pull
    107. 107. SD reverse engineers partial database history
    108. 108. Push $ sd push
    109. 109. SD figures out local updates and sends them upstream
    110. 110. What’s wrong with SD?
    111. 111. $ sd clone http://fsck.com/~jesse/sd-bugs
    112. 112. You don’t want to install SD?
    113. 113. Point your browser at http://fsck.com/~jesse/sd-bugs
    114. 114. What’s next?
    115. 115. Push to Trac
    116. 116. Google Code support
    117. 117. Indexing
    118. 118. GPG-signed changesets
    119. 119. Actually releasing 1.0
    120. 120. Questions? http://syncwith.us jesse@bestpractical.com
    121. 121. Bonus Material
    122. 122. Perl and Dependencies
    123. 123. SD is in Perl
    124. 124. SD uses CPAN modules.
    125. 125. This is a blessing.
    126. 126. This is a curse.
    127. 127. CPAN = Dependency Hell
    128. 128. 123 Dependencies
    129. 129. ...one hour later:
    130. 130. 95 Dependencies
    131. 131. ...another hour later
    132. 132. 82 Dependencies
    133. 133. Where we are today:
    134. 134. 42 Dependencies
    135. 135. Only one needs a compiler.
    136. 136. Shipwright gives us one-command install
    137. 137. curl http://fsck.com/sd|perl export PATH=$PATH:~/sd/bin
    138. 138. What’s that do?
    139. 139. $ 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 ...
    140. 140. Then it installs some Perl modules...
    141. 141. ...in order
    142. 142. 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
    143. 143. I’m never offline. Why do I care about P2P bug tracking?
    144. 144. ...about cloud computing ☔
    145. 145. Living in the cloud = sharecropping )
    146. 146. (That’s bad)
    147. 147. The bad old days:
    148. 148. Pic of sharecroppers
    149. 149. You farmed land you didn’t own...
    150. 150. ...with tools you couldn’t really afford
    151. 151. You paid for it with part of your harvest...
    152. 152. It sounded like a pretty sweet deal...
    153. 153. ...until things got bad
    154. 154. (Things always got bad)
    155. 155. (Internet)
    156. 156. (Cloud) (Internet)
    157. 157. In a bad year, you got further in debt to the land owner
    158. 158. So, what does this have to do with software?
    159. 159. The (more recent) bad old days:
    160. 160. pic of mainframes
    161. 161. You ran code you didn’t own on hardware you didn’t own
    162. 162. Things started to get better in the 1980s
    163. 163. Pic of PCs
    164. 164. Users started to be able to make choices about computing...
    165. 165. They weren’t all rosy
    166. 166. Pic of BSOD
    167. 167. Sometimes new versions of software broke things...
    168. 168. ...leaving you locked in to old versions
    169. 169. pic of win 31?
    170. 170. Things got ‘better’
    171. 171. rms che
    172. 172. Now, things are getting worse again...
    173. 173. What happens when your favorite service goes down?
    174. 174. pic of twitter being down
    175. 175. ...or stops accepting new signups?
    176. 176. ...or starts making arbitrary choices about what’s ‘safe’ content?
    177. 177. ...or breaks
    178. 178. You don’t own the services you use
    179. 179. You probably don’t even have a contract
    180. 180. When a service provider cuts you off, you lose
    181. 181. Not so secret shame: I still need the cloud
    182. 182. My calendar lives at google.com
    183. 183. I make a Web 2.0 todo list service called Hiveminder.com
    184. 184. pic of hiveminder
    185. 185. ☣ Using hosted apps is going to hurt you! ☣
    186. 186. What about Google Gears, Adobe Air, etc?
    187. 187. Great. now you can use your word processer while you’re offline!
    188. 188. Pic of wordperfect
    189. 189. Real offline apps should not need servers
    190. 190. Real offline apps should sync like you do
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×