SlideShare a Scribd company logo
npm Loves You
npm Austin 2016 o/
Bringing Open-Source
Practices to Your Day Job
Ben Coe
@BenjaminCoe, github.com/bcoe
open source, a
love story
how I ended up at npm.
1
▪ employee #3 at npm
▪ lead maintainer of yargs
▪ built nyc, the code-coverage tool
▪ manage npm On-Site
About Ben
▪ we all have process horror stories:
▫ this doesn’t mean process is bad!
▪ @ceejbot and I came to a conclusion:
OSS Best Practices
▪ process is important!
▪ process should be automated
▫ from tedium comes frustration.
OSS Best Practices
automate all the
things
in automation we trust
2
▪ we use a variety of testing tools:
▫ mocha, lab, tap
▪ we’re not dogmatic about TDD
▫ we’re dogmatic about writing tests.
▪ everything runs with Travis CI
Unit Testing
▪ eliminates the question, did you write a test
for that?
▪ we use the coverage tool nyc
▪ we use Coveralls
Test Coverage
var express = require('wombat')
var app = wombat()
app.get('/', function (req, res) {
res.send('Hello Log')
})
app.listen(3000) github.com/bcoe/nyc
tools should be so
simple they’re fun to
use
▪ this one is controversial!
▪ ultimately, we decided:
▫ use whatever coding style you like, but
automate its enforcement.
▪ I ❤ github.com/feross/standard
Coding Style
▪ the longer you wait to upgrade, the more
annoying it becomes
▪ use npm outdated
▪ greenkeeper.io rocks
keep dependencies
up-to-date
var express = require('wombat')
var app = wombat()
app.get('/', function (req, res) {
res.send('Hello Log')
})
app.listen(3000)
greenkeeper.io
one of my top five, all
time, favorite robots
▪ npm publish --tag=alpha
▪ npm version patch -m “awesome new
feature”
▪ we run several internal npm On-Sites:
▫ private npm packages are a thing.
we’re npm power
users
“engineers are far more tolerable of a
pedantic robot than they are pedantic
people.”
— someone probably.
best practices
grow out of
community
npm’s methods didn’t originate in a vacuum
3
180,000publishers
3,000,000+users
240,612packages
3,395,979,161
downloads
▪ unit-testing is a great example:
▫ developers learned running large OSS
projects, the benefits of unit-testing.
▪ people emulate the projects they respect:
▫ this creates a feedback loop!
how do habits spread?
“What works best is studying the projects of
other maintainers already on this list,
interacting with the developers, learning
from them, and emulating their
methodologies.”
— blog.npmjs.org
▪ great indicator of quality.
▪ grew out of community
badges!
developers converge on the tools that
facilitate these practices
4 Best Practices
Center Around
Great Tools
9/10 Use Travis CI10/10 Use GitHub 3/10 Use Coveralls
top 10 npm packages
▪ a pull request is opened on GitHub
▪ build kicks off on Travis:
▫ installing modules from public and private
registries.
▪ a conversation begins between developers.
the npm workflow
▪ pull-request kept up-to-date by robots:
▫ Coveralls reporting coverage.
▫ Travis CI reporting build status
▪ once merged, module is published to npm
▪ greenkeeper.io notifies other projects o/
the npm workflow
▪ tools work together elegantly.
▪ as many steps are automated as possible:
▫ let humans do what humans are good at.
▪ it feels (a little bit) like you command a robot
army.
what makes this
awesome?
enterprise software, a love story
so, why do you
build Enterprise
software Ben?
5
▪ restrictions on infrastructure.
▪ practices lag behind.
▪ process can be overwhelming.
developing enterprise
software is hard
OSS methodologies
can work!
▪ OSS practices were designed to help large
asynchronous teams work effectively:
▫ this is applicable in large corporations!
▪ InnerSource: Internal Open Source at PayPal
“The results were visible after 6 months. The
Checkout Platform team spends 0% of its
time rewriting code and just 10% reviewing
submissions. The team was able to do a
major refactoring and a 4x increase in
performance without planning for it. The
mindset moved from blocking change to
mentoring and coaching.”
▪ InnerSource is about:
▫ developers taking ownership of repos.
▫ people taking on the role of a lead
maintainer.
▪ developers need tools that empower them.
education is important
▪ good developer tools do more than deliver
an asset to a build server:
▫ there’s a real disconnect between devs
and ops folks here.
what are good
developer tools?
▪ it’s about facilitating communication.
▪ it’s about discovery.
▪ it’s about automation.
▪ it’s about delivering an asset to a build
server.
what do I mean by
this?
Demo Time
InnerSource Tools
how are we working
together?
▪ we’re keeping our roadmaps aligned
▪ we’re looking for tighter integration points
▪ we’re preaching a similar message about
OSS in the Enterprise
why this is awesome
▪ OSS software and Enterprise software can
learn a lot from each other.
▪ we can make a developer’s life more
awesome.
thanks
any questions?
about anything?
Ben Coe
@BenjaminCoe, github.com/bcoe
npm loves you
♥

