SlideShare a Scribd company logo
1 of 24
Download to read offline
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

More Related Content

What's hot

Filelist
FilelistFilelist
FilelistNeelBca
 
Sage 2 19_v5_busby
Sage 2 19_v5_busbySage 2 19_v5_busby
Sage 2 19_v5_busbyBen Busby
 
How to deliver a Python project
How to deliver a Python projectHow to deliver a Python project
How to deliver a Python projectmattjdavidson
 
CHEP 2018: A Python upgrade to the GooFit package for parallel fitting
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
 
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPyDong-hee Na
 
2019 IRIS-HEP AS workshop: Boost-histogram and hist
2019 IRIS-HEP AS workshop: Boost-histogram and hist2019 IRIS-HEP AS workshop: Boost-histogram and hist
2019 IRIS-HEP AS workshop: Boost-histogram and histHenry Schreiner
 

What's hot (9)

Filelist
FilelistFilelist
Filelist
 
Sage 2 19_v5_busby
Sage 2 19_v5_busbySage 2 19_v5_busby
Sage 2 19_v5_busby
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
Arfon-Smith-feb25
Arfon-Smith-feb25Arfon-Smith-feb25
Arfon-Smith-feb25
 
How to deliver a Python project
How to deliver a Python projectHow to deliver a Python project
How to deliver a Python project
 
CHEP 2018: A Python upgrade to the GooFit package for parallel fitting
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 fitting
 
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy
[GSoC 2017] gopy: Updating gopy to support Python3 and PyPy
 
Git, Jenkins & Chuck
Git, Jenkins & ChuckGit, Jenkins & Chuck
Git, Jenkins & Chuck
 
2019 IRIS-HEP AS workshop: Boost-histogram and hist
2019 IRIS-HEP AS workshop: Boost-histogram and hist2019 IRIS-HEP AS workshop: Boost-histogram and hist
2019 IRIS-HEP AS workshop: Boost-histogram and hist
 

Similar to Visualize Your Code Repos and More with Gource

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...
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...Dawn Foster
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupDawn Foster
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
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
 
The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand Hakka Labs
 
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
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
 
ACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdfACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdftuxinhui1
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectMarkus Neteler
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the CommitKim Moir
 
Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Pebble Technology
 
Getting started with go - Florin Patan - Codemotion Milan 2016
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 2016Codemotion
 
Building collaborative workflows for scientific data
Building collaborative workflows for scientific dataBuilding collaborative workflows for scientific data
Building collaborative workflows for scientific dataBruno Vieira
 
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 ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...NETWAYS
 
Introduction to go
Introduction to goIntroduction to go
Introduction to goAnthony Chow
 
Write microservice in golang
Write microservice in golangWrite microservice in golang
Write microservice in golangBo-Yi Wu
 
maksym vlasov - culture of git as roots of your ci
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 ciDariia Seimova
 
Contributing to an os project
Contributing to an os projectContributing to an os project
Contributing to an os projectLasse Schuirmann
 

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

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...
Network Analysis: People and Open Source Communities - LinuxCon Seattle and D...
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London Meetup
 
G3 talk rld_2
G3 talk rld_2G3 talk rld_2
G3 talk rld_2
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
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
 
The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand
 
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
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
 
ACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdfACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdf
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS project
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the Commit
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014
 
Infra@LINE_Chris
Infra@LINE_ChrisInfra@LINE_Chris
Infra@LINE_Chris
 
Getting started with go - Florin Patan - Codemotion Milan 2016
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
 
Go at Openprovider
Go at OpenproviderGo at Openprovider
Go at Openprovider
 
Building collaborative workflows for scientific data
Building collaborative workflows for scientific dataBuilding collaborative workflows for scientific data
Building collaborative workflows for scientific data
 
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 ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
 
Introduction to go
Introduction to goIntroduction to go
Introduction to go
 
Write microservice in golang
Write microservice in golangWrite microservice in golang
Write microservice in golang
 
maksym vlasov - culture of git as roots of your ci
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
 
Contributing to an os project
Contributing to an os projectContributing to an os project
Contributing to an os project
 

More from Dawn Foster

CHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesDawn Foster
 
Be a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesDawn 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!
Overcoming Imposter Syndrome to Become a Conference Speaker!Dawn Foster
 
