SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
EXPERIENCES FROM GOING
OPEN SOURCE
BY ADRIEN BALL
SNIPS
SNIPS
END-TO-END SPEECH TO MEANING SOFTWARE
Wake word Speech to text
Natural Language
Understanding
SNIPS
NATURAL LANGUAGE UNDERSTANDING
Speech to text
Natural Language
Understanding
SNIPS
NATURAL LANGUAGE UNDERSTANDING
Natural Language
Understanding
OPEN SOURCE AT SNIPS
MOTIVATIONS
▸ Transparency
▸ Visibility
▸ Reproducibility
PACKAGING FOR
OPEN SOURCE
PACKAGING FOR OPEN SOURCE
OBJECTIVES FOR THE COMMUNITY
▸ Understand
▸ Use
▸ Contribute
PACKAGING FOR OPEN SOURCE
REQUIREMENTS
▸ Documentation
▸ Continuous Integration and build automation
▸ APIs and versioning
PACKAGING FOR OPEN SOURCE
GOOD PRACTICES
▸ Documentation
▸ Continuous Integration and build automation
▸ APIs and versioning
PACKAGING FOR OPEN SOURCE
DOCUMENTATION
▸ Hard and painful to maintain
▸ More documentation => More outdated documentation
▸ Less documentation => Less explanations
https://xkcd.com/1343/
DOCUMENTATION
WELL DESIGNED APIS
DOCUMENTATION
DOCSTRINGS
DOCUMENTATION
DOCSTRINGS
DOCUMENTATION
DOCTESTS
PACKAGING FOR OPEN SOURCE
GOOD PRACTICES
▸ Documentation
▸ Continuous Integration and build automation
▸ APIs and versioning
PACKAGING FOR OPEN SOURCE
CONTINUOUS INTEGRATION AND BUILD AUTOMATION
▸ Continuous integration:
▸ Always be merging into a branch
▸ Merge frequently
▸ Build automation:
▸ Enforce tests and checks to pass before merging
PACKAGING FOR OPEN SOURCE
BUILD AUTOMATION, WHAT FOR ?
▸ the project can be installed or built on the targeted
platforms
▸ the code is doing what it is expected to do
▸ you haven't introduced regressions
▸ the documentation is not outdated
▸ automate whatever is error prone, and can be automated
PACKAGING FOR OPEN SOURCE
GOOD PRACTICES
▸ Documentation
▸ Continuous Integration and build automation
▸ APIs and versioning
PACKAGING FOR OPEN SOURCE
APIS AND VERSIONING
▸ Python: everything is public!
▸ Public API = Conventions + Doc
PACKAGING FOR OPEN SOURCE
SEMANTIC VERSIONING
1.3.2
PACKAGING FOR OPEN SOURCE
SEMANTIC VERSIONING
1 3 2
major minor patch
Bump when you
Examples
make incompatible API
changes
- removed function
- additional mandatory
param
- changed returned
type
Impact on
client code
no longer works
add functionality in a
backwards compatible
manner
- new API
- new optional param
additional capabilities
make backwards
compatible bug fixes
improved behavior
- internal bugs
MACHINE LEARNING
AND OPEN SOURCE
MACHINE LEARNING AND OPEN SOURCE
SPECIFIC CHALLENGES
▸ Managing resources
▸ Testing a Machine Learning pipeline
▸ Reproducibility
▸ Modularity and Extensibility
MACHINE LEARNING AND OPEN SOURCE
SPECIFIC CHALLENGES
▸ Managing resources
▸ Testing a Machine Learning pipeline
▸ Reproducibility
▸ Modularity and Extensibility
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES
Input Output
resources
ML Pipeline
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES
Input Output
ML Pipeline
▸ Heavier library
▸ Updating the resources requires a release
▸ No user-defined resources
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES
Input Output
resources
ML Pipeline
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES
Input Output
resources
ML Pipeline
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES IN SNIPS NLU
MACHINE LEARNING AND OPEN SOURCE
MANAGING RESOURCES IN SNIPS NLU
MACHINE LEARNING AND OPEN SOURCE
SPECIFIC CHALLENGES
▸ Managing resources
▸ Testing a Machine Learning pipeline
▸ Reproducibility
▸ Modularity and Extensibility
▸ Traditional testing:
▸ Testing in ML ?
MACHINE LEARNING AND OPEN SOURCE
TESTING A MACHINE LEARNING PIPELINE
MACHINE LEARNING AND OPEN SOURCE
TESTING A MACHINE LEARNING PIPELINE
MACHINE LEARNING AND OPEN SOURCE
TESTING DONE WRONG
MACHINE LEARNING AND OPEN SOURCE
TESTING DONE RIGHT
MACHINE LEARNING AND OPEN SOURCE
TESTING A MACHINE LEARNING PIPELINE
MACHINE LEARNING AND OPEN SOURCE
HANDLE RANDOMNESS IN TESTS
MACHINE LEARNING AND OPEN SOURCE
SPECIFIC CHALLENGES
▸ Managing resources
▸ Testing a Machine Learning pipeline
▸ Reproducibility
▸ Modularity and Extensibility
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY FROM A PRODUCT PERSPECTIVE
Data
Training
Evaluation selected data
Suffering
Reproducibility
0% 100%
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY FROM A DEBUGGING PERSPECTIVE
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY FOR BENCHMARKS
Data
+
Code
🤓
🤓
🤓
0.95 0.87 0.92
0.98 0.91 0.88
0.89 0.83 0.92
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY WITH RANDOM SEEDS
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY THROUGH CONFIGURATIONS
56
3.0
True
code
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY THROUGH CONFIGURATIONS
42
1.5
False
code
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY THROUGH CONFIGURATIONS
42
1.5
False
x
y
z
param_1:
param_2:
param_3:
code
config
MACHINE LEARNING AND OPEN SOURCE
REPRODUCIBILITY THROUGH CONFIGURATIONS
Data
+
Code
+
Config
🤓
🤓
🤓
0.95 0.87 0.92
0.98 0.91 0.88
0.89 0.83 0.92
MACHINE LEARNING AND OPEN SOURCE
SPECIFIC CHALLENGES
▸ Managing resources
▸ Testing a Machine Learning pipeline
▸ Reproducibility
▸ Modularity and Extensibility
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
Input Output
LogReg
SVM
PIPELINE
AVAILABLE
COMPONENTS
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
Input Output
LogReg
AVAILABLE
COMPONENTS
SVM
PIPELINE
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
Input Output
LogReg
SVM
PIPELINE
AVAILABLE
COMPONENTS
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
Input Output
LogReg
SVM
PIPELINE
AVAILABLE
COMPONENTS
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
Input Output
LogReg
SVM
PIPELINE
AVAILABLE
COMPONENTS
MACHINE LEARNING AND OPEN SOURCE
MODULARITY AND EXTENSIBILITY
FILE SYSTEMRAM
MACHINE LEARNING AND OPEN SOURCE
REGISTRABLE COMPONENTS
Declarative syntax for
pipeline and components
MACHINE LEARNING AND OPEN SOURCE
REGISTRABLE COMPONENTS
Components Registry
EXPERIENCES FROM GOING OPEN SOURCE
TAKEAWAYS
▸ writing tests save you time, not the opposite
▸ test the right things
▸ make your outputs reproducible
▸ use abstractions to improve modularity and clarity
THANK YOU
@adrien_ball
github.com/snipsco/snips-nlu

