Visualize Your Code Repos and More with Gource

Dawn Foster
Dawn FosterDirector of Open Source Community Strategy
VISUALIZE YOUR CODE REPOS
AND MORE WITH GOURCE
Dawn M. Foster
@geekygirldawn	
  
dawn@dawnfoster.com	
  
fastwonderblog.com
Community	
  and	
  Open	
  
Source	
  Consultant	
  
The	
  Scale	
  Factory
PhD	
  Student	
  
University	
  of	
  Greenwich	
  
London,	
  UK
WHOAMI
Geek, traveler, reader
Community and open source consultant
20+ year tech career. Past 15 years
doing community & open source 

(Intel, Jive, Puppet Labs, etc.)
PhD student at University of Greenwich
researching Linux kernel Photos by Josh Bancroft, Don Park
AGENDA
•Basic Options and Repositories
•Speed / Dates
•Appearance
•Custom Log Format
•Mailing Lists
•Bugs
•Additional Options / Video
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
GETTING STARTED
Easy to run
$ gource /path/to/repo
So many options
$ gource -H
README in repo has 

links to useful info
github.com/geekygirldawn/linuxcon_2016
DATES AND SPEED
Dates
--start-date '2014-01-01'

--stop-date '2015-08-08'
Auto Skip
-a 1
Seconds Per Day
-s 0.5
github.com/geekygirldawn/linuxcon_2016
Photo by Ozzy Delaney
ADD USER AVATARS
--user-image-dir ~/gitrepos/linuxcon_2016/images/
Example: Dates and Speed / Add User Avatars
gource --start-date '2014-01-01' --stop-date '2015-08-08' -a 1 -s .05 

--user-image-dir ~/gitrepos/linuxcon_2016/images/ ~/gitrepos/MailingListStats/
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
MAKE IT LOOK GREAT
--date-format "%A, %d %B %Y"
--title "MailingListStats"
--font-size 22 

--font-colour FF9900
--logo images/bitergia-logo.png
--logo images/bitergia-banner.png
github.com/geekygirldawn/linuxcon_2016
EXAMPLES: MAKE IT LOOK GREAT
Using Logo and Title
gource -a 1 -s .3 --date-format "%A, %d %B %Y" --font-size 22 --font-colour FF9900
--title "MailingListStats aka mlstats" 

--logo ~/gitrepos/linuxcon_2016/images/bitergia-logo.png 

~/gitrepos/MailingListStats/
Using banner image logo to replace title
gource -a 1 -s .3 --date-format "%A, %d %B %Y" --font-size 22 --font-colour FF9900
--logo ~/gitrepos/linuxcon_2016/images/bitergia-banner.png 

~/gitrepos/MailingListStats/
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
CAPTIONS
Pipe separated file: unixtime|description
1373850061|Kris begins work on the website

1375750861|Dawn fixes some typos

1379120461|Richard makes everything look nice
Options
--caption-file linuxcon_2016/data/captions.log

--caption-duration 4

--caption-colour FF9900

--caption-size 20
github.com/geekygirldawn/linuxcon_2016
DISPLAY ADDITIONAL INFO
Key - filename extensions
--key
Example
gource -a 1 -s .3 --key --caption-file ~/gitrepos/linuxcon_2016/data/captions.log
--caption-duration 4 --caption-colour FF9900 --caption-size 20 

~/gitrepos/cfgmgmtcamp.github.io/
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
CUSTOM LOG FORMAT
Pipe Separated File
timestamp - A unix timestamp of when the update occured.

username - The name of the user who made the update.

type - Update type - (A)dded, (M)odified or (D)eleted.

file - Path of the file.

color - Color for the file in hex (FFFFFF) format (Optional)
Examples:
1275543595|andrew|A|src/main.cpp

1275543700|bob|M|src/main.cpp
github.com/acaudwell/Gource/wiki/Custom-Log-Format
I 💖 METRICS GRIMOIRE
MailingListStats aka MLStats
CVSAnalY - repos
Bicho - bugs
More
Photo by Bitergia
http://metricsgrimoire.github.io/
MAILING LIST EXAMPLE:
a) Extract data using mlstats / database queries
b) Generate Gource custom format (pipe sep file)
unixtime|user-email_sender|A|new

