[HN Gopher] Show HN: An interactive visual history of Git develo...
       ___________________________________________________________________
        
       Show HN: An interactive visual history of Git development
        
       Author : jwpalmer6
       Score  : 93 points
       Date   : 2021-06-30 15:24 UTC (7 hours ago)
        
 (HTM) web link (git-history.jpalmer.dev)
 (TXT) w3m dump (git-history.jpalmer.dev)
        
       | concernedctzn wrote:
       | Anyone have any details on the 'Most line changes in a single
       | month' event last October? Some sort of mass refactoring? Pretty
       | cool way to display this info, thank you.
        
         | jwpalmer6 wrote:
         | Thanks!
         | 
         | Those milestone callouts are based on aggregate statistics for
         | that month, so that's a combination of a number of changes.
         | 
         | Most of the large changes that you see in the latter years of
         | the project are the result of translation efforts. For example,
         | this is from October:
         | https://github.com/git/git/commit/c8774d0670b62447ae344d89a3...
        
       | jheriko wrote:
       | was totally expecting a gif of linus shitting on the community
       | whilst academia open their mouths wide expectantly...
        
       | jwpalmer6 wrote:
       | OP here again. I forgot to mention that, because of my background
       | in software development, I often create visualizations that are
       | based on data from the development process. I find it to be a
       | fascinating source of raw data that is underrepresented in the
       | broader visualization space.
       | 
       | I don't have any type of newsletter, but I do announce new
       | projects on twitter: https://twitter.com/jeffpalmer
        
       | tuxie_ wrote:
       | Wow, from the data viz perspective this is super impressive. The
       | amount of data you managed to display and how you organized it is
       | very impressive.
       | 
       | Maybe it's the amount of information, but I don't really know
       | what to make of all that data. What conclusions did you arrive
       | to? Where would you point someone like me who feels overwhelmed
       | with all the information on screen?
       | 
       | And finally, do you see yourself turning this into a more generic
       | visualization tool for git repos in general?
        
         | jwpalmer6 wrote:
         | Thanks!
         | 
         | I had two goals (at least) in mind while making this:
         | 
         | 1) Experiment with some visualization approaches that I hadn't
         | tried before. The annotated streamgraph, etc. 2) Tell the story
         | of the history of git as a way to demonstrate just how many
         | contributions go into complex open source software.
         | 
         | I definitely got what I wanted out of the experience for the
         | first goal - a large project like this (for me) taught me a lot
         | about how to approach and structure this type of effort, and
         | the limits of some of the technologies that I used.
         | 
         | Regarding the second goal, I had wanted to layer on more of a
         | narrative (using some type of scrollytelling or something
         | similar), but I ended up realizing that that was going to be
         | too difficult with the structure that I had created, so I ended
         | up adding the annotations and leaving some of the narrative
         | reconstruction up to the viewer. If I were to go back to this
         | work, that's what I would try to refine.
         | 
         | In terms of open source, I will do that but haven't yet because
         | things are a bit of a mess and I was honestly tired of looking
         | at it. I'll probably go back to that in a bit.
         | 
         | Applying this to another repository in its current state would
         | require a decent amount of manual data extraction/cleaning, but
         | it's possible. I'm not convinced the results would be that
         | interesting, however. I tried it myself as an experiment and
         | was surprised how linear/regular some of the other repos were.
        
       | omarhaneef wrote:
       | My main takeaway is that Junio Hamano is supernaturally
       | productive, and Git owes him a lot.
        
         | sdesol wrote:
         | Here's his contribution in the last 5 years
         | 
         | https://public-001.gitsense.com/insights/github/repos?p=comm...
         | 
         | Disclaimer: I'm the creator of the tool that is linked.
        
       | Gehinnn wrote:
       | I love such visualizations, nice work! Does this work for any git
       | repository?
       | 
       | Btw. for a visualization of all the git line endings settings,
       | you might find this tool helpful: https://hediet.github.io/git-
       | line-endings/ (just finished this tool this week)
        
       | jwpalmer6 wrote:
       | OP here.
       | 
       | I wrote up some additional details on how this was created on my
       | blog: https://jpalmer.dev/2021/05/interactive-git-history/.
       | 
       | If anyone has ideas about milestones that I could add to that
       | would make the timeline more interesting/informative, or any
       | other feedback, please let me know.
       | 
       | Happy to answer any questions here.
        
         | shortstuffsushi wrote:
         | This is really cool. I started a project in a similar vein a
         | few years back that I loosely called "What Did I Do" that would
         | allow you to track blame / "ownership" over time. I could write
         | out content to the command line, but once it got to the point
         | of starting to put visualizations into the browser (in fact, I
         | also went the D3 route), I started to lose drive. Finding a way
         | to make it visually appealing escaped me - but you've captured
         | it well here, I think. With the work you've done, can you also
         | represent other repositories, or is this heavily focused on the
         | Git repo specifically?
        
           | jwpalmer6 wrote:
           | Thanks!
           | 
           | Yes, it's pretty heavily focused on the git repository, but
           | it could be applied to other repositories with a little
           | difficulty, and with mixed results. The main issues would be:
           | 
           | 1. Getting the data. Currently a script needs to be run over
           | the contents of a git repository to gather all of the commit
           | data that's required. GitHub's API for commit data wouldn't
           | allow all of the necessary data to be retrieved in a timely
           | fashion, so that needs to be processed offline.
           | 
           | 2. Cleaning the data. In order to link to github accounts I
           | had to manually align commit author data to github profiles,
           | which I wanted to do for this project because seeing a
           | person's profile helped link the effort to the individual.
           | You could throw that away for a different repository, I
           | suppose, and just show the commit author information.
           | 
           | 3. Creating milestones. The git milestones are mostly
           | handcrafted (linking to release notes where they exist, etc),
           | so they'd need to be replaced with something that could be
           | generated from the repository or from some other process.
           | 
           | That said, I do think that it would be interesting to see
           | other repositories in this style. I tried a couple of others
           | just to see the basics, but the results were underwhelming
           | because the structure of the visualizations depends so
           | greatly on activities of the contributors.
           | 
           | Would you use it on other repositories if you could? Which
           | repositories would be interesting to you?
        
             | shortstuffsushi wrote:
             | 1. That's basically what I wrote :) although I collected
             | different info. It can be really time intensive for bigger
             | / older repositories...
             | 
             | 2. Just going off commit author / email (and then
             | corresponding gravatar) seems like enough. I get hand
             | tailoring for something like this, but for a more "general
             | purpose / throw a repo at me and I'll figure it out," I
             | think using whatever you get is ok
             | 
             | 3. Could try using tags for this, or I think specifically
             | from Github, milestones / releases are stored differently?
             | Don't know. I feel like this could also be an "include if
             | present or ignore," although I do appreciate how it breaks
             | up the history into a timeline
             | 
             | I don't have any specific projects in mind - for my own
             | playing, I just used my own personal / work repos that I
             | had available on my computer. I think the bigger, popular
             | projects like Angular, React, or even language projects
             | .NET Core or TypeScript could be interesting. I don't know
             | if they would make great graphs or not though, I imagine it
             | would be largely trial and error.
        
         | jamessb wrote:
         | After a user clicks on the streamgraph, the bottom-left
         | displays information about commits by the corresponding
         | contributor in the corresponding quarter; the contributor name
         | is already a link to their GitHub profiles, but the "changes"
         | count could also be made a link to the actual commits.
         | 
         | These links would have the format:
         | 
         | https://github.com/git/git/commits?author=gitster&since=2005...
         | 
         | or
         | 
         | https://github.com/git/git/commits?author=gitster@pobox.com&...
        
           | jwpalmer6 wrote:
           | Oh that's a good idea. Thanks!
        
         | uhoh-itsmaciek wrote:
         | Neat! Thanks for sharing.
         | 
         | >Note: This visualization was designed for screens larger than
         | 1024 x 1024 and for desktop-style interactions.
         | 
         | Why am I getting this warning on my 4K UHD display? Both
         | Firefox 89 and Chrome 91 on Ubuntu.
        
           | jwpalmer6 wrote:
           | Because I am terrible at making CSS do what I want,
           | unfortunately.
           | 
           | Seriously, though, I think I do some type of aspect ratio
           | check - maybe that's the culprit.
        
             | uhoh-itsmaciek wrote:
             | Ah, so not sure how you're checking, but it looks like your
             | thresholds might be just too aggressive: it looks like my
             | window.innerHeight < 1024 [1] and that's probably
             | triggering the warning.
             | 
             | [1]: https://developer.mozilla.org/en-
             | US/docs/Web/API/Window/inne...
        
       ___________________________________________________________________
       (page generated 2021-06-30 23:00 UTC)