[HN Gopher] Gource: Software Version Control Visualization
       ___________________________________________________________________
        
       Gource: Software Version Control Visualization
        
       Author : vortex_ape
       Score  : 128 points
       Date   : 2024-12-31 10:37 UTC (3 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | phoronixrly wrote:
       | This pops up from time to time and each time I ask myself what is
       | a useful application for it? Is it just eye-candy?
        
         | shakna wrote:
         | I've used similar tools for tracing particular contributors,
         | when investigating if they've been acting malisciously. Makes
         | it easier to get a quick overview of their efforts, and how
         | painful it will be to review everything they've touched.
        
           | exe34 wrote:
           | what does it look like when they act maliciously? does the
           | avatar look over its shoulder and move around furtively like
           | a cartoon?
        
             | shakna wrote:
             | There's network alerts of outgoing VPN connections to
             | Russia, Tor usage, and usage of encrypted emails, none of
             | which fall within work duties, accompanied by anti-West
             | sentiment at the water cooler.
             | 
             | It could have been nothing. Which is why you investigate.
             | 
             | It wasn't nothing.
             | 
             | EDIT: You probably meant the code. Whoops. That's simple:
             | Removing guardrails. Removing a null check, because it's
             | "unnecessary" or "unreachable", etc. Opening memory holes,
             | and burying that in larger commits.
        
               | exe34 wrote:
               | ah that makes sense thanks!
        
         | onli wrote:
         | I'd say so, yes. But it's utterly cool to see yourself and the
         | people you know create the nodes of a project over the years.
         | In that way maybe there is some more to it, it gives
         | perspective.
        
         | rapnie wrote:
         | I had exactly the same impression. The eye-candy side is
         | highlighted, yet just a gimmick.
        
         | LauraMedia wrote:
         | I personally had to use it once to explain to someone higher up
         | why there hasn't been a user-facing feature change in a month.
         | 
         | He did not understand that things can change without him seeing
         | it in the frontend and I was in the middle of a crucial
         | rewrite.
        
           | PicassoCTs wrote:
           | THIS.Could be such a great tool to visualize work being done
           | for outsiders. Just a Screen in the lobby showing the commit
           | history up until today in an endless loop.
        
         | bjarneh wrote:
         | It is super useful. We started a project with some hired
         | consultants about a year ago. Did not engage much with that
         | project, but when I was recently asked to get back into the
         | loop and find out what these people had been up to, a quick
         | view of the 'gource' visualization was all that was needed in
         | order to know who was doing stuff, and how much they had been
         | working on it etc. At least I knew who was just attending the
         | meetings, and who was actually coding and so on :-)
        
           | lucianbr wrote:
           | Isn't this the same thing as measuring developer productivity
           | by number of lines of code or commits, pushes and such?
        
             | sbarre wrote:
             | More or less, but OP didn't say it was the _only_ measure
             | used.
             | 
             | Just like LOCs and commits, it's a starting point. A
             | general indicator of where you need to dig deeper or who to
             | prioritize in your review.
        
             | whateveracct wrote:
             | It is sadly. And unfortunately, it's still a commonplace
             | measure even at the "best" companies.
             | 
             | They say "oh it's not the only measure" ofc. Anything to
             | downplay it to ICs. But then you chat with your jaded
             | manager and you hear echoes of the insanity that goes on in
             | performance review calibration and you aren't so sure about
             | those qualifiers anymore..
        
         | IshKebab wrote:
         | Yeah this is from the class of "oooo pretty colours"
         | visualisations, not "now I've seen it visually I understand
         | better" visualisations.
        
         | whateveracct wrote:
         | It's fun, at least. At a startup I cofounded, we'd run it a few
         | times a year and it was cool to see the codebase grow from
         | nothingness. And to see various files appear that were due to
         | different key events in our company's history.
        
         | jimmySixDOF wrote:
         | I can't imagine a worse overall take on this in general because
         | it fails to compare the alternative which is you do nothing or
         | maybe the idea in some of these replies is just anything
         | outside of `tree -d` is superfluous to the task at hand waste
         | of time and bare metal GPU.
         | 
         | Appreciation for both the form and the function well blended in
         | an artful way should not be offhandedly dismissed. We make a
         | conscious choice when we build things to consider the users
         | delight to be our responsibility, or not, so taking the extra
         | step to make it beautiful as well as useful may sound
         | superfluous but it isn't. Not by a long shot.
         | 
         | Also Amelia Wattenberger at GitHub has a great vistualization
         | tool for those who think Gource is too much [1] while on the
         | other side of the spectrum Ren Yuan [2] has been knocking out
         | these amazing audiovisual art-meets-engineering pieces for all
         | the big repos.
         | 
         | [1] https://githubnext.com/projects/repo-visualization [2]
         | https://renyuan.io/commit/
        
         | dagmx wrote:
         | It can be motivational to show progress over a milestone or
         | larger time period.
        
         | cess11 wrote:
         | I research and make valuations of software, tools like this
         | help me quickly get a feel for the history and dominant trends
         | in how it was developed.
        
         | motohagiography wrote:
         | I use it for some security analysis.
        
       | bradhe wrote:
       | Hah, last time I used Gource was on a Rails project in 2012. Cool
       | to see it pop up from time to time.
        
         | nurettin wrote:
         | Exactly my thoughts. I used it once to showcase the development
         | phase of a rails project to C levels back in 2012 and they
         | loved it.
        
       | fHr wrote:
       | Gource is cool!
        
       | 4gotunameagain wrote:
       | Many years ago I used Gource to create a visualisation of the
       | development of my Bsc thesis project, which I promptly displayed
       | on the last slide of my presentation.
       | 
       | It was appreciated by exactly zero people.
       | 
       | No regrets, I loved it.
        
       | martinn wrote:
       | A while back while learning rust, I built a little tool that
       | would kind of give you an aggregate view of what gource shows you
       | but based on lines of code rather than commits. (i.e. see top
       | contributors by lines of code on any git repo).
       | 
       | https://github.com/martinn/repoblame if anyone's curious.
        
         | brabel wrote:
         | That's cool, would be nice if you got a GitHub Action to build
         | the binaries and publish them on Releases... or even publish to
         | crates.io :)
        
           | Aeolun wrote:
           | It looks like a PR would be appreciated xD
           | 
           | https://github.com/martinn/repoblame/issues/6
        
           | martinn wrote:
           | At this stage it's mostly been a toy learning project, but I
           | can definitely do that if there's interest.
        
       | k__ wrote:
       | I once joined a company where a Dev was in the process of
       | rewriting a big codebase.
       | 
       | I didn't think much of it and run Gource on it for fun.
       | 
       | Turns out, he did countless rewrites over the year.
       | 
       | Interesting to watch and explained why the CEO seemed to so
       | concerned about the dev, lol
        
       | ghjfrdghibt wrote:
       | I used this once, completely unrelated to version control, to
       | visualise the number of referrals my dept had received over time
       | (broken down but year and month) to visually show the growth of
       | referrals and why we needed more people to manage the influx.
       | 
       | Was it cool? Yes. Did it show the issue in an easily to
       | understand way anyone could understand? Yes. Did it change
       | anything? Hell no.
        
       | throwpoaster wrote:
       | Gource is very useful getting up-to-speed on a new project. It
       | gives you a quick visual history of the project and usually makes
       | it clear where the problem spots are: the places with the most
       | laser fire are the fire fights.
        
       | stpedgwdgfhgdd wrote:
       | Can't find install instructions for macos. No docker image.
       | 
       | Only way to try it out is build it?
        
         | netruk44 wrote:
         | I believe gource is on homebrew, if you have that available.
        
           | stpedgwdgfhgdd wrote:
           | Thanks
        
         | linkdd wrote:
         | > No docker image
         | 
         | This makes me sad that this became an expectation. And yet,
         | I've been distributing softwares via Docker for almost a decade
         | now, but CLI/GUI tools?
        
           | stpedgwdgfhgdd wrote:
           | I don't see the problem for quickly trying out code...
           | 
           | The code is in C afaict. If it would be Go or Java, I would
           | be fine to build it myself, but C.... I'm worried about
           | getting into a rabbit hole especially as GPU support is
           | required. Building with GPU on mac silicon can be pretty
           | complex.
           | 
           | Compare this to running a container with 1 - 2 lines.
           | 
           | Btw I should have inquired about a container image, don't
           | want to imply that Docker is the default.
        
             | cozzyd wrote:
             | it took less than a minute to figure out dependencies and
             | build on my workstation (EL9). If you don't have an OS with
             | a package manager, it might be harder though...
        
         | liveoneggs wrote:
         | there are a few community images on docker hub
        
         | junto wrote:
         | It's a bit tricky in Docker because you need to use a virtual
         | frame buffer I.e. xvfb using opengl to render without a GPU.
         | 
         | https://hub.docker.com/r/utensils/opengl/
         | 
         | Gource has two modes. One to generate the correctly formatted
         | input file and another to render it.
         | 
         | If you are doing fixed renders, then it's easy enough to run
         | each process in turn, given a git repo URL which you need to
         | pull locally.
         | 
         | You pipe your gource data source output to the gource renderer,
         | which is running with a virtual screen via xvfb, which needs
         | the same resolution viewport. You can then pipe that to ffmeg
         | and save the output to a volume.
         | 
         | You could pipe using the flv option to an RTMP server or stream
         | (see rtmp-hls based on nginx).
         | 
         | If you want to do realtime on Docker you'll need to pipe one to
         | the next and you will need to tweak ffmeg to provide a okish
         | steady output video stream using the realtime flag on gource.
         | You'll need to find a way to poll your git repo and append to
         | the gource input file though for full real time. Gource is
         | smart, but not smart enough to do that without some
         | workarounds. You might find supervisord useful to separate your
         | processes in your docker container.
        
       | pretty_colors wrote:
       | I once automated the uploading of >26k Gource videos to YouTube.
       | I sorted GitHub by star count, applied some filters (e.g., had to
       | have X commits, Y files), ffmpeg, YT API. That all happened on my
       | little 2015 MBP. Good memories. I'll clean up the repo and share
       | my hacky code sometime. I miss Ruby, what a fun language with
       | which to play.
       | 
       | IIRC, there's another YT channel that took up the torch. I'm
       | grateful they did. I know, they might seem a little spammy, and
       | it can be frustrating when you Google for a repo and only find a
       | mostly useless YT video of a Gource visualization. And yet,
       | random devs used to email me with grateful messages every week. I
       | felt like, in some microscopic way, I was doing good.
       | 
       | Yeah, I need to ponder and write on that. Hm. Well, this bubbly
       | isn't going to drink itself.
       | 
       | I'll edit this comment into shape later. I'm on my phone at
       | Hedwig's.
       | 
       | Love you to the random internet stranger who read this comment.
       | 
       | Love you to the person who posted this Gource link.
       | 
       | Love you to Andrew Caudwell, the creator of Gource. He seems like
       | a good fellow, that Andrew Caudwell. Yes, quite so.
        
         | pretty_colors wrote:
         | Quickly, before I :homer-simpson-fade-into-bushes:
         | 
         | I think there is much value in Gource visualizations. My remake
         | was rooted in a vocal minority who expressed a few negative
         | comments on my uploads saying they were useless. I suspect they
         | were just frustrated that they were looking for docs/tutorials
         | and only found my video, heh.
         | 
         | With the right options and extensions/augmentation, Gource is
         | incredibly useful. Especially when slowed down and when you add
         | custom tailored config for each repo. That takes time, but can
         | be automated as well. Ooo, that sounds so much fun!! Issue
         | titles, big refactor custom highlights / slow-downs. Have it
         | right next to JSCity (or equivalent for non-JS), gitstats,
         | and... What was that other tool... You know, the one that makes
         | watching network traffic fun? Oh! Codeswarm? No... It was...
         | I'll find it. It's like ping pong. Where is my AI side panel
         | when I actually need info without leaving HN?? Ok bye.
         | 
         | Next time I spam the planet with Gource videos, I vow to do it
         | more justice :cat-salute:
        
         | IshKebab wrote:
         | > I once automated the uploading of >26k Gource videos to
         | YouTube.
         | 
         | Wow, what a monumental waste of resources. I'm kind of
         | surprised you didn't get banned from Youtube for that.
        
         | Heliodex wrote:
         | That's some awesome work! I always used to stumble upon videos
         | of yours/similar, partly as it was kind of a way to discover
         | 'niche' but active repos, though mainly because Gource
         | visualisations are just plain fun to watch.
        
       | sylware wrote:
       | That would mean there are active networks of people working
       | against net neutrality? If true, I wonder who they are...
        
         | remram wrote:
         | Did you reply to the wrong thread maybe?
        
       | qrush wrote:
       | Well this rang a bell for me! Back in 2012 I used this to
       | generate a visualization of our work getting Basecamp 2 shipped.
       | Behold the laser pew pews of code:
       | https://player.vimeo.com/video/37822969
        
       | diggan wrote:
       | Anyone have any example videos generated by Gource they wanna
       | share?
       | 
       | I'll go first: Here is a Gource video of some months of
       | development on Typeform when I worked there:
       | https://www.youtube.com/watch?v=jTo9qy5mIWg
       | 
       | Uploaded ~10 years ago, and I'm pretty sure none of that code is
       | being deployed anymore, at least I hope so.
        
         | PenguinRevolver wrote:
         | I can't access it; the video is set to private.
        
           | diggan wrote:
           | My bad, should be unlisted and viewable now. Thanks for
           | letting me know.
        
             | GypsyKing716 wrote:
             | Nope.
        
               | diggan wrote:
               | Try hard refresh? In a private window, I see the title
               | says "Typeform development in a video" and beneath that
               | "Unlisted".
        
         | withinboredom wrote:
         | I create a gource every couple of years wherever I happen to be
         | working.
         | 
         | Here's my personal projects from 2023:
         | https://www.youtube.com/watch?v=BuzFtbM3qU0
        
           | diggan wrote:
           | Heh, you made exactly the same mistake as me initially, your
           | video is set to private :)
        
             | withinboredom wrote:
             | I had def saved it as unlisted before sharing the link. It
             | turns out I actually found a legit bug.
             | 
             | 1. Change to unlisted without selecting "for children"/"not
             | for children".
             | 
             | 2. Save, see an error about fixing it.
             | 
             | 3. Select appropriate options.
             | 
             | 4. Save and see "unlisted".
             | 
             | 5. Video is actually still "private".
        
         | chungy wrote:
         | A long time ago I ran it against the FreeBSD repository.
         | Haven't really thought about updating it, but it has been
         | nearly 4 years...
         | 
         | https://www.youtube.com/watch?v=Wi26HnElxgM
        
       | dagmx wrote:
       | I used this frequently, but it really requires your team to
       | enable squashed merges and have consistent feature sizes.
       | 
       | Otherwise a person who commits often (had someone committing per
       | line changed) will make it super noisy. And someone who merges in
       | a giant branch will just blow up the screen for a bit.
        
         | diggan wrote:
         | > commits often (had someone committing per line changed)
         | 
         | As long as they squash their history before it goes into the
         | branch everyone shares/branches off from, I couldn't care less
         | how they do their work.
         | 
         | But, pushing that aside, what could be the supposed benefit of
         | committing each line like that? They'd spend more time writing
         | commit messages than actual code, assuming the commit messages
         | actually had proper meaning in them,.
        
           | dagmx wrote:
           | Insecure coder or just trying to pump up their commit
           | activity.
        
       | whalesalad wrote:
       | drives me bonkers when a visualization tool has no
       | examples/screenshots in the readme
        
       ___________________________________________________________________
       (page generated 2025-01-03 23:00 UTC)