unixtime|user-email_sender|M|user-in_response_to
c) Run Gource
$ gource -i 10 --max-user-speed 100 -a 1 --highlight-users 

mailing_list_custom.log
OR) Run linuxcon.py from my linuxcon_2016 repo
github.com/geekygirldawn/linuxcon_2016
MAILING LIST EXAMPLE:
a) Extract data using mlstats / database queries
SELECT unix_timestamp(DATE_ADD(m.first_date, 

interval m.first_date_tz second)) 

AS unix_date, mp.email_address AS sender, 

(SELECT mp2.email_address FROM messages m2, messages_people mp2 

WHERE m2.is_response_of=m.is_response_of 

AND mp2.message_id=m2.is_response_of limit 1) AS receiver 

FROM messages_people mp, messages m 

WHERE YEAR(m.first_date)=2015 AND MONTH(m.first_date)=1 

AND mp.message_id=m.message_id;
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
BUG EXAMPLE:
a) Extract data using Bicho / database queries
b) Generate Gource custom format (pipe sep file)
unixtime|user-bug-submitter|A|module/bug-number|FFFFFF

unixtime|user-bug-modifier|M|module/bug-number|FFFFFF
c) Run Gource
$ gource -a 1 -s 1 --highlight-users ~/gitrepos/linuxcon_2016/data/bugs_custom.log
github.com/geekygirldawn/linuxcon_2016
Image from WebOps.com
ADDITIONAL OPTIONS
While Gource is Running
Space bar to pause

Ctrl + / - to speed up or slow down

Use arrow keys to move camera

Use timeline widget to move in time

K to show / hide the file type key
Additional Display Options
Loop or full screen
-loop

-f
github.com/geekygirldawn/linuxcon_2016
GENERATING VIDEO
Record to show later - great for large repos
Caveat: This took 5-10 min on MacBook Air for 31 sec video
My Example:
gource -f --logo images/bitergia_logo_sm.png 

--title "MailingListStats AKA mlstats"

--key --start-date '2014-01-01' --user-image-dir images -a 1 -s .05

--path ../MailingListStats -o - | ffmpeg -y -r 60 -f image2pipe 

-vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p 

-crf 1 -threads 0 -bf 0 gource.mp4
github.com/geekygirldawn/linuxcon_2016
PhD Student
Centre for Business Network Analysis
University of Greenwich
THANK YOU
Consultant
Open Source / Community Building
The Scale Factory
Dawn Foster
@geekygirldawn
dawn@fastwonder.com
fastwonderblog.com
1 of 24

Recommended

Using Gource to visualize Linux kernel data by
Using Gource to visualize Linux kernel dataUsing Gource to visualize Linux kernel data
Using Gource to visualize Linux kernel dataDawn Foster
898 views23 slides
Visualize Your Code Repos and More with Gource: FOSDEM 2017 by
Visualize Your Code Repos and More with Gource: FOSDEM 2017Visualize Your Code Repos and More with Gource: FOSDEM 2017
Visualize Your Code Repos and More with Gource: FOSDEM 2017Dawn Foster
425 views24 slides
Digital RSE: automated code quality checks - RSE group meeting by
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingHenry Schreiner
424 views53 slides
PEARC17: Modernizing GooFit: A Case Study by
PEARC17: Modernizing GooFit: A Case StudyPEARC17: Modernizing GooFit: A Case Study
PEARC17: Modernizing GooFit: A Case StudyHenry Schreiner
909 views21 slides
CMake best practices by
CMake best practicesCMake best practices
CMake best practicesHenry Schreiner
731 views51 slides
Ceph Korean Documentation by
Ceph Korean DocumentationCeph Korean Documentation
Ceph Korean DocumentationJunyoung Sung
135 views13 slides

More Related Content

What's hot

