SlideShare a Scribd company logo
Crucible

                            Code Freeze 2012
                                      Jan 12, 2012
                                      Brian Repko
       http://www.learnthinkcode.com
Copyright 2011 LearnThinkCode, Inc.
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Agenda
●
    Why a Code Review Tool?
●
    Introduction to FishEye
●
    Introduction to Crucible
          ●
              What it is / How it works (screenshots)
          ●
              Integration with JIRA
●
    Effective Code Reviews
●
    What do you mean by “code”?
●
    Open Source Alternatives to Crucible



       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Why a Code Review Tool?
●   We have all kinds of tools for this (static analysis)
       ●   Lots that can't be tested (clean code)
       ●   Doesn't mentor / increase domain knowledge
       ●   Doesn't find opportunities for reuse
●   Formal Reviews
       ●   Printed source / shared machine
       ●   Co-located / transient discussion
       ●   Slow
●   Pair Programming
       ●   Co-located / Transient Discussion
       ●   1 person with 1 person
       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Introduction to FishEye
●   Web-based view of your VCS (++)
●   Atlassian product...not open source
●   FishEye makes Crucible easier to use, technically not required
       ●    Single Repository / ChangeSet model
●   FishEye offers...
       ●    Scans / monitors repositories
       ●    ChangeSets / Diffs / Lines of Code and entities/links
       ●    Activity Stream / Watches
       ●    Search, Charts, REST API
●   Integrations
       ●    FishEye ChangeSets tied to JIRA issue (source tab)
       ●    Code Review activity included in FishEye activity


           Copyright 2011 LearnThinkCode, Inc.
           This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Introduction to Crucible
●   Web-based Code Review Tool
●   Atlassian product...not open source
●   Roles in a review
        ●   (the) Author, (a) Reviewer, (the) Moderator
        ●   Reviewers and Moderator are optional
●   Workflows for reviews
        ●   Self-Review (w/o Reviewers or Moderator)
        ●   One-to-One / One-to-Many (w/o Moderator)
        ●   Moderated
                      ●   Author creates, Moderator closes
       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews
●   Create a Review
       ●   Add content to the Review
                  ●   What to review
                            ●   Patch file, ChangeSets, Files in repositories, Attachment, Snippet
                            ●   Defaults to your own ChangeSets in reverse order
                  ●   How much to review
                            ●   Whole file, Diffs, Diffs since last review, Diffs since a revision
       ●   Invite Reviewers
                  ●   Crucible offers suggestions
                  ●   Can include external folks (given setup)
●   Start the Review
       ●   Emails all Reviewers
       ●   Adds activity to the FishEye Activity Stream

       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews
●   Perform the Review
       ●   Dashboard to show your reviews
       ●   Add comments to
                  ●   Whole review
                  ●   A ChangeSet
                  ●   A particular revision
                  ●   Source (Lines of code)
       ●   Any one can reply / Threaded discussion
       ●   Can save Draft comments (must deal with at close)
       ●   Top-level comments can be flagged as defects
                  ●   Defects get suggested action / categorization
       ●   Tracks progress – based on # of items / time
                  ●   Can mark items as done

       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Code Reviews
●   Complete the Review (Reviewers)
       ●   Warnings about unread items
       ●   Draft comments – publish or discard
       ●   Summary notes
       ●   Emails / Activity
       ●   Can still go back in until Review is closed
●   Summarize/Close the Review
       ●   This is either Author or Moderator
       ●   Summary notes
       ●   Emails / Activity
       ●   Can still go back in until Review is closed
       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Snippets and Reports
●
    Snippets
         ●
             Simple “paste-bin” functionality
         ●
             Any one can comment, reply, raise defect
         ●
             All participants notified
         ●
             Appears in Activity stream
         ●
             Does not need to be code – Ideas? Designs?
●
    Reports
         ●
             Review Blockers Report
         ●
             Review Coverage Report
      Copyright 2011 LearnThinkCode, Inc.
      This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Integration with JIRA