More Related Content

What's hot

Coordination and Productivity Issues in Free Software: The Role of Brooks' Law
Coordination and Productivity Issues in Free Software: The Role of Brooks' LawCoordination and Productivity Issues in Free Software: The Role of Brooks' Law
Coordination and Productivity Issues in Free Software: The Role of Brooks' Law
Andrea Capiluppi
 
JavaLand 2022 - Debugging distributed systems
JavaLand 2022 - Debugging distributed systemsJavaLand 2022 - Debugging distributed systems
JavaLand 2022 - Debugging distributed systems
Bert Jan Schrijver
 
Software testing presentation
Software testing presentationSoftware testing presentation
Software testing presentation
Nikolas Vourlakis
 
Cf objective2014 testing-testingeverywhere
Cf objective2014   testing-testingeverywhereCf objective2014   testing-testingeverywhere
Cf objective2014 testing-testingeverywhere
ColdFusionConference
 
what's blocking our way
what's blocking our waywhat's blocking our way
what's blocking our way
tanvir afzal
 
JavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps worldJavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps world
Bert Jan Schrijver
 
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
Bert Jan Schrijver
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Hicham El Hammouchi
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
Bert Jan Schrijver
 
Understand the system
Understand the systemUnderstand the system
Understand the system
Diego Pacheco
 
Unit testing for project managers
Unit testing for project managersUnit testing for project managers
Unit testing for project managers
Zend by Rogue Wave Software
 
Devops in with the old, in with the new
Devops   in with the old, in with the newDevops   in with the old, in with the new
Devops in with the old, in with the new
Jan Collijs
 
TDD & Effective Software Development
TDD & Effective Software DevelopmentTDD & Effective Software Development
TDD & Effective Software Development
samserpoosh
 
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
Dan Cundiff
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
Bert Jan Schrijver
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
Vivek Parihar
 
Experience Report
Experience ReportExperience Report
Experience Report
Pushpa Reddy
 
Enterprise Development on a Shoestring Budget
Enterprise Development on a Shoestring BudgetEnterprise Development on a Shoestring Budget
Enterprise Development on a Shoestring Budget
Chris Tankersley
 
PostgreSQL Conference: West 08
PostgreSQL Conference: West 08PostgreSQL Conference: West 08
PostgreSQL Conference: West 08
Joshua Drake
 
DevOps - Automating Legacy
DevOps - Automating LegacyDevOps - Automating Legacy
DevOps - Automating Legacy
David Tank
 

What's hot (20)

Coordination and Productivity Issues in Free Software: The Role of Brooks' Law
Coordination and Productivity Issues in Free Software: The Role of Brooks' LawCoordination and Productivity Issues in Free Software: The Role of Brooks' Law
Coordination and Productivity Issues in Free Software: The Role of Brooks' Law
 
JavaLand 2022 - Debugging distributed systems
JavaLand 2022 - Debugging distributed systemsJavaLand 2022 - Debugging distributed systems
JavaLand 2022 - Debugging distributed systems
 
Software testing presentation
Software testing presentationSoftware testing presentation
Software testing presentation
 
Cf objective2014 testing-testingeverywhere
Cf objective2014   testing-testingeverywhereCf objective2014   testing-testingeverywhere
Cf objective2014 testing-testingeverywhere
 
what's blocking our way
what's blocking our waywhat's blocking our way
what's blocking our way
 
JavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps worldJavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps world
 
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
Skills Matter DevSecOps eXchange Forum 2022 - Software architecture in a DevO...
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
 
Understand the system
Understand the systemUnderstand the system
Understand the system
 
Unit testing for project managers
Unit testing for project managersUnit testing for project managers
Unit testing for project managers
 
Devops in with the old, in with the new
Devops   in with the old, in with the newDevops   in with the old, in with the new
Devops in with the old, in with the new
 
TDD & Effective Software Development
TDD & Effective Software DevelopmentTDD & Effective Software Development
TDD & Effective Software Development
 
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
From No Git to 3000 GitHub Users and How to Keep Them Happy - GitHub Universe...
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
 
Experience Report
Experience ReportExperience Report
Experience Report
 