Filelist by
FilelistFilelist
FilelistNeelBca
144 views7 slides
Sage 2 19_v5_busby by
Sage 2 19_v5_busbySage 2 19_v5_busby
Sage 2 19_v5_busbyBen Busby
153 views117 slides
いつやるの?Git入門 by
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門Masakazu Matsushita
435.1K views204 slides
How to deliver a Python project by
How to deliver a Python projectHow to deliver a Python project
How to deliver a Python projectmattjdavidson
997 views20 slides
CHEP 2018: A Python upgrade to the GooFit package for parallel fitting by
CHEP 2018: A Python upgrade to the GooFit package for parallel fittingCHEP 2018: A Python upgrade to the GooFit package for parallel fitting
CHEP 2018: A Python upgrade to the GooFit package for parallel fittingHenry Schreiner
799 views21 slides

Similar to Visualize Your Code Repos and More with Gource

Network Analysis: People and Open Source Communities - LinuxCon Seattle and D... by
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...Dawn Foster
821 views17 slides
Network Analysis: Tech Evangelism London Meetup by
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupDawn Foster
1K views16 slides
G3 talk rld_2 by
G3 talk rld_2G3 talk rld_2
G3 talk rld_2Robert Davidson
248 views39 slides
Getting started with Go - Florin Patan - Codemotion Rome 2017 by
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Codemotion
815 views47 slides
The State of Go - Andrew Gerrand by
The State of Go - Andrew Gerrand The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand Hakka Labs
9.1K views38 slides
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials by
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentialsjazoon13
3.3K views40 slides

Similar to Visualize Your Code Repos and More with Gource(20)

Network Analysis: People and Open Source Communities - LinuxCon Seattle and D... by Dawn Foster
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...
Dawn Foster821 views
Network Analysis: Tech Evangelism London Meetup by Dawn Foster
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London Meetup
Dawn Foster1K views
Getting started with Go - Florin Patan - Codemotion Rome 2017 by Codemotion
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion815 views
The State of Go - Andrew Gerrand by Hakka Labs
The State of Go - Andrew Gerrand The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand
Hakka Labs9.1K views
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials by jazoon13
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
jazoon133.3K views
ACL-2022_tutorial_part_AB_V8 (1).pdf by tuxinhui1
ACL-2022_tutorial_part_AB_V8 (1).pdfACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdf
tuxinhui120 views
Community based software development: The GRASS GIS project by Markus Neteler
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS project
Markus Neteler4.7K views
Migrating to Git: Rethinking the Commit by Kim Moir
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the Commit
Kim Moir4.2K views
Overlay & Libraries | Pebble Meetup Oct. 2014 by Pebble Technology
Overlay & Libraries | Pebble Meetup Oct. 2014Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014
Pebble Technology358 views
Getting started with go - Florin Patan - Codemotion Milan 2016 by Codemotion
Getting started with go - Florin Patan - Codemotion Milan 2016Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016
Codemotion871 views
Building collaborative workflows for scientific data by Bruno Vieira
Building collaborative workflows for scientific dataBuilding collaborative workflows for scientific data
Building collaborative workflows for scientific data
Bruno Vieira637 views
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ... by NETWAYS
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
NETWAYS97 views
Write microservice in golang by Bo-Yi Wu
Write microservice in golangWrite microservice in golang
Write microservice in golang
Bo-Yi Wu14.8K views
maksym vlasov - culture of git as roots of your ci by Dariia Seimova
maksym vlasov - culture of git as roots of your cimaksym vlasov - culture of git as roots of your ci
maksym vlasov - culture of git as roots of your ci
Dariia Seimova100 views

More from Dawn Foster

CHAOSS Metrics Overview and Examples by
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesDawn Foster
8 views22 slides
Be a Good Corporate Citizen in Kubernetes by
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesDawn Foster
8 views17 slides
Overcoming Imposter Syndrome to Become a Conference Speaker! by
Overcoming Imposter Syndrome to Become a Conference Speaker!Overcoming Imposter Syndrome to Become a Conference Speaker!
Overcoming Imposter Syndrome to Become a Conference Speaker!Dawn Foster
12 views35 slides
How to Be a Good Corporate Citizen in Open Source by
How to Be a Good Corporate Citizen in Open SourceHow to Be a Good Corporate Citizen in Open Source
How to Be a Good Corporate Citizen in Open SourceDawn Foster
15 views25 slides
Open Source Collaboration and Companies: Finding the Right Balance by
Open Source Collaboration and Companies: Finding the Right BalanceOpen Source Collaboration and Companies: Finding the Right Balance
Open Source Collaboration and Companies: Finding the Right BalanceDawn Foster
46 views24 slides
Navigating Open Source Risk by
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source RiskDawn Foster
143 views25 slides

