SlideShare a Scribd company logo
From Zero to Merged
Or how we made it happen with some help
ManageIQ Design Summit June 2016
Agenda
Your excited first day
Our development Environment
On pull requests
Tests
Migrations
Asking for help
First day on the job
TO DO LIST:
Learn
Ruby
Rails
Gems
Haml
RSPEC
Git
Github
Rubocop
I :heart: ruby
It’s a long way ... get support.
RUBY ON RAILS TUTORIAL (3RD ED.) Learn Web Development with Rails -
Michael Hartl
The Rails 4 Way - Fernandez Obie (Autor), Faustino Kevin (Autor)
Our
development
environment
No-frills solution
Setting up your development environment
Read the Developer Setup in ManageIQ
Guides
System packages
Ruby & bundler
Git & Github
Rails environment up and running
Minimum workers
Console
Update dependencies and migrating
Virtual environment
RHEV (Ovirt) - So you can manage it with MIQ (*)
MIQ - What else? - A reference
Satellite - Configuration management - Content distribution
IdM - Identity Management
OpenShift - Friendly PaaS
Ansible - Configuration management
(*) Your source of data
Github
We tried several solutions
We could not make them work for us
WIP / Assignments
You have a tag
[WIP] And a header
MIQ-bot can help
You don’t need access to the repo to change things
Gerrit
We tried that too…
Overkill
Strange case of bleeding eyes
Github code review was enough
CI / CD
TESTING BEFORE PULL
REQUESTS
You can configure travis to run when you
push in your fork (https://travis-ci.org/).
Allows for easier review of your code before
the PR
Same automatic review that will happen for
the PR.
Taiga
https://taiga.io/
On pull
requests
Just do it!
Creating the pull
request
# git checkount -b “my
awesome feature”
<CODE AS A GENTLEMAN>
# git commit -a -m “Let’s
make a useful description
here”
# git rebase
<PULL-REQUEST>
Size matters
Choose the one that applies:
1. Complete functionality (i.e. that big awesome pull request that creates a new chargeback, fixed the
world and praises God at the same time)
2. Independent functionality (i.e. that big pull request that needs others)
3. Something that works (i.e. complete feature but only part of a use case)
4. A small pull request (i.e. nothing works here but it is fine)
Does it have tests? Many?
Is it commented?
Is it documented?
Are the commits showing a logical sequence?
Tests
Tests on your laptop
Guidelines for Rspec http://betterspecs.org/
Rubocop http://batsov.com/rubocop/
Dedicate some time to learn them….
Because...
Why make a nice test?
Day 1
There is a new merge in code.
Commits broken code the day before
release that makes your code fail.
Day 2
You don’t know where the problem is
You only see...
Day 2
You don’t know where the problem is
You only see...
How to solve minimize that?
Learn Rspec
Test your code in every aspect with Rspec
Happy path
Not so happy path
Edge cases
That case that happens when somebody else changes
his/yours/other’s code
Make sure your code won’t fail in the future
Untested code
is broken code
Martin Aspeli
Philipp von Weitershausen
Migrations
Backwards compatibility
You need to migrate the model
And test it
But you need to migrate the data too (i.e. those ~2k VM)
And test that, too!
And it is possible that you want to go back
And you should test that
Have we talked about
backporting? (we don’t)
Even if you don’t
Asking for help
(CC BY 2.0) https://www.flickr.com/photos/30793552@N04/6237765131/in/photostream/
Never give up
You’re not alone
talk.manageiq.org
Expose your problem
Ask the community
IRC
I haven’t seen too much activity there… (so see next slide)
#manageiq in freenode
Github
There is a lot of interaction within pull-requests
You can refer to @people
And to #issues
It is an iterative process
Gitter
Active community with many channels:
UI
Chargeback
Tenancy
Providers
Core
Automate
Containers
Performance
...
ManageIQ Spain Team
e-mail: alvaro.delaluz@neartechnologies.com
github: @delaluzparra
e-mail: aljesusg@gmail.com
github: @aljesusg
ManageIQ Spain Team
e-mail: Tamledric@gmail.com
github: @tledesma
e-mail: amaury.muro@gmail.com
github: @amaurygonzalez
Thank you!

More Related Content

What's hot

The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
Peter Kofler
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)
Peter Kofler
 
