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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

SD, a P2P bug tracking system

3,093
views

Published on

Published in: Technology

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide




































































































































































































































































































































































































































































  • 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