SD, a P2P bug tracking system


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

  • SD, a P2P bug tracking system

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