Serving ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme versionServing ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme version
Sebastián Ramírez Montaño
 
Creating an api from design to security.
Creating an api from design to security.Creating an api from design to security.
Creating an api from design to security.
Roan Brasil Monteiro
 
How to ship web software like pirates!
How to ship web software like pirates!How to ship web software like pirates!
How to ship web software like pirates!
Sylvain Carle
 
Jumping in Jakarta Open Source Project Everything nobody tells you
Jumping in Jakarta Open Source Project  Everything nobody tells youJumping in Jakarta Open Source Project  Everything nobody tells you
Jumping in Jakarta Open Source Project Everything nobody tells you
Roan Brasil Monteiro
 
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
Codemotion
 
iRail at hack democracy
iRail at hack democracyiRail at hack democracy
iRail at hack democracy
Pieter Colpaert
 
Hacktoberfest - An Open Source Story
Hacktoberfest - An Open Source StoryHacktoberfest - An Open Source Story
Hacktoberfest - An Open Source Story
Johan Thelin
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
Peter Kofler
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
Sebastián Ramírez Montaño
 
PHP, Lithium and MongoDB
PHP, Lithium and MongoDBPHP, Lithium and MongoDB
PHP, Lithium and MongoDB
Mitch Pirtle
 
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
EvoletTechnologiesCo
 

What's hot (14)

The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)
 
Serving ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme versionServing ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme version
 
Creating an api from design to security.
Creating an api from design to security.Creating an api from design to security.
Creating an api from design to security.
 
How to ship web software like pirates!
How to ship web software like pirates!How to ship web software like pirates!
How to ship web software like pirates!
 
Jumping in Jakarta Open Source Project Everything nobody tells you
Jumping in Jakarta Open Source Project  Everything nobody tells youJumping in Jakarta Open Source Project  Everything nobody tells you
Jumping in Jakarta Open Source Project Everything nobody tells you
 
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
 
iRail at hack democracy
iRail at hack democracyiRail at hack democracy
iRail at hack democracy
 
Hacktoberfest - An Open Source Story
Hacktoberfest - An Open Source StoryHacktoberfest - An Open Source Story
Hacktoberfest - An Open Source Story
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
 
PHP, Lithium and MongoDB
PHP, Lithium and MongoDBPHP, Lithium and MongoDB
PHP, Lithium and MongoDB
 
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
 

Similar to First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016

Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
Gautam Rege
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
Barry Jones
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
myuser
 
Contribute to rails
Contribute to railsContribute to rails
Contribute to rails
martinsvalin
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
Mirco Hering
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interview
Eric Brooke
 
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT CompilationHighly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Matthew Gaudet
 
How to implement ruby on rails testing practices to build a successful web ap...
How to implement ruby on rails testing practices to build a successful web ap...How to implement ruby on rails testing practices to build a successful web ap...
How to implement ruby on rails testing practices to build a successful web ap...
Katy Slemon
 
"Leveraging the Event Loop for Blazing-Fast Applications!", Michael Di Prisco
"Leveraging the Event Loop for Blazing-Fast Applications!",  Michael Di Prisco"Leveraging the Event Loop for Blazing-Fast Applications!",  Michael Di Prisco
"Leveraging the Event Loop for Blazing-Fast Applications!", Michael Di Prisco
Fwdays
 
The story of language development
The story of language developmentThe story of language development
The story of language development
Hiroshi SHIBATA
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013
Brian Sam-Bodden
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
jazzman1980
 
Maintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learnedMaintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learned
Leonardo Tegon
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
Paul Pajo
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
Robert Postill
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
Johan De Wit
 
Puppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven DevelopmentPuppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven Development
Puppet
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
Jeremy Coates
 
My experience of Ruby Education in Taiwan
My experience of Ruby Education in TaiwanMy experience of Ruby Education in Taiwan
My experience of Ruby Education in Taiwan
Mu-Fan Teng
 

Similar to First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016 (20)

Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 
Contribute to rails
Contribute to railsContribute to rails
Contribute to rails
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interview
 
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT CompilationHighly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
 
How to implement ruby on rails testing practices to build a successful web ap...
How to implement ruby on rails testing practices to build a successful web ap...How to implement ruby on rails testing practices to build a successful web ap...
How to implement ruby on rails testing practices to build a successful web ap...
 
"Leveraging the Event Loop for Blazing-Fast Applications!", Michael Di Prisco
"Leveraging the Event Loop for Blazing-Fast Applications!",  Michael Di Prisco"Leveraging the Event Loop for Blazing-Fast Applications!",  Michael Di Prisco
"Leveraging the Event Loop for Blazing-Fast Applications!", Michael Di Prisco
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
 
Maintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learnedMaintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learned
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
 
Puppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven DevelopmentPuppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven Development
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
 
My experience of Ruby Education in Taiwan
My experience of Ruby Education in TaiwanMy experience of Ruby Education in Taiwan
My experience of Ruby Education in Taiwan
 

More from ManageIQ

ManageIQ - Sprint 239 Review - Slide Deck
ManageIQ - Sprint 239 Review - Slide DeckManageIQ - Sprint 239 Review - Slide Deck
ManageIQ - Sprint 239 Review - Slide Deck
ManageIQ
 
ManaegIQ - Sprint 238 Review - Slide Deck
ManaegIQ - Sprint 238 Review - Slide DeckManaegIQ - Sprint 238 Review - Slide Deck
ManaegIQ - Sprint 238 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 237 Review - Slide Deck
ManageIQ - Sprint 237 Review - Slide DeckManageIQ - Sprint 237 Review - Slide Deck
ManageIQ - Sprint 237 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 235 Review - Slide Deck
ManageIQ - Sprint 235 Review - Slide DeckManageIQ - Sprint 235 Review - Slide Deck
ManageIQ - Sprint 235 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 234 Review - Slide Deck
ManageIQ - Sprint 234 Review - Slide DeckManageIQ - Sprint 234 Review - Slide Deck
ManageIQ - Sprint 234 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 233 Review - Slide Deck
ManageIQ - Sprint 233 Review - Slide DeckManageIQ - Sprint 233 Review - Slide Deck
ManageIQ - Sprint 233 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 232 Review - Slide Deck
ManageIQ - Sprint 232 Review - Slide DeckManageIQ - Sprint 232 Review - Slide Deck
ManageIQ - Sprint 232 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 231 Review - Slide Deck
ManageIQ - Sprint 231 Review - Slide DeckManageIQ - Sprint 231 Review - Slide Deck
ManageIQ - Sprint 231 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 230 Review - Slide Deck
ManageIQ - Sprint 230 Review - Slide DeckManageIQ - Sprint 230 Review - Slide Deck
ManageIQ - Sprint 230 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 229 Review - Slide Deck
ManageIQ - Sprint 229 Review - Slide DeckManageIQ - Sprint 229 Review - Slide Deck
ManageIQ - Sprint 229 Review - Slide Deck
ManageIQ
 
ManageIQ - Sprint 228 Review - Slide Deck
ManageIQ - Sprint 228 Review - Slide DeckManageIQ - Sprint 228 Review - Slide Deck
ManageIQ - Sprint 228 Review - Slide Deck
ManageIQ
 
Sprint 227
Sprint 227Sprint 227
Sprint 227
ManageIQ
 
Sprint 226
Sprint 226Sprint 226
Sprint 226
ManageIQ
 
