In 1988 i was an eight years old boy in Moscow. That was the time of “Glasnost” – “Transparency”, the policy of unprecedented freedom of speech and openness in the Soviet Union. A lot of American films and songs suddenly appeared on television. One of them was Blondie’s “Union City Blue” (Flash):

I knew a little English and understood the word “union”, so i thought that it’s a song about the Soviet Union. “Americans must really love us, if this pretty woman sings such a beautiful melody about our country”, i thought.

A group of right-wing Zionists wanted to try to get Wikipedia to represent their opinions better, so they tried to organize a course about it. They didn’t exactly have an instructor, so a couple of prominent Hebrew Wikipedia editors volunteered to help them: To give them a lecture about Wikipedia and the way it assures political neutrality. I know both of them personally and i believe that they did their job honestly.

Apparently, this piece of news was so important, that it reached The Guardian (Wikipedia editing courses launched by Zionist groups). Richard Stallman mentioned it in his “Political Notes” blog, saying: “Israeli expansionists are planning courses on how to slip their views into Wikipedia without triggering resistance.”

It’s actually not completely incorrect to call them “expansionists”, although it reminds me too strongly of the Soviet press, which used the exact same term to describe Israel. But it’s quite ridiculous to say that anyone in his right mind can plan to slip his views into Wikipedia without triggering resistance. It’s 2010 outside, and even people with strong political opinions already know that Wikipedia is supposed to be neutral. It doesn’t necessarily succeed at it, but to slip in views without triggering resistance? That’s patent nonsense.

One of the expansionists was quoted in the Guardian: “We don’t want to change Wikipedia or turn it into a propaganda arm, we just want to show the other side”. What do you know, an expansionist Zionist land-grabbing settler said a sentence that makes sense!

But what’s most disappointing about this whole thing is that it is a complete non-issue. Because if it is a significant newsworthy issue, then so are the lectures about Wikipedia that i gave to the left-wing youth movement Hanoar Haoved Vehalomed, to the Israeli Marine Mammal Research and Assistance Center, to the Rehovot Perl Mongers group and to several groups of the Hebrew University students and staff. These were the same lectures: Free culture, spreading knowledge, editing history, citing sources, neutral point of view. We the Wikipedians who volunteer to lecture on the website we are so passionate about say the same things about Wikipedia to left-wing people, to right-wing people, to programmers, to students and to scientists.

But hey, i’m happy to have read that silly Guardian article, because it made me realize that Wikipedia won: It is perceived as a website that is difficult to trick. Well, it really is.

I didn’t measure it, but i probably search Google in English more often than in Hebrew. Under the result link there’s a short summary of the page. Very frequently the first thing that is written in this summary is a date. Google forces right-to-left too strongly on all of the page, so the first number of the date goes to the other end of the summary:

Google search results - right to left

The result is that very, very often i see things like “at most restaurants in 21 Lima and Cusco” and “What if 26 you buy a shite gun”, which doesn’t make sense.

Git made its first major appearance on the Free Software community scene in style with the famous Linus Torvalds’ talk, a large part of which consisted of verbal abuse against Git’s main competitor, Subversion (a.k.a SVN). Torvalds did it in a funny and cute way, so that was forgivable, and the serious technical part of his talk was very interesting and convincing, so i tried installing Git and using it. I didn’t quite understand what is it good for, though, and it wasn’t as popular then, so i forgot about it for some time.

A couple of years later i went to work in another company, which didn’t use any kind of source code management system at all. We would just email zipped source trees to each other. It was bogus, so i proposed installing some kind of an SCM and my boss just told me that i can suggest any product i like. Recalling the apparent coolness and sexiness of Git, i tried installing it locally and worked with it by myself for a few days, and it was mostly OK.

After some time i wanted to create a branch to test some new feature i wanted to develop. Branching is touted as Git’s strongest selling point; everybody keeps saying that it’s very easy and robust in Git. So i tried creating a branch. I worked on the branch for a few days, switching between the branch and the master every few hours when i worked on different things. After a few days i realized that the source tree became completely screwed up because of that.

At that point i had to choose between searching for The Git Way of cleaning up the mess that was created by Git’s “robust” branching capabilities or to simply rewrite the screwed-up files by hand. Searching for The Git Way would take an unknown time of reading through cryptic documentation; rewriting the files would take a known time of some boring repetitive work. I chose the latter option and after i finished the manual recovery, i recommended my boss to install SVN.

Fast forward to 2010. GitHub, a website for gratis hosting of Git repositories of Free Software projects became very popular. I don’t quite understand why, given Git’s immense complexity, but that’s the fact. I want every now and then to send a patch or a Hebrew translation to projects hosted in GitHub, and every time i have to suffer through Git’s cryptic commands to do it. It’s just never quite the same; every time there’s a different problem. Git’s error messages make me feel like i’m punished for not knowing Git.

In one interesting project, for example, i got the source (“clone” in Git terms, “checkout” elsewhere) and i read it. After a couple of days i wanted to start writing a patch and i wanted to update my local copy before that, so i ran “git pull”, which is the command that is supposed to do the update. I started receiving messages about conflicts between the updated files and my local changes; the trouble is that i hadn’t made any local changes. After fighting with Git to resolve the conflicts for about ten minutes i gave up on that project. That’s just one example out of many.