●   From JIRA
       ●   Can link/create a review from JIRA
       ●   Automatically picks up ChangeSets (FishEye)
       ●   Configures review dates based on JIRA/GH
       ●   Issue is not resolved until review is done
●   From Crucible
       ●   Comments flagged as defects become subtasks of
            parent issue
       ●   Can manage (resolve) the subtask
       ●   Report – JIRA Blockers
●   Crucible also integrates with other APM
       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Effective Code Reviews
●   From Brendan Humphreys
       ●   Team Lead for FishEye and Crucible
       ●   #1 – Ego-Free Reviews
                   ●   Its about the code, not the people
       ●   #2 – Don't be a Pedant
                   ●   Use tools for style, common errors
       ●   #3 – Find Problems / Questions / Scenarios
                   ●   Don't find solutions
       ●   #4 – Embrace Feedback
                   ●   Everything is a contribution
●   Limit number of Reviewers
●   Encouraging feedback means faster reviews
       Copyright 2011 LearnThinkCode, Inc.
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
What do you mean by “code”?
●   If you are doing ATDD/BDD
        ●   Imagine comments/review of stories!
        ●   With actual customers!!
        ●   That might be remote even?!
●   If you are doing system cm (Chef/CFEngine)
        ●   Imagine comments/review of files!
        ●   Before you push it out to run!!
        ●   Or maybe test it even?!
●   Having code review tools in place makes this
    easier for these new teams/practices
      Copyright 2011 LearnThinkCode, Inc.
      This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Alternatives to Crucible
●   Mondrian/Rietveld/Gerrit/Malvich
       ●   Forks from one another for VCS support
       ●   Patch reviews only(?) - Google
       ●   Mondrian (Perforce) – used by Google
       ●   Rietveld (svn, hg?, git?) – FOSS / runs on GAE
       ●   Gerrit (git) – fork from Rietveld
       ●   Malvich (TFS) – fork from Rietveld
●   ReviewBoard – django-based
●   CodeStriker – perl-based
●   Jupiter – more code comprehension(?)
      Copyright 2011 LearnThinkCode, Inc.
      This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Q/A – Thank You!




   Copyright 2011 LearnThinkCode, Inc.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

More Related Content

What's hot

Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
Perforce
 
Robot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh MRobot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh M
Agile Testing Alliance
 
Getting Started with Selenium
Getting Started with SeleniumGetting Started with Selenium
Getting Started with Selenium
Dave Haeffner
 
How To Use Selenium Successfully
How To Use Selenium SuccessfullyHow To Use Selenium Successfully
How To Use Selenium Successfully
Dave Haeffner
 
Robot framework - Lord of the Rings
Robot framework - Lord of the RingsRobot framework - Lord of the Rings
Robot framework - Lord of the Rings
Asheesh Mehdiratta
 
How does Java 8 exert hidden power on Test Automation?
How does Java 8 exert hidden power on Test Automation?How does Java 8 exert hidden power on Test Automation?
How does Java 8 exert hidden power on Test Automation?
Sergey Korol
 
End-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at RedisEnd-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at Redis
Filipe Oliveira
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
Danny Preussler
 
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility DefectsThree Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Sean Kelly
 
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
Applitools
 
Jared Richardson - Agile Testing Strategies
Jared Richardson -  Agile Testing StrategiesJared Richardson -  Agile Testing Strategies
Jared Richardson - Agile Testing Strategies
SFA
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software Craftsmanship
Theo Jungeblut
 
Porque Odeio Branches
Porque Odeio BranchesPorque Odeio Branches
Porque Odeio Branches
Rafael Petry
 
Single Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance MeetupSingle Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance Meetup
Eyal Golan
 
Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS code
Anastasia Kazakova
 
Effective Code Review (Or How To Alienate Your Coworkers)
Effective Code Review (Or How To Alienate Your Coworkers)Effective Code Review (Or How To Alienate Your Coworkers)
Effective Code Review (Or How To Alienate Your Coworkers)
Perforce
 
