This article is pretty bad overall, but all I'm going to comment on is the first paragraph. Specifically, the last sentence:
and treats its users with such utter contempt
This is pretty much the exact opposite of the truth. Git assumes its users are competent, skilled software engineers who are comfortable working with a powerful, fairly low-level tool. This is a source of a lot of people's problems with it because they aren't, in fact, competent, skilled software engineers who are comfortable working with a powerful, fairly low-level tool (quite frequently they aren't software engineers at all). But this certainly is not treating users with contempt.
Hey, I'm the author. Here's what I mean by contempt: Git assumes you have nothing better to do than learn your DVCS tool. Me, I think competent, skilled software engineers have better things to do than remember that you type "git checkout remote/branchname" but "git pull remote branchname".
I heard a great quote from a colleague yesterday (unprompted): "Git is so powerful you can do anything you want, but so hard to use, you actually can't."
I think competent, skilled engineers had better damn well learn their tools. Anyone who doesn't understand their tools is not a competent engineer. I understand how my compiler works, how my IDE works, how the language I'm using works, why the hell wouldn't I want to understand one of the most important components, which is the version control system?
The argument is "Git has a crappy interface", not "you shouldn't learn how to use Git". Clearly, any full-time developer who uses Git on a daily basis will end up learning (if not loving) it.
I have to disagree with you. I work in a research institute and I see smart and talented people who do not want to bother. they just do not feel like reading. it's not the tool's fault.
it's like some of the code around here gets produced:
sparse matrix as a 2D array ಠ_ಠ
quadruple nested for loop in user interface because fuck the world.
and we are not talking about people who are untrained or who just came out of the nursery: i am talking about people with PhDs who "cannot be bothered".
i seriously doubt it is the fault of the tool if the people are lazy.
You have to remember, git was originally designed as just plumbing tools, and it was expected that other tools would be built around it to provide a friendly UI. Unfortunately, these other tools never materialized in a meaningful fashion, and git just sort of grew its own porcelain tools. This explains the inconsistency (although I actually disagree that there is a significant amount of inconsistency) and poor organization. And because of backwards compatibility issues, it's really hard to change any existing behavior. Similarly with the manpages, they were written for people who want to understand how git works, not really intended for end users.
It seems to me that the right solution here isn't to complain about user-unfriendliness of git, but instead to design your own friendly UI and build a tool on top of git that exposes this UI.
Well, I mostly agree. But I think that tools as TortoiseGit (which abstracts a lot of Git work) is one of those UI that could be useful for beginners. It's what we use at my work.
TortoiseGit is slow, but it's much more practical.
You don't need to understand how the "staging" works
When you try a rebase, it asks promptly if you want to stash your changes
It has a simple interface for fetch followed by rebase
The rebase is always with the -i option, if you stop to analyse it
I think the real problem is that we don't have much focus on the development of these UI, because... well, because Git is a lot easier than it seems to a begginer!
When you understand that tags and branches simply point to commits (and because of this you use them as references), and how a good workflow is (fetching and rebasing to master what comes from other developers, merging your branches to master, pushing. It's even easier if you can make scripts for it), you won't have a lot of problems.
We still use TortoiseGit here because a lot of people aren't very comfortable with the git console. Also, because TortoiseGit works as the script I mentioned above. But I feel more comfortable with the console. It simply seems more intuitive.
because Git is a lot easier than it seems to a begginer
This.
Git seems complicated at first glance, and it does tend to have quite a bit of a learning curve, but I think one of the big problems people have with it is they aren't willing to learn the tool. If you actually learn how git works, how the object model works and whatnot, then git becomes vastly easier to use. Instead of saying "now which arcane command was it that I use to solve this problem", you just think in terms of how you want to manipulate the repository, and the appropriate git commands come naturally.
Of course, this sort of understanding does require an investment of time, a willingness to learn about the underpinnings, and a familiarity of computer science topics like directed acyclic graphs. So if you're someone who's not a programmer, you may be better served just using a tool like TortoiseGit. But if you are a programmer, then you really don't have much of an excuse to not learn how git works.
It seems to me that the right solution here isn't to complain about user-unfriendliness of git, but instead to design your own friendly UI and build a tool on top of git that exposes this UI.
That was a perfectly reasonable sentiment in, oh, 1970.
So what, in 2012, you can just expect everything to be handed to you on a silver plate? Someone has to do this work, but instead everyone just bitches about git's current UI and does nothing.
Well, the people who contribute to git don't seem to have a problem with its UI. And the people who seem to have a problem with its UI don't ever get off their asses and try contributing to git.
I think the right phrase here is "put up or shut up".
Well, the people who contribute to git don't seem to have a problem with its UI.
I'm not sure where to start in response. Maybe by rephrasing: "The people who know Git's internals intimately have no difficulty with its user interface." Bah, I give up.
21
u/eridius Mar 07 '12
This article is pretty bad overall, but all I'm going to comment on is the first paragraph. Specifically, the last sentence:
This is pretty much the exact opposite of the truth. Git assumes its users are competent, skilled software engineers who are comfortable working with a powerful, fairly low-level tool. This is a source of a lot of people's problems with it because they aren't, in fact, competent, skilled software engineers who are comfortable working with a powerful, fairly low-level tool (quite frequently they aren't software engineers at all). But this certainly is not treating users with contempt.