So. Last night I head to this bar in Portland for a networking thing because I want out of testing bank software at almost any cost it is killing me. Turns out that I've missed the networking part, and on we go to the "Advanced Topics" portion. I'm the idiot who doesn't know what the name they keep using for their hashes is. (SHA-1)
There I introduce myself to a few people, one of which is a prof at the local university and the other does something so technical and low-level I know he's done lots more math than I. We chat a bit about what they do. It's harder than VBScript in a completely different way. Anyways. Then on to the main event - an hour and a half about git.
I've worked with VSS. VSS is ineffective in some ways, but extremely nice in others. Everyone else in the room was a user of CVS, Mercuria, or some other command-line based tool. This presentation seemed to be aimed at them, mainly because they are more of a core user group. (I'd say 'target market') Groupwise, source code management is important to these people.
On to my impressions of the presentation. The real advantages of Git are supposed to be speed and usability. The project aimed to enable 10 comparisons / updates per second to the kernel source tree. These updates can be pulled directly out of e-mails, and are individually marked and identified by a 41-character SHA-1 hash unique identifier. Essentially, Git supposedly tears your source tree into thousands of little 'leaves' and individually marks them. After doing this, it is able to track when you move the leaves around, as well as managing an extremely large linear history of the changes to each individual leaf in the tree. This is apparently handled extremely efficiently. The number that was mentioned in the room was ~300MB for the change history of the source tree of the kernel. Some guy spent fifteen minutes downloading it through his wireless in the room.
Merging and branching were handled extremely effectively, as well. Git outputs a text history of all the branching done, but gitk comes in the package; gitk pulls up a KDE window where all the files, contributors, and history can be viewed in an extremely friendly graphical format. I thought it was pretty cool. However, the graphical interface seemed to be a bit behind what I've seen of VSS. I'm sorry to be a whiny little wanker, but I've been Microspoonfed for many years, and I like the Apple way of thinking - if you have to memorize the command, you're wasting brain cells that could be used figuring out how to use functionality. Regardless, given that it doesn't require much of a server - and can easily be hosted, can be handled in a comparatively easy setup, and leaves little to no footprint in base code directories, I'm quite impressed. The encouraged "Branch, then merge," functionality is something I had not seen before, and made quite a bit of sense.... However, I was surprised and disappointed there was no way to save branches I thought were promising but didn't end up keeping. I like hiding promising little snippets of code in my home directory, in the hope that someday a use will come for them despite their utter uselessness for the task at hand. Perhaps I'll have a separate repository for that. Regardless, you can import into Git from a bunch of other tools, and export to CVS for sure.... No real loss to try it if you've got control over your tools and time to try something new.
Overall, though, I know enough to know I am incapable of truly grasping all the functionality on the back end of Git, as well as all the functionality embedded in the front end... It's designed so I wouldn't need to. I plan on using it to manage my personal little website development project at home.
On to The Great Man Himself. This morning I read that he was, "one of the less controversial figures" in the Linux community on Wikipedia. If this is factual, I have to say that I'm surprised society as a whole has not attempted to eradicate them en masse. About thirty minutes into the presentation, the nervous presenter said, "And for those three of you in the audience who do not know who the man heckling me is, he's Linus Torvaldis." I thought to myself, "What a surprise. The smartass in the corner wearing sneakers." He knew what he was talking about better than the Mac user giving the presentation. In fact, he had apparently written the demo. What shocked me was his rather blatant disparaging of other people's work. "I was surprised and disappointed everyone had their heads up their asses." He referred to other developers as being so positioned multiple times, in a very blanket fashion. This always disappoints me, because it shows a lack of emptathy. For even Wikipedia to mark him as pretty amicable in comparison shows there must be some really intense people out there behind Linux. I have no real problem with that.
However, it does tell me a lot about why it's so hard for me to find a job using Linux instead of M$ junk. I work in a bank. Money is coming out of these people's ears. But the reason I am able to continue working in the bank is because I am mildly anonymous in my spite for how they do things. And I'm certainly not vocal about how I think things here should be done in such a disparaging way. For someone considered 'mild' in the Linux community to be so harsh about other people within the community, trying to help no matter how misguided or self-defensive they may be, shows.... Well. Yeah. I came away with a negative impression. Here I thought I'd be basked in hero worship and I was disappointed. It made me sad to see someone I look up to, someone I see as creating a better world for himself and others, say stuff like this about his community.
And that would never fly where I work. Seen as a sign of immaturity, it probably wouldn't get you fired, but a vendor selling software with this manner would be slowly phased out. Ergo less Linux and more Microsoft, no matter how cruddy the software I work with on a daily basis is.
What programmers seem to forget is that computers as a whole are a social endeavor. Data, on its own, is not important. That people can access it and shift it and realign it, well, that's important. And that people are willing to work with it and you is extremely important. The best code in the world is useless if you hand it to someone who thinks it's crap before they start working with it.