How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# Programmer
LearnItFirst.com
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
Geneva, Switzerland
 
Automated testing
Automated testingAutomated testing
Automated testing
Aiste Stikliute
 
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupSelenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Dave Haeffner
 

What's hot (20)

Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
 
Robot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh MRobot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh M
 
Getting Started with Selenium
Getting Started with SeleniumGetting Started with Selenium
Getting Started with Selenium
 
How To Use Selenium Successfully
How To Use Selenium SuccessfullyHow To Use Selenium Successfully
How To Use Selenium Successfully
 
Robot framework - Lord of the Rings
Robot framework - Lord of the RingsRobot framework - Lord of the Rings
Robot framework - Lord of the Rings
 
How does Java 8 exert hidden power on Test Automation?
How does Java 8 exert hidden power on Test Automation?How does Java 8 exert hidden power on Test Automation?
How does Java 8 exert hidden power on Test Automation?
 
End-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at RedisEnd-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at Redis
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility DefectsThree Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
 
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
 
Jared Richardson - Agile Testing Strategies
Jared Richardson -  Agile Testing StrategiesJared Richardson -  Agile Testing Strategies
Jared Richardson - Agile Testing Strategies
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software Craftsmanship
 
Porque Odeio Branches
Porque Odeio BranchesPorque Odeio Branches
Porque Odeio Branches
 
Single Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance MeetupSingle Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance Meetup
 
Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS code
 
Effective Code Review (Or How To Alienate Your Coworkers)
Effective Code Review (Or How To Alienate Your Coworkers)Effective Code Review (Or How To Alienate Your Coworkers)
Effective Code Review (Or How To Alienate Your Coworkers)
 
How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# Programmer
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupSelenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
 

Viewers also liked

FishEye and Crucible Presentation
FishEye and Crucible PresentationFishEye and Crucible Presentation
FishEye and Crucible Presentation
Ellen Feaheny
 
Crucibles slide show final rev.1
Crucibles slide show final rev.1Crucibles slide show final rev.1
Crucibles slide show final rev.1
Calvin Hill
 
Pull Requests = Code Review
Pull Requests = Code ReviewPull Requests = Code Review
Pull Requests = Code Review
Atlassian
 
Code Review: An apple a day
Code Review: An apple a dayCode Review: An apple a day
Code Review: An apple a day
Kathryn Rotondo
 
Best of tata crucible handa
Best of tata crucible   handaBest of tata crucible   handa
Best of tata crucible handa
jain_rohit
 
Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
Paul Gower
 
Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review Process
Dr. Syed Hassan Amin
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucuİş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
Dr. Serhat TATLI
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
John Lynch
 
A Habit of Innovation
A Habit of InnovationA Habit of Innovation
A Habit of Innovation
Atlassian
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
Tim Pettersen
 

Viewers also liked (12)

FishEye and Crucible Presentation
FishEye and Crucible PresentationFishEye and Crucible Presentation
FishEye and Crucible Presentation
 
Crucibles slide show final rev.1
Crucibles slide show final rev.1Crucibles slide show final rev.1
Crucibles slide show final rev.1
 
Pull Requests = Code Review
Pull Requests = Code ReviewPull Requests = Code Review
Pull Requests = Code Review
 
Code Review: An apple a day
Code Review: An apple a dayCode Review: An apple a day
Code Review: An apple a day
 
Best of tata crucible handa
Best of tata crucible   handaBest of tata crucible   handa
Best of tata crucible handa
 
Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
 
Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review Process
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucuİş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
İş Hayatında Fark Yaratacak ve Sizi Başarıya Taşıyacak 10 İpucu
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
A Habit of Innovation
A Habit of InnovationA Habit of Innovation
A Habit of Innovation
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
 

Similar to Crucible

Agile Days Twin Cities 2011
Agile Days Twin Cities 2011Agile Days Twin Cities 2011
Agile Days Twin Cities 2011
Brian Repko
 
Open Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroOpen Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up Intro
Skills Matter
 
