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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,316
On Slideshare
5,306
From Embeds
10
Number of Embeds
1

Actions

Shares
Downloads
84
Comments
0
Likes
7

Embeds 10

http://www.slideshare.net 10

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