How to Be a Good Corporate Citizen in Open Source
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
 
Open Source Collaboration and Companies: Finding the Right Balance
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
 
Navigating Open Source Risk
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source RiskDawn Foster
 
Measuring Project Health at VMware
Measuring Project Health at VMwareMeasuring Project Health at VMware
Measuring Project Health at VMwareDawn Foster
 
Navigating Open Source Risk
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source RiskDawn Foster
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationDawn Foster
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationDawn Foster
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationDawn Foster
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationDawn 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?
Is this Open Source Project Healthy or Lifeless?Dawn Foster
 
Collaboration in Linux Kernel Mailing Lists
Collaboration in Linux Kernel Mailing Lists Collaboration in Linux Kernel Mailing Lists
Collaboration in Linux Kernel Mailing Lists Dawn Foster
 
Be a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesDawn Foster
 
Being a Good Corporate Citizen in Open Source
Being a Good Corporate Citizen in Open SourceBeing a Good Corporate Citizen in Open Source
Being a Good Corporate Citizen in Open SourceDawn Foster
 
Building Community for your Company’s OSS Projects
Building Community for your Company’s OSS ProjectsBuilding Community for your Company’s OSS Projects
Building Community for your Company’s OSS ProjectsDawn Foster
 
Building Community for your Company’s OSS Project
Building Community for your Company’s OSS ProjectBuilding Community for your Company’s OSS Project
Building Community for your Company’s OSS ProjectDawn Foster
 
How to be a terrible hiring manager
How to be a terrible hiring managerHow to be a terrible hiring manager
How to be a terrible hiring managerDawn Foster
 
A week in the Life of Kubernetes
A week in the Life of KubernetesA week in the Life of Kubernetes
A week in the Life of KubernetesDawn Foster
 

More from Dawn Foster (20)

CHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and Examples
 
Be a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in Kubernetes
 
Overcoming Imposter Syndrome to Become a Conference Speaker!
Overcoming Imposter Syndrome to Become a Conference Speaker!Overcoming Imposter Syndrome to Become a Conference Speaker!
Overcoming Imposter Syndrome to Become a Conference Speaker!
 
How to Be a Good Corporate Citizen in Open Source
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
 
Open Source Collaboration and Companies: Finding the Right Balance
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
 
Navigating Open Source Risk
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source Risk
 
Measuring Project Health at VMware
Measuring Project Health at VMwareMeasuring Project Health at VMware
Measuring Project Health at VMware
 
Navigating Open Source Risk
Navigating Open Source RiskNavigating Open Source Risk
Navigating Open Source Risk
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
 
Collaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company AffiliationCollaborative Leadership: Governance Beyond Company Affiliation
Collaborative Leadership: Governance Beyond Company Affiliation
 
Is this Open Source Project Healthy or Lifeless?
Is this Open Source Project Healthy or Lifeless?Is this Open Source Project Healthy or Lifeless?
Is this Open Source Project Healthy or Lifeless?
 
Collaboration in Linux Kernel Mailing Lists
Collaboration in Linux Kernel Mailing Lists Collaboration in Linux Kernel Mailing Lists
Collaboration in Linux Kernel Mailing Lists
 
Be a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in KubernetesBe a Good Corporate Citizen in Kubernetes
Be a Good Corporate Citizen in Kubernetes
 
Being a Good Corporate Citizen in Open Source
Being a Good Corporate Citizen in Open SourceBeing a Good Corporate Citizen in Open Source
Being a Good Corporate Citizen in Open Source
 
Building Community for your Company’s OSS Projects
Building Community for your Company’s OSS ProjectsBuilding Community for your Company’s OSS Projects
Building Community for your Company’s OSS Projects
 
Building Community for your Company’s OSS Project
Building Community for your Company’s OSS ProjectBuilding Community for your Company’s OSS Project
Building Community for your Company’s OSS Project
 
How to be a terrible hiring manager
How to be a terrible hiring managerHow to be a terrible hiring manager
How to be a terrible hiring manager
 
A week in the Life of Kubernetes
A week in the Life of KubernetesA week in the Life of Kubernetes
A week in the Life of Kubernetes
 

Recently uploaded

%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburgmasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 

Recently uploaded (20)

%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 

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