[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)