Importance of the contribution for an open source
Importance of the contribution for an open sourceImportance of the contribution for an open source
Importance of the contribution for an open source
Illia Antypenko
 
Overview of Gitlab usage
Overview of Gitlab usageOverview of Gitlab usage
Overview of Gitlab usage
OluDouglas
 
What's a Pull Request (Contributing to Open Source) - Brad Wood
What's a Pull Request (Contributing to Open Source) - Brad WoodWhat's a Pull Request (Contributing to Open Source) - Brad Wood
What's a Pull Request (Contributing to Open Source) - Brad Wood
Ortus Solutions, Corp
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov
 
Git & Code review
Git & Code reviewGit & Code review
Git & Code review
Cenk Gültekin
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
Paris Apostolopoulos
 
Code Review
Code ReviewCode Review
Code Review
Lukas Rypl
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
Matthew Reynolds
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Per Henrik Lausten
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
Product development and tools
Product development and toolsProduct development and tools
Product development and tools
roelofr
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
All Things Open
 
Code review and automated testing for Puppet code
Code review and automated testing for Puppet codeCode review and automated testing for Puppet code
Code review and automated testing for Puppet code
wzzrd
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
Anton Serdyuk
 
O'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source DocumentationO'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source Documentation
LavaCon
 
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
Andrew Yatsenko
 
Let's talk FOSS!
Let's talk FOSS!Let's talk FOSS!
Let's talk FOSS!
AditiSaxena72
 

Similar to Crucible (20)

Agile Days Twin Cities 2011
Agile Days Twin Cities 2011Agile Days Twin Cities 2011
Agile Days Twin Cities 2011
 
Open Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroOpen Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up Intro
 
Importance of the contribution for an open source
Importance of the contribution for an open sourceImportance of the contribution for an open source
Importance of the contribution for an open source
 
Overview of Gitlab usage
Overview of Gitlab usageOverview of Gitlab usage
Overview of Gitlab usage
 
What's a Pull Request (Contributing to Open Source) - Brad Wood
What's a Pull Request (Contributing to Open Source) - Brad WoodWhat's a Pull Request (Contributing to Open Source) - Brad Wood
What's a Pull Request (Contributing to Open Source) - Brad Wood
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Git & Code review
Git & Code reviewGit & Code review
Git & Code review
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Code Review
Code ReviewCode Review
Code Review
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Product development and tools
Product development and toolsProduct development and tools
Product development and tools
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
 
Code review and automated testing for Puppet code
Code review and automated testing for Puppet codeCode review and automated testing for Puppet code
Code review and automated testing for Puppet code
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
 
O'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source DocumentationO'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source Documentation
 
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
Code Quality Control in a PHP project. GeekTalks, Cherkassy 2020
 
Let's talk FOSS!
Let's talk FOSS!Let's talk FOSS!
Let's talk FOSS!
 

Recently uploaded

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 

Recently uploaded (20)

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 