Sprint 225
Sprint 225Sprint 225
Sprint 225
ManageIQ
 
Sprint 224
Sprint 224Sprint 224
Sprint 224
ManageIQ
 
Sprint 223
Sprint 223Sprint 223
Sprint 223
ManageIQ
 
Sprint 222
Sprint 222Sprint 222
Sprint 222
ManageIQ
 
Sprint 221
Sprint 221Sprint 221
Sprint 221
ManageIQ
 
Sprint 220
Sprint 220Sprint 220
Sprint 220
ManageIQ
 

More from ManageIQ (20)

ManageIQ - Sprint 239 Review - Slide Deck
ManageIQ - Sprint 239 Review - Slide DeckManageIQ - Sprint 239 Review - Slide Deck
ManageIQ - Sprint 239 Review - Slide Deck
 
ManaegIQ - Sprint 238 Review - Slide Deck
ManaegIQ - Sprint 238 Review - Slide DeckManaegIQ - Sprint 238 Review - Slide Deck
ManaegIQ - Sprint 238 Review - Slide Deck
 
ManageIQ - Sprint 237 Review - Slide Deck
ManageIQ - Sprint 237 Review - Slide DeckManageIQ - Sprint 237 Review - Slide Deck
ManageIQ - Sprint 237 Review - Slide Deck
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
ManageIQ - Sprint 235 Review - Slide Deck
ManageIQ - Sprint 235 Review - Slide DeckManageIQ - Sprint 235 Review - Slide Deck
ManageIQ - Sprint 235 Review - Slide Deck
 
ManageIQ - Sprint 234 Review - Slide Deck
ManageIQ - Sprint 234 Review - Slide DeckManageIQ - Sprint 234 Review - Slide Deck
ManageIQ - Sprint 234 Review - Slide Deck
 
ManageIQ - Sprint 233 Review - Slide Deck
ManageIQ - Sprint 233 Review - Slide DeckManageIQ - Sprint 233 Review - Slide Deck
ManageIQ - Sprint 233 Review - Slide Deck
 
ManageIQ - Sprint 232 Review - Slide Deck
ManageIQ - Sprint 232 Review - Slide DeckManageIQ - Sprint 232 Review - Slide Deck
ManageIQ - Sprint 232 Review - Slide Deck
 
ManageIQ - Sprint 231 Review - Slide Deck
ManageIQ - Sprint 231 Review - Slide DeckManageIQ - Sprint 231 Review - Slide Deck
ManageIQ - Sprint 231 Review - Slide Deck
 
ManageIQ - Sprint 230 Review - Slide Deck
ManageIQ - Sprint 230 Review - Slide DeckManageIQ - Sprint 230 Review - Slide Deck
ManageIQ - Sprint 230 Review - Slide Deck
 
ManageIQ - Sprint 229 Review - Slide Deck
ManageIQ - Sprint 229 Review - Slide DeckManageIQ - Sprint 229 Review - Slide Deck
ManageIQ - Sprint 229 Review - Slide Deck
 
ManageIQ - Sprint 228 Review - Slide Deck
ManageIQ - Sprint 228 Review - Slide DeckManageIQ - Sprint 228 Review - Slide Deck
ManageIQ - Sprint 228 Review - Slide Deck
 
Sprint 227
Sprint 227Sprint 227
Sprint 227
 
Sprint 226
Sprint 226Sprint 226
Sprint 226
 
Sprint 225
Sprint 225Sprint 225
Sprint 225
 
Sprint 224
Sprint 224Sprint 224
Sprint 224
 
Sprint 223
Sprint 223Sprint 223
Sprint 223
 
Sprint 222
Sprint 222Sprint 222
Sprint 222
 
Sprint 221
Sprint 221Sprint 221
Sprint 221
 
Sprint 220
Sprint 220Sprint 220
Sprint 220
 

Recently uploaded

Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 

Recently uploaded (20)

Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 

