7 ms·
Git Branches as a Social Construct
- quickthrower2 3y agoGit itself is of course a social construct. It was invented to allow people to collaborate on code and have history and verify each others work. The compiler doesn't care.
- bluetomcat 3y agoIt's a collection of tools (commit, branch, merge, rebase) facilitating decentralised ad-hoc workflows. It's less of a VCS and more of a hacky diffing tool.
- crabbone 3y agoThis isn't how the term is used... Since recently (think something like the 60s), applying the term "social construct" became a practice, especially common in humanities because a lot of concepts previously used in that area turned out to be bogus / ill-defined. For example, in anthropology, there was a shift where ethnicity used to be defined in some way (let's not dwell on the details, they certainly were problematic), and then someone came and said "well... ethnicity is a social construct", by which they meant "you can call this ethnicity, but I may call that other thing ethnicity, who knows what ethnicity really is... but as long as a large enough group of people agrees to use the term consistently, we are good". And this approach to definitions keeps spreading. Some such claims become more contentious because they may run into religious orthodoxy or social conservatism that like to hold on to older (but usually not so great) definitions. Like, for example, some will claim that "gender is a social construct" meaning that beside biological gender, society can invent any number of genders it likes, as long as people agree to accept those and perceive them as "real". But, regardless of whether you use "social construct" ironically (as to make fun of humanities majors) or actually believe it's a good way to proceed with definitions... I don't think you have anything to gain from claim that Git is a social construct. This is really only useful if you were struggling to define what Git is, and then there'd be groups of people who had competing definitions.
- quickthrower2 3y agoTrue, I am just going along with the “Git Branches as a social construct” as a given.
- charcircuit 3y agogit isn't the entirety of version control. Branches existed before git and are a concept that exists independent from git. If what git calls branches is not very good at handling the general concept of branching that is an issue with git's model of it. People shouldn't redefine what branches are to be whatever git does because that assumes what git does is right.
- cxr 3y agoGit branches are about as real as the most significant bit in an IEEE 754 double's significand. > modern version control systems are a user interface to their underlying mathematics Widespread (mis)understanding of Git is a direct result of programmers who don't understand library and information science refusing to accept that they're in the domain of library and information science but trying to slog through anyway without the prereq; repo operations comprise an algebra of publishing. It gets really perverse in interdisciplinary settings when technical folks start trying to explain Git to people in the humanities who are better equipped to grok its fundamentals than the average programmer.
- Mountain_Skies 3y agoThat's an interesting POV. Are there papers or other research that have been published by professional librarians regarding git and similar repository systems in use by the software development community?
- cxr 3y agoSorry, I'm not steeped in that world (unlike some of the more presumptuous and clearly self-serving comments surrounding yours have evidently assumed), and I don't know of any; my background is a programmer with a formal education in CS. I wouldn't be surprised if the answer were, "There aren't any." cf Feynman: In this age of specialization men who thoroughly know one field are often incompetent to discuss another. The great problems of the relations between one and another aspect of human activity have for this reason been discussed less and less in public.
- RamblingCTO 3y agoThat's very snoby-sounding tbh. Why would the average humanities person be better equipped to understand an algebra about source code management? What a weird take. It's not about managing a library of any kind, it's about a tree of changes. And it's not (only) about publishing either.
- deleted 3y ago[deleted]
- makeitdouble 3y agoFeels comparable to how folders in file systems are there for the user to make sense of it, but technically they work in ways that easily break that mental model.
- mbork_pl 3y agoThat's interesting, in what ways do directories break the mental model?
- Izkata 3y agoFolder, not directory. Try nesting these inside each other: https://www.amazon.com/Pendaflex-Folders-Classic-Positions-65213/dp/B0722L14L3/ https://www.amazon.com/Pendaflex-Folders-Classic-Positions-6...
- pests 3y agoI mean, maybe everyone here is so used to the word, but try nesting these inside each other: https://www.amazon.com/Classic-Address-Phone-Directory-Refills/dp/B074F2NKKX https://www.amazon.com/Classic-Address-Phone-Directory-Refil...
- YurgenJurgensen 3y agoSince directories are just references that tell you where a resource is located and don't actually contain the resource, that's not very difficult.
- pests 3y agoWe don't usually put directories inside other directories though.
- makeitdouble 3y agoFor "normal" people they represent a unique and finite set of files under a specific hierarchy. The technical implementation allows us to put the same files in as many folder as we want, folders recursing on themselves, "smart folders" that don't have any stable set of files, remotely synched folders etc.
- robertlagrant 3y agoThis is a terrible use of the phrase "social construct". What things are vs what things are used for is not interesting by category, only in the specifics. Hammers are a social construct, because some people use them for nails, and some people use them to bash other people's heads in.
- viraptor 3y agoI don't think that's a good analogy. Hammer would be a social construct if some group of people used "hammer" as a technical term for the tool and another group used the word "hammer" specifically for tools used to hit someone. In your example everyone agrees about what a hammer is, they just use it for different purposes. That is not as interesting to analyse. The distinction between the uses is important, because you may end up talking to one of the groups and not realise you're using the same word for different things.
- robertlagrant 3y agoSorry to hammer the point home, but I'm not saying "words can't have different meanings". I'm saying it's not useful to rename "meanings" as "social constructs".
- viraptor 3y agoYou're missing a specific property where social constructs need to not exist without people agreeing they exist. It's not just about the multiple meanings - it's a social construct if it didn't exist before. "hammer" did exist. "hammer as a description of tools used to hurt people" doesn't until people agree it does. The interesting parts are that enough consensus emerged due to (some factors) to create that meaning, how did that consensus emerge, if it's isolated to some groups, etc.
- pjc50 3y ago> What things are vs what things are used for is not interesting by category On the contrary, this is the entire field of UX design, and quite a large chunk of material anthropology. At some level everything we relate to is a social construct, once we use it to discuss things with other humans. A computational linguist friend of mine once wrote a long LJ post on "Ether is a social construct" after spending his PhD extracting chemical information from papers. His point was that ether, like various acids and other substances, behaves differently at different concentrations, in ways that are important for reactions but must be inferred from context and prior knowledge of chemistry. In other words, technical terms are more precise than everyday language, but are rarely fully precise because they cannot capture all the context in which they are used.
- globular-toast 3y agoGit supports having people work on the same project at the same time in an uncoordinated fashion. That's literally all branches are.
- DeathArrow 3y agoEverything is a social construct these days.
- pprotas 3y agoYes, humans use terminology to describe abstract concepts. This terminology often has nothing to do with the actual inner workings of this abstract concept. Everything is a social construct.
- jl6 3y agoMakes one wonder what the purpose of calling something a social construct is, if everything is one.
- YurgenJurgensen 3y agoGenerally, there isn't one.
- krapp 3y agoTo separate it from natural constructs. Specifically, to counter claims that certain social constructs are natural constructs.
- YurgenJurgensen 3y agoSocieties are naturally occurring, so all social constructs are natural constructs and all natural constructs are social constructs. None of these terms mean anything.
- pengstrom 3y agoYou're looking at it wrong. We can't change the laws of physics, but we can change society. That's the practical difference.
- YurgenJurgensen 3y agoThe 'laws of physics' are a model that change all the time through a process known as 'science'.
- 3y ago
- dudeinjapan 3y agoGit is not merely a social construct, it is a veritable smorgasbord of of patriarchal, colonial, and capitalist structures. Branches are instruments of colonial exploration and exploitation, which facilitate the integration new code territories into repository empires. Merges symbolize the enforcement of a hierarchical order, patriarchally assimilating code into dominant “master” norms. Commits, as quantifiable units of productivity, enable the capitalist class to separate the worker from the means of production. (…and don’t get me started on stashes. Private property is inherently theft.) The only way to upend the oppression of Git is through Subversion!
- avgcorrection 3y agoProgrammers seem to have little (or only moderate) problem with pointers and references in programming languages. With the occasional bug here or there with things like using `==` on `Integer` (Java). But bugs aside: they get what it is about. But when this is used in Git it becomes a sort of philosophical conundrum? Like huh, what is the ontology of a branch vs. the phenomenological nature of it. I don’t get it.
- bluetomcat 3y agoGit is a crude tool that exposes reference semantics to its user. In general, even programming-oriented tools like IDEs don't do that. Suppose you had to configure an IDE or a build system by creating chains of references and occasionally putting "fc8d43" to join disconnected sub-trees.
- westurner 3y ago`git push -f` and solipsistic shared reality; when you `push -f` everyone gets to vote on what chain of commit hashes is the real ${orgname}/${reponame}//${branch} There is no formal consensus mechanism beyond push permission in git itself; and so what would be regressive centralization of technically decentralized [git] in order to enforce directory-level permissions like e.g. CODEOWNERS is actually necessary for quality control. Eventually, Github and Gitlab integrated code review like ReviewBoard and Gerrit (instead of mailing list patchbombs and quilt); and code review approval from zero one or more authorized reviewers is now an optional necessary precondition for merging to a git branch as a social construct. DevSecOps says, Pull Requests (or Merge Requests) are merged only when (1) all of the automated tests pass; and (2) enough necessary reviewers have indicated approval. Git doesn't tell you when it's necessary to have full test coverage and manual infosec review in development cycles that produce releases, and neither do Pull Requests. https://westurner.github.io/hnlog/#comment-19552164 https://westurner.github.io/hnlog/#comment-19552164 ctrl-f hubflow It looks like datasift's gitflow/hubflow docs are 404'ing, but the original nvie blog post [1] has the Git branching workflow diagrams; which the wpsharks/hubflow fork [3] of datasift/gitflow fork [2] of gitflow [1]has a copy of in the README: [1] https://github.com/nvie/gitflow https://github.com/nvie/gitflow [2] https://github.com/datasift/gitflow https://github.com/datasift/gitflow [3] https://github.com/wpsharks/hubflow?tab=readme-ov-file https://github.com/wpsharks/hubflow?tab=readme-ov-file https://learngitbranching.js.org/ https://learngitbranching.js.org/ is still a great resource, and it could work on mobile devices. The math of VCS deltas and mutable and immutable content-addressed DAG nodes identified by 2^n bits describing repo/$((2*inf)) bits ; >> "ugit – Learn Git Internals by Building Git in Python" https://www.leshenko.net/p/ugit/ https://www.leshenko.net/p/ugit/ SLSA.dev is a social construct atop e.g. git, which is really a low-level purpose-built tool and Perl and now Python porcelain. jj (jujutsu) is a git-compatible VCS CLI: https://github.com/martinvonz/jj https://github.com/martinvonz/jj "Ask HN: Best Git workflow for small teams" (2016) https://news.ycombinator.com/item?id=12941997 https://news.ycombinator.com/item?id=12941997 How much social construct atop git is necessary for e.g. the CPython project? Python Devguide > Getting Started > [ Git bootcamp and cheat sheet , Lifecycle of a pull request ] https://devguide.python.org/getting-started/ https://devguide.python.org/getting-started/ Python Devguide > Development workflow > Development cycle > Branches: https://devguide.python.org/developer-workflow/development-cycle/#branches https://devguide.python.org/developer-workflow/development-c... : > [ In-development (main) branch, Maintenance branches, Security branches, End-of-life branches ] Git branches have lifecycles.
- ajnin 3y agoWell there is some tool that provides some functionalities, and surprise surprise the technical details of how they are implemented is not a mirror image of the set of functionalities ! I don't think that makes it a social construct but rather an abstraction made up by the creator of said tool to achieve their goals. Sometimes the abstraction gets a bit leaky as is the case with git, which makes things confusing and messy, but abstraction is in most things in computing.
- deleted 3y ago[deleted]
- videlov 3y agoThis article resonated with me be because I have also thought of branches as something ephemeral, with the ultimate goal of packaging and delivering a change to "prod". Perhaps this has to do with the fact that I have mostly worked on projects that have the concept of "prod". The "what is a branch" question has been very interesting for me for a while. One alternative way of looking at it is as just semantic groupings as opposed to separate universes. For almost a year I have been working on an idea[0] of having multiple branches applied in the working directory at the same time. Why? To make it easier for me to organise my changes in small PRs (eg. bugfix, featureX, unrelated refactors etc). If anyone reading this is also into the 'what is a branch' question, I would actually like to get some critique / feedback & opinions [0] https://docs.gitbutler.com/features/virtual-branches https://docs.gitbutler.com/features/virtual-branches
- OJFord 3y agoI don't understand why people get so confused and wound up about this - yes a branch is just a ref; yes something can be 'on a branch', by which we mean 'in that history'.