SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
We open sourced our trade
secrets, and so can you!
James Meickle
Developer evangelist, AppNeta
@jmeickle
Boston Rails Meetup
August 26, 2014
AppNeta
• Application
performance
management (APM)
– Client
– Network
– Server
• Software as a service
• Cloud hosted
A brief history of APM
• Closed source
monitoring for closed
source applications
• Oriented around
mainframes and J2EE
• Incredibly high cost, not
production-ready
• Today: rapid value, easy
deployment, low cost
AppNeta TraceView
• Distributed tracing
(Zipkin, Dapper)
• Bytecode
instrumentation
• Java, .NET, PHP, Ruby,
Python, node.js
• Definitely not
Tracelytics!
THE GEM
Implementing TraceView’s functionality in Ruby
Our maintainer
• Peter Lombardo came
on a few years ago
• Exclusively focused on
the oboe gem
• Works remote from
Italy, or else he’d be
giving this talk!
oboe
• Installed like a normal
gem (with C extension)
• No configuration required
• Provides:
– Application performance
management
– Software as a service
– Distributed tracing
– Bytecode instrumentation
– Trace API
Application performance management
• Collect performance data:
– Database queries
– Cache requests
– Remote calls
– Templating time
• Without causing
problems:
– Identical behavior
– Overhead below 1%
– Stable
Software as a service
• Don’t do any processing
locally
• Report data to the
agent (UDP)
• Report data to collector
(SSL, on Heroku)
Distributed tracing
• Follow calls from one
application to another
– Different servers
– Multiple languages
– Asynchronous
• Common
request/response
protocols:
– HTTP
– Thrift
– EJB (for JRuby)
Bytecode instrumentation
• Support common
components:
– Frameworks
– Libraries
– Drivers/clients
• Without code
modification
– Ruby, Python: monkey
patching
– Java: classloader
– PHP: 
Trace API
• Same API that we use
when adding layers
• Our backend is built
around supporting it
• Duck typing for events
• Report anything!*
*please don’t report credit card numbers, thanks
Example 1: memcache
Example 2: rack
Example 2: Net::HTTP
Example 4: resque
THE PROCESS
Opening the oboe gem to the world
Why did we open source oboe?
• We <3 open source
• Larger customers want
to audit our code
• Increased community
contributions
• Better capture of
reported issues
• Good publicity 
Why couldn’t we “flip the switch”?
• The code was not
appropriately
documented
• The test suite needed
work
• There was no
contribution guide
• It wasn’t licensed
• Not branded properly!
• Issues contained
customer-specific
information
Documentation
• Added
Tests
• “Before opensourcing, we had to
move away from manual testing
via nosetests (30 something stack
variations, manual boot and
manually run nosetests, rinse and
repeat for the next hour).
We went with Minitest. Today
with Minitest, we now test 7
Ruby versions: each with 202
tests, 1979 assertions - biggest
win beyond coverage is that it’s
automated with Travis for each
git commit.”
– Peter Lombardo
Contribution guide
Branding
• We were already
AppNeta TraceView
• But we still were
Tracelytics in our code
• Not as simple as a
s/foo/bar/; lots of
unexpected places
(support URLs!)
Licensing
• Open source != free
software
• Competitive advantage
• Still an unfathomable
change from where we
were 10 years ago 
Issues with issues
• We didn’t want to lose
historical issues
• New issues would also
need to reference
specific customers and
post about their data
The solution
• “The key was to use two repos (1
private and 1 public) using two git
remotes. Now our default is that
all issues are filed in the public
repository unless it contains
customer specific data. If a public
issue, turns out to need a pointer
to some internal data or
resource, we file a corresponding
internal issue that points to the
public issue. We now always
prefer the public repo over the
private and only use the private
when absolutely necessary.”
– Peter Lombardo
The final countdown
Marketing helped too!
• Pre-launch
– Implications of licensing
– How to reward and
publicize contributors
– Info page for repo
• Post-launch
– Launch blog post
– Social media
– Existing customers!
Launch day
• Set up the public repo
as a private one
• Switch our build
process (rubygems) to
use the right repo
• Post the new build as a
GitHub Release too
• Publish the blog post!
THE RESULT
What we’ve seen after open sourcing
appneta / oboe-ruby
• Not many visitors 
• But they were
incredibly engaged:
more than 25% of them
cloned the repo.
• And about a third of
them contributed code!
More contributions
• 80%: post an issue
• 15%: post a fix/snippet
• 5%: an entire feature!
– Grape API: Todd Lunter
at Swipely
– EventMachine: Diogo
Benica at Abril Midia
Happier maintainer
• “Not sure if this part is going to make
sense but working on an opensource
project is like having a weight lifted
off of your shoulders. When it’s
private, proprietary code, the burden
is completely on you to assure quality
and to not screw up. When the code
is opensource, there is a slightly
calming feel because you know that
your code is public and is available to
be reviewed and improved upon by
anyone. We love the contributions
we’ve gotten so far and are always
looking for more.”
– Peter Lombardo
We open sourced our trade secrets, and so can you!
GitHub issues
• Work being done lives
in GitHub issues on the
public repo
• Anyone can post there!
Supporting contributors
• Most people use the
trace API incorrectly
• We only notice when
they file support tickets
• Post custom code on
GH, and we can help
while you write it! 
Thank you!
Come work for us! We’re a mostly
Python shop 
You can meet us at:
• Sep 15-17: Velocity New York
• Sep 18: WebPerfDays New
York
• Oct 21: TechBreakfast New
York
• October 24: Surge (DC)
• Nov 11-14: AWS re:Invent
(Vegas!)
Or just try us out:
http://www.appneta.com/products/traceview/