Crucible

  • 1. Crucible Code Freeze 2012 Jan 12, 2012 Brian Repko http://www.learnthinkcode.com Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 2. Agenda ● Why a Code Review Tool? ● Introduction to FishEye ● Introduction to Crucible ● What it is / How it works (screenshots) ● Integration with JIRA ● Effective Code Reviews ● What do you mean by “code”? ● Open Source Alternatives to Crucible Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 3. Why a Code Review Tool? ● We have all kinds of tools for this (static analysis) ● Lots that can't be tested (clean code) ● Doesn't mentor / increase domain knowledge ● Doesn't find opportunities for reuse ● Formal Reviews ● Printed source / shared machine ● Co-located / transient discussion ● Slow ● Pair Programming ● Co-located / Transient Discussion ● 1 person with 1 person Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 4. Introduction to FishEye ● Web-based view of your VCS (++) ● Atlassian product...not open source ● FishEye makes Crucible easier to use, technically not required ● Single Repository / ChangeSet model ● FishEye offers... ● Scans / monitors repositories ● ChangeSets / Diffs / Lines of Code and entities/links ● Activity Stream / Watches ● Search, Charts, REST API ● Integrations ● FishEye ChangeSets tied to JIRA issue (source tab) ● Code Review activity included in FishEye activity Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 5. Introduction to Crucible ● Web-based Code Review Tool ● Atlassian product...not open source ● Roles in a review ● (the) Author, (a) Reviewer, (the) Moderator ● Reviewers and Moderator are optional ● Workflows for reviews ● Self-Review (w/o Reviewers or Moderator) ● One-to-One / One-to-Many (w/o Moderator) ● Moderated ● Author creates, Moderator closes Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 6. Code Reviews ● Create a Review ● Add content to the Review ● What to review ● Patch file, ChangeSets, Files in repositories, Attachment, Snippet ● Defaults to your own ChangeSets in reverse order ● How much to review ● Whole file, Diffs, Diffs since last review, Diffs since a revision ● Invite Reviewers ● Crucible offers suggestions ● Can include external folks (given setup) ● Start the Review ● Emails all Reviewers ● Adds activity to the FishEye Activity Stream Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 7. Code Reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 8. Code Reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 9. Code Reviews ● Perform the Review ● Dashboard to show your reviews ● Add comments to ● Whole review ● A ChangeSet ● A particular revision ● Source (Lines of code) ● Any one can reply / Threaded discussion ● Can save Draft comments (must deal with at close) ● Top-level comments can be flagged as defects ● Defects get suggested action / categorization ● Tracks progress – based on # of items / time ● Can mark items as done Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 10. Code Reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 11. Code Reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 12. Code Reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 13. Code Reviews ● Complete the Review (Reviewers) ● Warnings about unread items ● Draft comments – publish or discard ● Summary notes ● Emails / Activity ● Can still go back in until Review is closed ● Summarize/Close the Review ● This is either Author or Moderator ● Summary notes ● Emails / Activity ● Can still go back in until Review is closed Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 14. Snippets and Reports ● Snippets ● Simple “paste-bin” functionality ● Any one can comment, reply, raise defect ● All participants notified ● Appears in Activity stream ● Does not need to be code – Ideas? Designs? ● Reports ● Review Blockers Report ● Review Coverage Report Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 15. Integration with JIRA ● From JIRA ● Can link/create a review from JIRA ● Automatically picks up ChangeSets (FishEye) ● Configures review dates based on JIRA/GH ● Issue is not resolved until review is done ● From Crucible ● Comments flagged as defects become subtasks of parent issue ● Can manage (resolve) the subtask ● Report – JIRA Blockers ● Crucible also integrates with other APM Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 16. Effective Code Reviews ● From Brendan Humphreys ● Team Lead for FishEye and Crucible ● #1 – Ego-Free Reviews ● Its about the code, not the people ● #2 – Don't be a Pedant ● Use tools for style, common errors ● #3 – Find Problems / Questions / Scenarios ● Don't find solutions ● #4 – Embrace Feedback ● Everything is a contribution ● Limit number of Reviewers ● Encouraging feedback means faster reviews Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 17. What do you mean by “code”? ● If you are doing ATDD/BDD ● Imagine comments/review of stories! ● With actual customers!! ● That might be remote even?! ● If you are doing system cm (Chef/CFEngine) ● Imagine comments/review of files! ● Before you push it out to run!! ● Or maybe test it even?! ● Having code review tools in place makes this easier for these new teams/practices Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 18. Alternatives to Crucible ● Mondrian/Rietveld/Gerrit/Malvich ● Forks from one another for VCS support ● Patch reviews only(?) - Google ● Mondrian (Perforce) – used by Google ● Rietveld (svn, hg?, git?) – FOSS / runs on GAE ● Gerrit (git) – fork from Rietveld ● Malvich (TFS) – fork from Rietveld ● ReviewBoard – django-based ● CodeStriker – perl-based ● Jupiter – more code comprehension(?) Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
  • 19. Q/A – Thank You! Copyright 2011 LearnThinkCode, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License