More from Dawn Foster(20)

CHAOSS Metrics Overview and Examples by Dawn Foster
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and Examples
Dawn Foster8 views
Be a Good Corporate Citizen in Kubernetes by Dawn Foster
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in Kubernetes
Dawn Foster8 views
Overcoming Imposter Syndrome to Become a Conference Speaker! by Dawn Foster
Overcoming Imposter Syndrome to Become a Conference Speaker!Overcoming Imposter Syndrome to Become a Conference Speaker!
Overcoming Imposter Syndrome to Become a Conference Speaker!
Dawn Foster12 views
How to Be a Good Corporate Citizen in Open Source by Dawn Foster
How to Be a Good Corporate Citizen in Open SourceHow to Be a Good Corporate Citizen in Open Source
How to Be a Good Corporate Citizen in Open Source
Dawn Foster15 views
Open Source Collaboration and Companies: Finding the Right Balance by Dawn Foster
Open Source Collaboration and Companies: Finding the Right BalanceOpen Source Collaboration and Companies: Finding the Right Balance
Open Source Collaboration and Companies: Finding the Right Balance
Dawn Foster46 views
Navigating Open Source Risk by Dawn Foster
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source Risk
Dawn Foster143 views
Measuring Project Health at VMware by Dawn Foster
Measuring Project Health at VMwareMeasuring Project Health at VMware
Measuring Project Health at VMware
Dawn Foster118 views
Navigating Open Source Risk by Dawn Foster
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source Risk
Dawn Foster112 views
Collaborative Leadership: Governance Beyond Company Affiliation by Dawn Foster
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
Dawn Foster204 views
Collaborative Leadership: Governance Beyond Company Affiliation by Dawn Foster
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
Dawn Foster228 views
Collaborative Leadership: Governance Beyond Company Affiliation by Dawn Foster
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
Dawn Foster148 views
Collaborative Leadership: Governance Beyond Company Affiliation by Dawn Foster
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
Dawn Foster180 views
Is this Open Source Project Healthy or Lifeless? by Dawn Foster
Is this Open Source Project Healthy or Lifeless?Is this Open Source Project Healthy or Lifeless?
Is this Open Source Project Healthy or Lifeless?
Dawn Foster198 views
Collaboration in Linux Kernel Mailing Lists by Dawn Foster
Collaboration in Linux Kernel Mailing Lists Collaboration in Linux Kernel Mailing Lists
Collaboration in Linux Kernel Mailing Lists
Dawn Foster178 views
Be a Good Corporate Citizen in Kubernetes by Dawn Foster
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in Kubernetes
Dawn Foster215 views
Being a Good Corporate Citizen in Open Source by Dawn Foster
Being a Good Corporate Citizen in Open SourceBeing a Good Corporate Citizen in Open Source
Being a Good Corporate Citizen in Open Source
Dawn Foster196 views
Building Community for your Company’s OSS Projects by Dawn Foster
Building Community for your Company’s OSS ProjectsBuilding Community for your Company’s OSS Projects
Building Community for your Company’s OSS Projects
Dawn Foster167 views
Building Community for your Company’s OSS Project by Dawn Foster
Building Community for your Company’s OSS ProjectBuilding Community for your Company’s OSS Project
Building Community for your Company’s OSS Project
Dawn Foster221 views
How to be a terrible hiring manager by Dawn Foster
How to be a terrible hiring managerHow to be a terrible hiring manager
How to be a terrible hiring manager
Dawn Foster509 views
A week in the Life of Kubernetes by Dawn Foster
A week in the Life of KubernetesA week in the Life of Kubernetes
A week in the Life of Kubernetes
Dawn Foster310 views

Recently uploaded