Contenu connexe

En vedette

Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool KitExclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool KitKathleenIsobel
 
Configuring elasticsearch for performance and scale
Configuring elasticsearch for performance and scaleConfiguring elasticsearch for performance and scale
Configuring elasticsearch for performance and scaleBharvi Dixit
 
8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use Them8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use ThemAuvik Networks Inc.
 
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsReducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsAmazon Web Services
 
How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment  How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment  Amazon Web Services
 
Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016AppNeta
 
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...Social Samosa
 
Oppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - AssignmentOppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - AssignmentFezile Dhlamini
 
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...Amazon Web Services
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellKhalid Imran
 

En vedette (12)

Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool KitExclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
 
Configuring elasticsearch for performance and scale
Configuring elasticsearch for performance and scaleConfiguring elasticsearch for performance and scale
Configuring elasticsearch for performance and scale
 
8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use Them8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use Them
 
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsReducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
 
How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment  How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment 
 
Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
 
Oppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - AssignmentOppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - Assignment
 
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : Nutshell
 
Big Data Tech Stack
Big Data Tech StackBig Data Tech Stack
Big Data Tech Stack
 

Dernier

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 

Dernier (20)

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 

We open sourced our trade secrets, and so can you!

  • 1. We open sourced our trade secrets, and so can you! James Meickle Developer evangelist, AppNeta @jmeickle Boston Rails Meetup August 26, 2014
  • 2. AppNeta • Application performance management (APM) – Client – Network – Server • Software as a service • Cloud hosted
  • 3. A brief history of APM • Closed source monitoring for closed source applications • Oriented around mainframes and J2EE • Incredibly high cost, not production-ready • Today: rapid value, easy deployment, low cost
  • 4. AppNeta TraceView • Distributed tracing (Zipkin, Dapper) • Bytecode instrumentation • Java, .NET, PHP, Ruby, Python, node.js • Definitely not Tracelytics!
  • 5. THE GEM Implementing TraceView’s functionality in Ruby
  • 6. Our maintainer • Peter Lombardo came on a few years ago • Exclusively focused on the oboe gem • Works remote from Italy, or else he’d be giving this talk!
  • 7. oboe • Installed like a normal gem (with C extension) • No configuration required • Provides: – Application performance management – Software as a service – Distributed tracing – Bytecode instrumentation – Trace API
  • 8. Application performance management • Collect performance data: – Database queries – Cache requests – Remote calls – Templating time • Without causing problems: – Identical behavior – Overhead below 1% – Stable
  • 9. Software as a service • Don’t do any processing locally • Report data to the agent (UDP) • Report data to collector (SSL, on Heroku)
  • 10. Distributed tracing • Follow calls from one application to another – Different servers – Multiple languages – Asynchronous • Common request/response protocols: – HTTP – Thrift – EJB (for JRuby)
  • 11. Bytecode instrumentation • Support common components: – Frameworks – Libraries – Drivers/clients • Without code modification – Ruby, Python: monkey patching – Java: classloader – PHP: 
  • 12. Trace API • Same API that we use when adding layers • Our backend is built around supporting it • Duck typing for events • Report anything!* *please don’t report credit card numbers, thanks
  • 17. THE PROCESS Opening the oboe gem to the world
  • 18. Why did we open source oboe? • We <3 open source • Larger customers want to audit our code • Increased community contributions • Better capture of reported issues • Good publicity 
  • 19. Why couldn’t we “flip the switch”? • The code was not appropriately documented • The test suite needed work • There was no contribution guide • It wasn’t licensed • Not branded properly! • Issues contained customer-specific information
  • 21. Tests • “Before opensourcing, we had to move away from manual testing via nosetests (30 something stack variations, manual boot and manually run nosetests, rinse and repeat for the next hour). We went with Minitest. Today with Minitest, we now test 7 Ruby versions: each with 202 tests, 1979 assertions - biggest win beyond coverage is that it’s automated with Travis for each git commit.” – Peter Lombardo
  • 23. Branding • We were already AppNeta TraceView • But we still were Tracelytics in our code • Not as simple as a s/foo/bar/; lots of unexpected places (support URLs!)
  • 24. Licensing • Open source != free software • Competitive advantage • Still an unfathomable change from where we were 10 years ago 
  • 25. Issues with issues • We didn’t want to lose historical issues • New issues would also need to reference specific customers and post about their data
  • 26. The solution • “The key was to use two repos (1 private and 1 public) using two git remotes. Now our default is that all issues are filed in the public repository unless it contains customer specific data. If a public issue, turns out to need a pointer to some internal data or resource, we file a corresponding internal issue that points to the public issue. We now always prefer the public repo over the private and only use the private when absolutely necessary.” – Peter Lombardo
  • 28. Marketing helped too! • Pre-launch – Implications of licensing – How to reward and publicize contributors – Info page for repo • Post-launch – Launch blog post – Social media – Existing customers!
  • 29. Launch day • Set up the public repo as a private one • Switch our build process (rubygems) to use the right repo • Post the new build as a GitHub Release too • Publish the blog post!
  • 30. THE RESULT What we’ve seen after open sourcing
  • 31. appneta / oboe-ruby • Not many visitors  • But they were incredibly engaged: more than 25% of them cloned the repo. • And about a third of them contributed code!
  • 32. More contributions • 80%: post an issue • 15%: post a fix/snippet • 5%: an entire feature! – Grape API: Todd Lunter at Swipely – EventMachine: Diogo Benica at Abril Midia
  • 33. Happier maintainer • “Not sure if this part is going to make sense but working on an opensource project is like having a weight lifted off of your shoulders. When it’s private, proprietary code, the burden is completely on you to assure quality and to not screw up. When the code is opensource, there is a slightly calming feel because you know that your code is public and is available to be reviewed and improved upon by anyone. We love the contributions we’ve gotten so far and are always looking for more.” – Peter Lombardo
  • 35. GitHub issues • Work being done lives in GitHub issues on the public repo • Anyone can post there!
  • 36. Supporting contributors • Most people use the trace API incorrectly • We only notice when they file support tickets • Post custom code on GH, and we can help while you write it! 
  • 37. Thank you! Come work for us! We’re a mostly Python shop  You can meet us at: • Sep 15-17: Velocity New York • Sep 18: WebPerfDays New York • Oct 21: TechBreakfast New York • October 24: Surge (DC) • Nov 11-14: AWS re:Invent (Vegas!) Or just try us out: http://www.appneta.com/products/traceview/