Mais conteúdo relacionado

Semelhante a Experiences from going open source

2016 quali continuous testing quest for quality conference
2016 quali continuous testing quest for quality conference2016 quali continuous testing quest for quality conference
2016 quali continuous testing quest for quality conference
QualiQuali
 
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
DVClub
 
Track c how do we break - jasper
Track c   how do we break - jasperTrack c   how do we break - jasper
Track c how do we break - jasper
chiportal
 

Semelhante a Experiences from going open source (20)

Devops (start walking in the same direction) by ops
Devops (start walking in the same direction) by opsDevops (start walking in the same direction) by ops
Devops (start walking in the same direction) by ops
 
Testing as a container
Testing as a containerTesting as a container
Testing as a container
 
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt LongLondon Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
 
Going Atomic with your Container Infrastructure
Going Atomic with your Container InfrastructureGoing Atomic with your Container Infrastructure
Going Atomic with your Container Infrastructure
 
Advanced Topics - Session 1 - Continuous Deployment Practices on AWS
Advanced Topics - Session 1 - Continuous Deployment Practices on AWSAdvanced Topics - Session 1 - Continuous Deployment Practices on AWS
Advanced Topics - Session 1 - Continuous Deployment Practices on AWS
 
VMware vROps Management Pack for Hadoop
VMware vROps Management Pack for HadoopVMware vROps Management Pack for Hadoop
VMware vROps Management Pack for Hadoop
 
OakLabs Presents: PCRdrive
OakLabs Presents: PCRdriveOakLabs Presents: PCRdrive
OakLabs Presents: PCRdrive
 
DevOps Bootcamp, Alex Corkin, 12 April 2016
DevOps Bootcamp, Alex Corkin, 12 April 2016DevOps Bootcamp, Alex Corkin, 12 April 2016
DevOps Bootcamp, Alex Corkin, 12 April 2016
 
Page Performance
Page PerformancePage Performance
Page Performance
 
Cascading concurrent yahoo lunch_nlearn
Cascading concurrent   yahoo lunch_nlearnCascading concurrent   yahoo lunch_nlearn
Cascading concurrent yahoo lunch_nlearn
 
2016 quali continuous testing quest for quality conference
2016 quali continuous testing quest for quality conference2016 quali continuous testing quest for quality conference
2016 quali continuous testing quest for quality conference
 
Xebia labsperforce final
Xebia labsperforce finalXebia labsperforce final
Xebia labsperforce final
 
Testing programmable infrastructure
Testing programmable infrastructureTesting programmable infrastructure
Testing programmable infrastructure
 
Database Modernization (Azure SQL Database)
Database Modernization (Azure SQL Database)Database Modernization (Azure SQL Database)
Database Modernization (Azure SQL Database)
 
Performance Benchmarking of Clouds Evaluating OpenStack
Performance Benchmarking of Clouds                Evaluating OpenStackPerformance Benchmarking of Clouds                Evaluating OpenStack
Performance Benchmarking of Clouds Evaluating OpenStack
 
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
 
A Java Developers first Clojure project
A Java Developers first Clojure projectA Java Developers first Clojure project
A Java Developers first Clojure project
 
Developer Intro to OpenShift
Developer Intro to OpenShiftDeveloper Intro to OpenShift
Developer Intro to OpenShift
 
Hadoop Administration Training | Hadoop Administration Tutorial | Hadoop Admi...
Hadoop Administration Training | Hadoop Administration Tutorial | Hadoop Admi...Hadoop Administration Training | Hadoop Administration Tutorial | Hadoop Admi...
Hadoop Administration Training | Hadoop Administration Tutorial | Hadoop Admi...
 
Track c how do we break - jasper
Track c   how do we break - jasperTrack c   how do we break - jasper
Track c how do we break - jasper
 

Último

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 

Último (20)

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 

Experiences from going open source