EV Charging App Case by
EV Charging App Case EV Charging App Case
EV Charging App Case iCoderz Solutions
9 views1 slide
Flask-Python.pptx by
Flask-Python.pptxFlask-Python.pptx
Flask-Python.pptxTriloki Gupta
7 views12 slides
Keep by
KeepKeep
KeepGeniusee
78 views10 slides
How Workforce Management Software Empowers SMEs | TraQSuite by
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteTraQSuite
5 views3 slides
Sprint 226 by
Sprint 226Sprint 226
Sprint 226ManageIQ
10 views18 slides
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsRa'Fat Al-Msie'deen
8 views49 slides

Recently uploaded(20)

How Workforce Management Software Empowers SMEs | TraQSuite by TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuite
TraQSuite5 views
Sprint 226 by ManageIQ
Sprint 226Sprint 226
Sprint 226
ManageIQ10 views
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm15 views
Bootstrapping vs Venture Capital.pptx by Zeljko Svedic
Bootstrapping vs Venture Capital.pptxBootstrapping vs Venture Capital.pptx
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic14 views
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski12 views
Myths and Facts About Hospice Care: Busting Common Misconceptions by Care Coordinations
Myths and Facts About Hospice Care: Busting Common MisconceptionsMyths and Facts About Hospice Care: Busting Common Misconceptions
Myths and Facts About Hospice Care: Busting Common Misconceptions
Navigating container technology for enhanced security by Niklas Saari by Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy14 views
JioEngage_Presentation.pptx by admin125455
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptx
admin1254556 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok15 views
FIMA 2023 Neo4j & FS - Entity Resolution.pptx by Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j17 views
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... by Marc Müller
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Marc Müller42 views