I still didn’t want to give up on Git completely, though. Mostly because i felt that i will want to contribute to projects on GitHub every now and then. So i tried to read Git’s documentation yet again and found gitglossary. You know, i’m a linguist, i love dictionaries and glossaries, and this glossary is actually pretty good, because it really helps understanding the other parts of the documentation. There are a few missing words there, however, so i decided to contribute the missing definitions by finding them elsewhere and sending patches.

During the course of my searches i came upon The Git Wiki. Usually when i arrive at a wiki i open an account there; i have accounts on dozens of wikis, not counting the different languages of Wikipedia. The first thing i usually do after i open an account is to create a user page, which is usually called “profile” on other sites, and put a link to my blog on it, because that’s the easiest way to tell the world who i am.

When i did that on the Git Wiki, an administrator of that wiki deleted my user page, saying that it was “link spam”. That never happened to me on other wikis, so i sent him a message through his user page, which is the usual way of communicating between users of wikis, and i asked him what was so bad about what i had done. He deleted that message and blocked my account, saying that i was abusing the user talk page for messaging and abusing him as an administrator. I didn’t want to give up and i sent him an email, trying to explain my intentions. He replied by saying that it was impolite on my behalf not to say “Hi” in the beginning of my email.

Maybe Linus Torvalds gave a bad example after all.

Git is the single most frustrating piece of software i ever encountered and dedicated Git users are the most arrogant and patronizing bunch of people in the Free Software world. Not all of them, obviously; Jamie, who patiently replied to my rants the other day is nice. But except him nearly all of the Git people with whom i had contact were extremely unwelcoming, as if they were trying to protect their elite community from dumb outsiders. Indeed, getting into it is so hard that maybe those who succeeded to penetrate it became hardened by the struggle. Many, many times i just wanted to give up and decide to stop using it for the sake of my mental health. Yet Git has this strange sexiness that keeps attracting me and i don’t have an explanation for it. A kind of masochism, i guess.

This post is filed under “Wikipedia”, because the accusations similar to the ones i am making here against Git and the community around it are frequently made against Wikipedia. For years hard-core Wikipedians, including myself, lived in denial, saying that it’s not so hard to join Wikipedia, write articles and become part of its community, but many people kept complaining that Wikipedia is very hard and unwelcoming, both technically and socially.

This wall of denial is starting to crumble. The Hebrew Wikipedia community tried to deal with this problem recently by inviting a group of academics to a meeting where prominent community members tried to explain to academics in simple terms what Wikipedia is, what is good and what is bad about it, why Wikipedia wants academics to join it, and what are the easiest ways for academics to join. I am also trying to draft people to Wikipedia by proposing them to just send their contributions by email, thus passing by the technical hurdles that the Wikipedia user interface poses.

These steps certainly do not solve all the problems, but at least we acknowledge that problems exist. Does the Git community acknowledge that it has such problems? I doubt it, but i’ll be very glad to be proven wrong.

There are two Free Software packages that many Free Software people love to hate: Cygwin and Subversion.

Cygwin is a Unix-like environment on Windows. It gives the user a shell, and it’s possible to install there Perl, Python, Ruby, GNU make, gcc, vim and many other familiar tools from the GNU world. It’s even possible to run X windows using it.

I mostly use it for running Perl on Windows. There are two other major versions of Perl for Windows: ActiveState and Strawberry. Every now and then i try using them and i get immediately frustrated: from my experience, Cygwin is much more stable and predictable. Failure to install a CPAN module on Cygwin is much more rare than on ActiveState and Strawberry. Maybe i install the wrong modules, but for modules that i need Cygwin did the job better.

Cygwin is not without problems. But all too often it does the job more readily than ActiveState, Strawberry and GNU/Linux. Nevertheless, Free Software people tend to call me names, when i tell them that i use Cygwin. “You should expect problems when you run an emulator instead of running real Linux!”, they say. Well, what do you know – sometimes, i have to run Windows, that’s a fact of life, and there are stupid problems with Linux, too.

Another stupid holy war in the Free Software community is Git vs. Subversion (SVN in short). Both are source code management (SCM) systems. The “cool” Free Software people say that git is better, because it git lets you create your own repositories, because git is faster, because git is easier.

I can see the principal advantage in having a local repository, which is the way git works. I can work offline and make as many commits as i like. In SVN i need to go online for every commit. But that, in practice, is the only disadvantage that SVN has. People say that SVN sucks at branching and merging. They like to quote Linus Torvalds: “Did you ever try to merge using SVN? Did you enjoy the experience?” Well, i have news for them: I tried branching and merging using Perforce, Mercurial, ClearCase, SVN and git – and i didn’t enjoy the experience in any of them. So git also sucks at branching and merging, but the difference is that with git i lost data, too. Every single time i tried to branch and merge using git, i cursed the hell out of it, copied the files i wanted to change to a backup directory, deleted the repository, recreated it, and did the merge manually. Every single time.

Besides, every time i try to use git, i feel like a fucking scientologist, forced to look up every single word in the help files: how the hell am i supposed to remember the difference between “pull” and “fetch” or between “branch”, “clone” and “checkout”? To understand what “fetch” is, i need to understand what the fuck “head”, “tag”, “object” and “ref” are. Go on and tell me that i should sit down and learn git properly, but i didn’t have to sit down and learn SVN. It just worked without forcing me to understand things.

So, cool kids, go on, keep being cool, keep telling people that Cygwin and SVN suck. But every now and then do a reality check, please. You find it fun to use git? Great. Just don’t force it on other people.

To the developers of Cygwin and SVN i want to say: Thank you. You deserve far more appreciation than you get.