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 3

--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 3 --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 💖 GRIMOIRE
MailingListStats aka MLStats
CVSAnalY - repos
Bicho - bugs
Sortinghat
More
Photo by Bitergia
http://grimoirelab.github.io/ 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

Similar to Visualize Your Code Repos and More with Gource: FOSDEM 2017

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
 
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
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupDawn Foster
 
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
 
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
 
Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Pebble Technology
 
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
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Asher Martin
 
Contributing to an os project
Contributing to an os projectContributing to an os project
Contributing to an os projectLasse Schuirmann
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the CommitKim Moir
 
Introduction to go
Introduction to goIntroduction to go
Introduction to goAnthony Chow
 
[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
 
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
 
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
 
EdTechJoker Spring 2020 - Lecture 2 - Git
EdTechJoker Spring 2020 - Lecture 2 - GitEdTechJoker Spring 2020 - Lecture 2 - Git
EdTechJoker Spring 2020 - Lecture 2 - GitBryan Ollendyke
 
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
 

Similar to Visualize Your Code Repos and More with Gource: FOSDEM 2017 (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...
 
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
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London Meetup
 
The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand The State of Go - Andrew Gerrand
The State of Go - Andrew Gerrand
 
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
 
G3 talk rld_2
G3 talk rld_2G3 talk rld_2
G3 talk rld_2
 
Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014Overlay & Libraries | Pebble Meetup Oct. 2014
Overlay & Libraries | Pebble Meetup Oct. 2014
 
Arfon-Smith-feb25
Arfon-Smith-feb25Arfon-Smith-feb25
Arfon-Smith-feb25
 
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
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Contributing to an os project
Contributing to an os projectContributing to an os project
Contributing to an os project
 
Infra@LINE_Chris
Infra@LINE_ChrisInfra@LINE_Chris
Infra@LINE_Chris
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the Commit
 
Introduction to go
Introduction to goIntroduction to go
Introduction to go
 
[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
 
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 ...
 
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
 
EdTechJoker Spring 2020 - Lecture 2 - Git
EdTechJoker Spring 2020 - Lecture 2 - GitEdTechJoker Spring 2020 - Lecture 2 - Git
EdTechJoker Spring 2020 - Lecture 2 - Git
 
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
 

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

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Visualize Your Code Repos and More with Gource: FOSDEM 2017

  • 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 3
 --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 3 --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 💖 GRIMOIRE MailingListStats aka MLStats CVSAnalY - repos Bicho - bugs Sortinghat More Photo by Bitergia http://grimoirelab.github.io/ 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