Visualize Your Code Repos and More with Gource

  • 1. VISUALIZE YOUR CODE REPOS AND MORE WITH GOURCE Dawn M. Foster @geekygirldawn   dawn@dawnfoster.com   fastwonderblog.com Community  and  Open   Source  Consultant   The  Scale  Factory PhD  Student   University  of  Greenwich   London,  UK
  • 2. WHOAMI Geek, traveler, reader Community and open source consultant 20+ year tech career. Past 15 years doing community & open source 
 (Intel, Jive, Puppet Labs, etc.) PhD student at University of Greenwich researching Linux kernel Photos by Josh Bancroft, Don Park
  • 3. AGENDA •Basic Options and Repositories •Speed / Dates •Appearance •Custom Log Format •Mailing Lists •Bugs •Additional Options / Video github.com/geekygirldawn/linuxcon_2016
  • 5. GETTING STARTED Easy to run $ gource /path/to/repo So many options $ gource -H README in repo has 
 links to useful info github.com/geekygirldawn/linuxcon_2016
  • 6. DATES AND SPEED Dates --start-date '2014-01-01'
 --stop-date '2015-08-08' Auto Skip -a 1 Seconds Per Day -s 0.5 github.com/geekygirldawn/linuxcon_2016 Photo by Ozzy Delaney
  • 7. ADD USER AVATARS --user-image-dir ~/gitrepos/linuxcon_2016/images/ Example: Dates and Speed / Add User Avatars gource --start-date '2014-01-01' --stop-date '2015-08-08' -a 1 -s .05 
 --user-image-dir ~/gitrepos/linuxcon_2016/images/ ~/gitrepos/MailingListStats/ github.com/geekygirldawn/linuxcon_2016
  • 9. MAKE IT LOOK GREAT --date-format "%A, %d %B %Y" --title "MailingListStats" --font-size 22 
 --font-colour FF9900 --logo images/bitergia-logo.png --logo images/bitergia-banner.png github.com/geekygirldawn/linuxcon_2016
  • 10. EXAMPLES: MAKE IT LOOK GREAT Using Logo and Title gource -a 1 -s .3 --date-format "%A, %d %B %Y" --font-size 22 --font-colour FF9900 --title "MailingListStats aka mlstats" 
 --logo ~/gitrepos/linuxcon_2016/images/bitergia-logo.png 
 ~/gitrepos/MailingListStats/ Using banner image logo to replace title gource -a 1 -s .3 --date-format "%A, %d %B %Y" --font-size 22 --font-colour FF9900 --logo ~/gitrepos/linuxcon_2016/images/bitergia-banner.png 
 ~/gitrepos/MailingListStats/ github.com/geekygirldawn/linuxcon_2016
  • 12. CAPTIONS Pipe separated file: unixtime|description 1373850061|Kris begins work on the website
 1375750861|Dawn fixes some typos
 1379120461|Richard makes everything look nice Options --caption-file linuxcon_2016/data/captions.log
 --caption-duration 4
 --caption-colour FF9900
 --caption-size 20 github.com/geekygirldawn/linuxcon_2016
  • 13. DISPLAY ADDITIONAL INFO Key - filename extensions --key Example gource -a 1 -s .3 --key --caption-file ~/gitrepos/linuxcon_2016/data/captions.log --caption-duration 4 --caption-colour FF9900 --caption-size 20 
 ~/gitrepos/cfgmgmtcamp.github.io/ github.com/geekygirldawn/linuxcon_2016
  • 15. CUSTOM LOG FORMAT Pipe Separated File timestamp - A unix timestamp of when the update occured.
 username - The name of the user who made the update.
 type - Update type - (A)dded, (M)odified or (D)eleted.
 file - Path of the file.
 color - Color for the file in hex (FFFFFF) format (Optional) Examples: 1275543595|andrew|A|src/main.cpp
 1275543700|bob|M|src/main.cpp github.com/acaudwell/Gource/wiki/Custom-Log-Format
  • 16. I 💖 METRICS GRIMOIRE MailingListStats aka MLStats CVSAnalY - repos Bicho - bugs More Photo by Bitergia http://metricsgrimoire.github.io/
  • 17. MAILING LIST EXAMPLE: a) Extract data using mlstats / database queries b) Generate Gource custom format (pipe sep file) unixtime|user-email_sender|A|new
 unixtime|user-email_sender|M|user-in_response_to c) Run Gource $ gource -i 10 --max-user-speed 100 -a 1 --highlight-users 
 mailing_list_custom.log OR) Run linuxcon.py from my linuxcon_2016 repo github.com/geekygirldawn/linuxcon_2016
  • 18. MAILING LIST EXAMPLE: a) Extract data using mlstats / database queries SELECT unix_timestamp(DATE_ADD(m.first_date, 
 interval m.first_date_tz second)) 
 AS unix_date, mp.email_address AS sender, 
 (SELECT mp2.email_address FROM messages m2, messages_people mp2 
 WHERE m2.is_response_of=m.is_response_of 
 AND mp2.message_id=m2.is_response_of limit 1) AS receiver 
 FROM messages_people mp, messages m 
 WHERE YEAR(m.first_date)=2015 AND MONTH(m.first_date)=1 
 AND mp.message_id=m.message_id; github.com/geekygirldawn/linuxcon_2016
  • 20. BUG EXAMPLE: a) Extract data using Bicho / database queries b) Generate Gource custom format (pipe sep file) unixtime|user-bug-submitter|A|module/bug-number|FFFFFF
 unixtime|user-bug-modifier|M|module/bug-number|FFFFFF c) Run Gource $ gource -a 1 -s 1 --highlight-users ~/gitrepos/linuxcon_2016/data/bugs_custom.log github.com/geekygirldawn/linuxcon_2016
  • 22. ADDITIONAL OPTIONS While Gource is Running Space bar to pause
 Ctrl + / - to speed up or slow down
 Use arrow keys to move camera
 Use timeline widget to move in time
 K to show / hide the file type key Additional Display Options Loop or full screen -loop
 -f github.com/geekygirldawn/linuxcon_2016
  • 23. GENERATING VIDEO Record to show later - great for large repos Caveat: This took 5-10 min on MacBook Air for 31 sec video My Example: gource -f --logo images/bitergia_logo_sm.png 
 --title "MailingListStats AKA mlstats"
 --key --start-date '2014-01-01' --user-image-dir images -a 1 -s .05
 --path ../MailingListStats -o - | ffmpeg -y -r 60 -f image2pipe 
 -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p 
 -crf 1 -threads 0 -bf 0 gource.mp4 github.com/geekygirldawn/linuxcon_2016
  • 24. PhD Student Centre for Business Network Analysis University of Greenwich THANK YOU Consultant Open Source / Community Building The Scale Factory Dawn Foster @geekygirldawn dawn@fastwonder.com fastwonderblog.com