Enterprise Development on a Shoestring Budget
Enterprise Development on a Shoestring BudgetEnterprise Development on a Shoestring Budget
Enterprise Development on a Shoestring Budget
 
PostgreSQL Conference: West 08
PostgreSQL Conference: West 08PostgreSQL Conference: West 08
PostgreSQL Conference: West 08
 
DevOps - Automating Legacy
DevOps - Automating LegacyDevOps - Automating Legacy
DevOps - Automating Legacy
 

Viewers also liked

Stop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case StudyStop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case Study
All Things Open
 
OpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get StartedOpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get Started
All Things Open
 
Women in Open Source
Women in Open SourceWomen in Open Source
Women in Open Source
All Things Open
 
Using Bootstrap to Create a Common UI Across Products
Using Bootstrap to Create a Common UI Across ProductsUsing Bootstrap to Create a Common UI Across Products
Using Bootstrap to Create a Common UI Across Products
All Things Open
 
Javascript - The Stack and Beyond
Javascript - The Stack and BeyondJavascript - The Stack and Beyond
Javascript - The Stack and Beyond
All Things Open
 
Software Development as a Civic Service
Software Development as a Civic ServiceSoftware Development as a Civic Service
Software Development as a Civic Service
All Things Open
 
Sails.js: Rags to...Open Source
Sails.js: Rags to...Open SourceSails.js: Rags to...Open Source
Sails.js: Rags to...Open Source
All Things Open
 
Great Artists (Designers) Steal
Great Artists (Designers) StealGreat Artists (Designers) Steal
Great Artists (Designers) Steal
All Things Open
 
Streaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via StreamingStreaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via Streaming
All Things Open
 
Open Source in Healthcare
Open Source in HealthcareOpen Source in Healthcare
Open Source in Healthcare
All Things Open
 
Ansible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and CountingAnsible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and Counting
All Things Open
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To Know
All Things Open
 
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
All Things Open
 
Saving the World with Open Source and Science
Saving the World with Open Source and ScienceSaving the World with Open Source and Science
Saving the World with Open Source and Science
All Things Open
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
All Things Open
 
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File System
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File SystemArchitecture of the Upcoming OrangeFS v3 Distributed Parallel File System
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File System
All Things Open
 
Case Study: Ansible and NASA
Case Study: Ansible and NASACase Study: Ansible and NASA
Case Study: Ansible and NASA
All Things Open
 
Pax Data
Pax DataPax Data
Pax Data
All Things Open
 
Introduction to oVirt
Introduction to oVirtIntroduction to oVirt
Introduction to oVirt
All Things Open
 
Battle of the Stacks
Battle of the StacksBattle of the Stacks
Battle of the Stacks
All Things Open
 

Viewers also liked (20)

Stop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case StudyStop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case Study
 
OpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get StartedOpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get Started
 
Women in Open Source
Women in Open SourceWomen in Open Source
Women in Open Source
 
Using Bootstrap to Create a Common UI Across Products
Using Bootstrap to Create a Common UI Across ProductsUsing Bootstrap to Create a Common UI Across Products
Using Bootstrap to Create a Common UI Across Products
 
Javascript - The Stack and Beyond
Javascript - The Stack and BeyondJavascript - The Stack and Beyond
Javascript - The Stack and Beyond
 
Software Development as a Civic Service
Software Development as a Civic ServiceSoftware Development as a Civic Service
Software Development as a Civic Service
 
Sails.js: Rags to...Open Source
Sails.js: Rags to...Open SourceSails.js: Rags to...Open Source
Sails.js: Rags to...Open Source
 
Great Artists (Designers) Steal
Great Artists (Designers) StealGreat Artists (Designers) Steal
Great Artists (Designers) Steal
 
Streaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via StreamingStreaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via Streaming
 
Open Source in Healthcare
Open Source in HealthcareOpen Source in Healthcare
Open Source in Healthcare
 
Ansible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and CountingAnsible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and Counting
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To Know
 
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
The Second Digital Revolution is Here. Are You Ready for Hyperconnectivity?
 
Saving the World with Open Source and Science
Saving the World with Open Source and ScienceSaving the World with Open Source and Science
Saving the World with Open Source and Science
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File System
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File SystemArchitecture of the Upcoming OrangeFS v3 Distributed Parallel File System
Architecture of the Upcoming OrangeFS v3 Distributed Parallel File System
 
Case Study: Ansible and NASA
Case Study: Ansible and NASACase Study: Ansible and NASA
Case Study: Ansible and NASA
 
Pax Data
Pax DataPax Data
Pax Data
 
Introduction to oVirt
Introduction to oVirtIntroduction to oVirt
Introduction to oVirt
 