First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016

  • 1. From Zero to Merged Or how we made it happen with some help ManageIQ Design Summit June 2016
  • 2. Agenda Your excited first day Our development Environment On pull requests Tests Migrations Asking for help
  • 3. First day on the job TO DO LIST: Learn Ruby Rails Gems Haml RSPEC Git Github Rubocop
  • 4. I :heart: ruby It’s a long way ... get support. RUBY ON RAILS TUTORIAL (3RD ED.) Learn Web Development with Rails - Michael Hartl The Rails 4 Way - Fernandez Obie (Autor), Faustino Kevin (Autor)
  • 6. Setting up your development environment Read the Developer Setup in ManageIQ Guides System packages Ruby & bundler Git & Github Rails environment up and running Minimum workers Console Update dependencies and migrating
  • 7. Virtual environment RHEV (Ovirt) - So you can manage it with MIQ (*) MIQ - What else? - A reference Satellite - Configuration management - Content distribution IdM - Identity Management OpenShift - Friendly PaaS Ansible - Configuration management (*) Your source of data
  • 8. Github We tried several solutions We could not make them work for us WIP / Assignments You have a tag [WIP] And a header MIQ-bot can help You don’t need access to the repo to change things
  • 9. Gerrit We tried that too… Overkill Strange case of bleeding eyes Github code review was enough
  • 10. CI / CD TESTING BEFORE PULL REQUESTS You can configure travis to run when you push in your fork (https://travis-ci.org/). Allows for easier review of your code before the PR Same automatic review that will happen for the PR.
  • 13. Creating the pull request # git checkount -b “my awesome feature” <CODE AS A GENTLEMAN> # git commit -a -m “Let’s make a useful description here” # git rebase <PULL-REQUEST>
  • 14. Size matters Choose the one that applies: 1. Complete functionality (i.e. that big awesome pull request that creates a new chargeback, fixed the world and praises God at the same time) 2. Independent functionality (i.e. that big pull request that needs others) 3. Something that works (i.e. complete feature but only part of a use case) 4. A small pull request (i.e. nothing works here but it is fine) Does it have tests? Many? Is it commented? Is it documented? Are the commits showing a logical sequence?
  • 15. Tests
  • 16. Tests on your laptop Guidelines for Rspec http://betterspecs.org/ Rubocop http://batsov.com/rubocop/ Dedicate some time to learn them…. Because...
  • 17. Why make a nice test?
  • 18. Day 1 There is a new merge in code. Commits broken code the day before release that makes your code fail.
  • 19. Day 2 You don’t know where the problem is You only see...
  • 20. Day 2 You don’t know where the problem is You only see...
  • 21. How to solve minimize that? Learn Rspec Test your code in every aspect with Rspec Happy path Not so happy path Edge cases That case that happens when somebody else changes his/yours/other’s code Make sure your code won’t fail in the future
  • 22. Untested code is broken code Martin Aspeli Philipp von Weitershausen
  • 24. Backwards compatibility You need to migrate the model And test it But you need to migrate the data too (i.e. those ~2k VM) And test that, too! And it is possible that you want to go back And you should test that Have we talked about backporting? (we don’t) Even if you don’t
  • 25. Asking for help (CC BY 2.0) https://www.flickr.com/photos/30793552@N04/6237765131/in/photostream/
  • 29. IRC I haven’t seen too much activity there… (so see next slide) #manageiq in freenode
  • 30. Github There is a lot of interaction within pull-requests You can refer to @people And to #issues It is an iterative process
  • 31. Gitter Active community with many channels: UI Chargeback Tenancy Providers Core Automate Containers Performance ...
  • 32. ManageIQ Spain Team e-mail: alvaro.delaluz@neartechnologies.com github: @delaluzparra e-mail: aljesusg@gmail.com github: @aljesusg
  • 33. ManageIQ Spain Team e-mail: Tamledric@gmail.com github: @tledesma e-mail: amaury.muro@gmail.com github: @amaurygonzalez