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

Like this? Share it with your network

Share

SD, a P2P bug tracking system

on

  • 5,268 views

 

Statistics

Views

Total Views
5,268
Views on SlideShare
5,258
Embed Views
10

Actions

Likes
7
Downloads
84
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 Presentation Transcript

  • 1. P2P Bug Tracking with SD http://syncwith.us Jesse Vincent Best Practical jesse@bestpractical.com
  • 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 http://fsck.com/sd|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 http://fsck.com/~jesse/sd-bugs
  • 112. You don’t want to install SD?
  • 113. Point your browser at http://fsck.com/~jesse/sd-bugs
  • 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? http://syncwith.us jesse@bestpractical.com
  • 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. ...one 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 http://fsck.com/sd|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. ...in 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 google.com
  • 183. I make a Web 2.0 todo list service called Hiveminder.com
  • 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