Battle of the Stacks
Battle of the StacksBattle of the Stacks
Battle of the Stacks
 

Similar to Bringing Open-Source Practices to Your Day Job

Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
AgileNetwork
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based Security
Matt Tesauro
 
Continuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul StackContinuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul Stack
JAXLondon_Conference
 
Putting Devs On-Call: How to Empower Your Team
Putting Devs On-Call: How to Empower Your TeamPutting Devs On-Call: How to Empower Your Team
Putting Devs On-Call: How to Empower Your Team
VictorOps
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair Programming
Andy Melichar
 
DevOps, Performance Optimization and the Green Life with Magento
DevOps, Performance Optimization and the Green Life with MagentoDevOps, Performance Optimization and the Green Life with Magento
DevOps, Performance Optimization and the Green Life with Magento
Luis Tineo
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
Kris Buytaert
 
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
Katarzyna Javaheri-Szpak
 
Devops for drupal
Devops for  drupalDevops for  drupal
Devops for drupal
Kris Buytaert
 
DevOps Game at SGZA
DevOps Game at SGZADevOps Game at SGZA
DevOps Game at SGZA
Dana Pylayeva
 
Velocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOpsVelocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOps
Rodrigo Campos
 
Why agile?
Why agile?Why agile?
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24
 
Rails Operations - Lessons Learned
Rails Operations -  Lessons LearnedRails Operations -  Lessons Learned
Rails Operations - Lessons Learned
Josh Nichols
 
DevOps in the Real World
DevOps in the Real WorldDevOps in the Real World
DevOps in the Real World
Max Yermakhanov
 
Building an Open Source AppSec Pipeline
Building an Open Source AppSec PipelineBuilding an Open Source AppSec Pipeline
Building an Open Source AppSec Pipeline
Matt Tesauro
 
What a DevOps specialist has to know about static code analysis
What a DevOps specialist has to know about static code analysisWhat a DevOps specialist has to know about static code analysis
What a DevOps specialist has to know about static code analysis
Andrey Karpov
 
AATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate GameAATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate Game
Dana Pylayeva
 
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveOSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
NETWAYS
 
DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
Randy Shoup
 

Similar to Bringing Open-Source Practices to Your Day Job (20)

Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based Security
 
Continuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul StackContinuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul Stack
 
Putting Devs On-Call: How to Empower Your Team
Putting Devs On-Call: How to Empower Your TeamPutting Devs On-Call: How to Empower Your Team
Putting Devs On-Call: How to Empower Your Team
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair Programming
 
DevOps, Performance Optimization and the Green Life with Magento
DevOps, Performance Optimization and the Green Life with MagentoDevOps, Performance Optimization and the Green Life with Magento
DevOps, Performance Optimization and the Green Life with Magento
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
 
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
WDI 2021 - Pierwszy duży projekt w Pythonie i Selenium - Katarzyna Javaheri-S...
 
Devops for drupal
Devops for  drupalDevops for  drupal
Devops for drupal
 
DevOps Game at SGZA
DevOps Game at SGZADevOps Game at SGZA
DevOps Game at SGZA
 
Velocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOpsVelocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOps
 
Why agile?
Why agile?Why agile?
Why agile?
 
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOps
 
Rails Operations - Lessons Learned
Rails Operations -  Lessons LearnedRails Operations -  Lessons Learned
Rails Operations - Lessons Learned
 
DevOps in the Real World
DevOps in the Real WorldDevOps in the Real World
DevOps in the Real World
 
Building an Open Source AppSec Pipeline
Building an Open Source AppSec PipelineBuilding an Open Source AppSec Pipeline
Building an Open Source AppSec Pipeline
 
What a DevOps specialist has to know about static code analysis
What a DevOps specialist has to know about static code analysisWhat a DevOps specialist has to know about static code analysis
What a DevOps specialist has to know about static code analysis
 
AATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate GameAATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate Game
 
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveOSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
 
DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
 

Recently uploaded

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 

Recently uploaded (20)

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 

Bringing Open-Source Practices to Your Day Job

  • 2. npm Austin 2016 o/ Bringing Open-Source Practices to Your Day Job Ben Coe @BenjaminCoe, github.com/bcoe
  • 3. open source, a love story how I ended up at npm. 1
  • 4. ▪ employee #3 at npm ▪ lead maintainer of yargs ▪ built nyc, the code-coverage tool ▪ manage npm On-Site About Ben
  • 5. ▪ we all have process horror stories: ▫ this doesn’t mean process is bad! ▪ @ceejbot and I came to a conclusion: OSS Best Practices
  • 6. ▪ process is important! ▪ process should be automated ▫ from tedium comes frustration. OSS Best Practices
  • 7. automate all the things in automation we trust 2
  • 8. ▪ we use a variety of testing tools: ▫ mocha, lab, tap ▪ we’re not dogmatic about TDD ▫ we’re dogmatic about writing tests. ▪ everything runs with Travis CI Unit Testing
  • 9. ▪ eliminates the question, did you write a test for that? ▪ we use the coverage tool nyc ▪ we use Coveralls Test Coverage
  • 10. var express = require('wombat') var app = wombat() app.get('/', function (req, res) { res.send('Hello Log') }) app.listen(3000) github.com/bcoe/nyc tools should be so simple they’re fun to use
  • 11. ▪ this one is controversial! ▪ ultimately, we decided: ▫ use whatever coding style you like, but automate its enforcement. ▪ I ❤ github.com/feross/standard Coding Style
  • 12. ▪ the longer you wait to upgrade, the more annoying it becomes ▪ use npm outdated ▪ greenkeeper.io rocks keep dependencies up-to-date
  • 13. var express = require('wombat') var app = wombat() app.get('/', function (req, res) { res.send('Hello Log') }) app.listen(3000) greenkeeper.io one of my top five, all time, favorite robots
  • 14. ▪ npm publish --tag=alpha ▪ npm version patch -m “awesome new feature” ▪ we run several internal npm On-Sites: ▫ private npm packages are a thing. we’re npm power users
  • 15. “engineers are far more tolerable of a pedantic robot than they are pedantic people.” — someone probably.
  • 16. best practices grow out of community npm’s methods didn’t originate in a vacuum 3
  • 19. ▪ unit-testing is a great example: ▫ developers learned running large OSS projects, the benefits of unit-testing. ▪ people emulate the projects they respect: ▫ this creates a feedback loop! how do habits spread?
  • 20. “What works best is studying the projects of other maintainers already on this list, interacting with the developers, learning from them, and emulating their methodologies.” — blog.npmjs.org
  • 21. ▪ great indicator of quality. ▪ grew out of community badges!
  • 22. developers converge on the tools that facilitate these practices 4 Best Practices Center Around Great Tools
  • 23. 9/10 Use Travis CI10/10 Use GitHub 3/10 Use Coveralls top 10 npm packages
  • 24. ▪ a pull request is opened on GitHub ▪ build kicks off on Travis: ▫ installing modules from public and private registries. ▪ a conversation begins between developers. the npm workflow
  • 25. ▪ pull-request kept up-to-date by robots: ▫ Coveralls reporting coverage. ▫ Travis CI reporting build status ▪ once merged, module is published to npm ▪ greenkeeper.io notifies other projects o/ the npm workflow
  • 26. ▪ tools work together elegantly. ▪ as many steps are automated as possible: ▫ let humans do what humans are good at. ▪ it feels (a little bit) like you command a robot army. what makes this awesome?
  • 27. enterprise software, a love story so, why do you build Enterprise software Ben? 5
  • 28. ▪ restrictions on infrastructure. ▪ practices lag behind. ▪ process can be overwhelming. developing enterprise software is hard
  • 29. OSS methodologies can work! ▪ OSS practices were designed to help large asynchronous teams work effectively: ▫ this is applicable in large corporations! ▪ InnerSource: Internal Open Source at PayPal
  • 30. “The results were visible after 6 months. The Checkout Platform team spends 0% of its time rewriting code and just 10% reviewing submissions. The team was able to do a major refactoring and a 4x increase in performance without planning for it. The mindset moved from blocking change to mentoring and coaching.”
  • 31. ▪ InnerSource is about: ▫ developers taking ownership of repos. ▫ people taking on the role of a lead maintainer. ▪ developers need tools that empower them. education is important
  • 32. ▪ good developer tools do more than deliver an asset to a build server: ▫ there’s a real disconnect between devs and ops folks here. what are good developer tools?
  • 33. ▪ it’s about facilitating communication. ▪ it’s about discovery. ▪ it’s about automation. ▪ it’s about delivering an asset to a build server. what do I mean by this?
  • 36. how are we working together? ▪ we’re keeping our roadmaps aligned ▪ we’re looking for tighter integration points ▪ we’re preaching a similar message about OSS in the Enterprise
  • 37. why this is awesome ▪ OSS software and Enterprise software can learn a lot from each other. ▪ we can make a developer’s life more awesome.
  • 38. thanks any questions? about anything? Ben Coe @BenjaminCoe, github.com/bcoe