Thoughts on git/DVCS

This has come up in a few different contexts recently, and while I understand that git is the current trendy choice for version control, I am not convinced that it is the best tool for every job. There are clearly places where a distributed version control system has advantages, and the most obvious of those is the one that git was designed for: a large open source software project with lots of independent contributors.

When working in a small company, with a group of engineers who are on the payroll, there doesn’t seem to me to be as much need for the additional complexity of a DVCS, even if those employees are distributed geographically.

Distributed

It seems to me that there is a misunderstanding about the word distributed in DVCS. Being geographically distributed doesn’t mean your team can’t use Subversion or Perforce. As long as they are connected to the internet & able to connect to the server when needed, there should be little difference. And I pity the poor soul on a slow connection who is trying to clone a large git repository… Especially if they are just trying to look at the latest version of the source to learn!

What is being distributed is the entire repository. So rather than you checking out just the version you are interested in, when you clone a git repository you are (by default) getting every version and all the meta data. That’s great if you work offline a lot, or if you don’t have a trustworthy, backed up place to keep the repository, but if you are serious about software development, and especially if you are building a company on top of that software, you really should have a central repository anyway which is where you do your release builds from. And the repository you back up.

Linus Torvalds presented his case for distributed version control at a Google event, but almost all of his advantages are in the context of an open source project with contributors of unknown ability. In that environment, enabling all potential contributors to work on the project & track their changes locally and then submit them for review in a standardized way makes a lot of sense.

It should also be noted that he does maintain a central copy of the Linux source code at GitHub, so the idea that a git project can be managed without a central repository is myth. In open source even more than in a small startup, people need to know where they can go to get the latest official (trustworthy) version of the source. For that a central repository is pretty much essential. I am certain that nobody will be able to clone the git repository from Linus’ personal computer!

Software Core

One on the most recent discussions I have had about git started with this tweet:

What struck me about this post was that suggesting the choice of version control tool was as important as the other three seems wrong. So I responded to Mr Srinivasan with that comment. What came back surprised me even more:

If I am reading that correctly, he feels that using git implies that a software team is more sophisticated than if they used subversion (or presumably Perforce or some other non-distributed version control). I could understand the argument that not using version control at all was a concern, but the specific tool choice seems irrelevant. I wonder if the choice of editor matters too?

Complex By Design

There are several places on the web where it is claimed that the complexity in git is there by design and that spending time trying to master its arcane way of doing things is a rite of passage. As if to confirm this, one third party response to my discussion above said this:

I appreciate that studying the tool in great detail, perhaps even downloading the source and really trying to understand it might be an interesting academic exercise. But I would prefer in a corporate setting that the version control tool be as simple as possible to understand and use. If I need to train every new hire (or test their understanding of the VCS during the hiring process), I would say the tool has failed.

Of course, if we look back at git’s origins we can see why having a more complex tool might serve a purpose. In that unmanaged open source world, where contributors are not interviewed or hired, having a tool that can weed out the less committed might be seen as a good thing. Of course, it could also be off putting to a lot of talented engineers who would rather spend their time working on their passion instead of learning how an intentionally arcane tool works!

Workflow

The workflow for a large open source project, with thousands of contributors is very different to the flow inside a small startup team. External contributors branch off of the approved mainline, make their changes there and then they send a request to the project’s owner to pull their changes back into the mainline. The project’s maintainers might receive tens or hundreds of those pull requests each week. Certainly, in that environment they wouldn’t want to just open the flood gates & let unknown developers commit their changes directly. 

While that flow could work in a corporate setting too (and I could easily build a peer review process around it), I would argue that a more typical workflow would be to allow your engineers to push their changes into the mainline once they happy with them. Having one person in a small team responsible for pulling everybody’s changes in to the mainline seems like an inefficient use of resources. Even more so if that person needs to keep pushing back changes to have conflicts resolved. IMHO, it is far better in a fast paced corporate environment to have each developer commit their changes to the central repository as soon as possible and have them resolve conflicts.

I am also a big believer in only having peer reviews happen for changes that are checked in. Not because I think anybody I work with would intentionally make a change post-review to slip something in to the code unnoticed, but simply because it is all too easy to forget to commit one file, especially when adding new files as part of a change. It is also easier for remote reviewers to get the code if it is checked in somewhere.

Merging

My own personal experience with git merge is something I would prefer to never repeat; two days lost to trying to repair the mess it made of a simple merge of more recent changes in the Android set of repositories into my own branch (the deltas from the release tag my branch forked from and a slightly newer tag on the same release branch).

That aside, Linus’ comparisons of git to CVS are somewhat unfair. Sure, git tracks merges better than CVS, but I doubt anybody would consider CVS to be the state of the art version control system. In fact, I don’t know anybody still using it. I would agree that Subversion is still weak in this area, but other options like Perforce or the crazily feature-rich ClearCase track every merge and are not tripped up by attempts to merge changes that have already been merged. 

And the tools for merging conflicting files in Perforce are far superior to anything I’ve seen available for git (or subversion for that matter).

FedEx Fails Again

A package was shipped to me last week from Fremont, about an hour drive south, via FedEx using their saver rate. The tracking showed that it arrived at the Oakland depot late Friday, so I thought it might arrive with me today, but, no, the tracking insists that it won’t complete that last hop from their depot to my door until Wednesday:

This is something I believe is unique to FedEx. Certainly OnTrac, and I believe even UPS, will deliver a package as soon as they can once it reaches its destination facility. FedEx on the other hand chooses to sit on packages at the last stop until the “correct” delivery date. Or, in other words, they are going to make sure you don’t get a saver rate package in less than three days since you didn’t pay for next day or two day. Pathetic, and yet another reason why given a choice I will never use nor recommend FedEx.

What is even more annoying is that the last time they did this, they also ran out of time on the scheduled day (and that was for a guaranteed two day delivery as well) and failed to deliver on time. Hopefully this time they will at least manage to deliver on Wednesday. It looks as though noting will happen until then though.

Toddler Book: Roadwork

On a recent trip to the bookshop our two year old picked out a book he really wanted to read, Roadwork by Sally Sutton.

Since taking it home it had become one of his favourites, often being the first book he’ll ask to read. He has also memorized many of the lines, including the sounds on each page.

If you’re looking for a book for a vehicle loving, especially construction vehicle loving, little boy or girl, this one gets top marks from our son.

Welcome Natalie

Welcome to the world Natalie. Much like your brother before you, your arrival was not as uneventful as the doctors would have liked, but right now you have found a comfortable place alongside your mother, and you’re (both) resting peacefully.

Your mother has a few months head start on me in terms of getting to know you (you’ve been kicking her on and off for a while now), but we’ll remedy that over the next few weeks for sure. We started well already with you spending time with me while your mother recovered.

Eco Bulbs

Over the weekend, the bulb that has lit our shower for the past 6+ years burned out. That started me on a mission to replace not just that one, but all the other incandescent bulbs in our bathrooms. The kid’s bathroom has a row of 40W globes, eight in total, over the sinks, and we spend at least half an hour every night in there with him getting him bathed and ready for bed.

The first catch though is that many of the standard looking LED replacement bulbs I found were not rated for damp areas. The second was that they often included a warning that they should not be used in fully enclosed fixtures. The shower one, as well as our closet ones, are all fully enclosed.

The Cree bulbs I ended up with are damp rated, and the only restriction on fully enclosed fixtures was that they not be mixed with other bulb types.

I ended up getting a mix of 40W and 60W equivalent bulbs, rated at 6W and 9.5W respectively, to replace most of the remaining incandescent bulbs in the house, including the eight globe lights. In terms of the light they give off, they seem every bit as bright as the bulbs they were replacing, and being LED they are bright immediately – none of the 30+ seconds of warm up time you get with CFLs.

The only noticeable difference, and it is the row of eight in the bathroom where this is most apparent, is that there is a dark patch at the top of the bulb. Doesn’t affect the amount of light in the room at all.

In the walk in closet and one bathroom, the builder had fitted double bulb units (with a pair of 60W bulbs in them). I was able to also leave one bulb out using the 60W equivalent, saving even more. Of course, I could have done that with the incandescent as well to halve the power consumption. Even with just the single bulb, there is more than enough light in the small rooms these are fitted in.

Although none of the ones I have installed were attached to dimmers, the bulbs do claim to be dimmable.

Daddy Eco-Tips #1

One of the things I try to do is to be as light on the planet as possible, although it doesn’t always work out as well as I’d hoped (don’t ask me about nappies/diapers). A few things have worked out pretty well, so I thought I’d share those occasionally on here. First up, Green Toys…

Our little boy took a liking to cars, buses and trucks very early on. Initially the small Hot Wheels size cars were all he was interested in, but more recently he has been playing with some of his larger toy vehicles. School buses were a early favorite as were garbage trucks, the latter being a weekly attraction at home that he had to go and see when they came to empty the bins.

So, those two vehicles were natural choices for his first two bigger toy vehicles. The Green Toys school bus was the first we bought and we were impressed by how durable it was. Our 2 year old is not gentle on toys (currently crashing them is a favorite way to play cars), but the bus stands up to the abuse very well. 

Continue reading

Déco Screws

Hanging pictures is one of those tasks that I always enjoy afterwards, but find annoying to do. Especially when the frames or canvas prints come with those strange gripper bars in the top center rather than more conventional wire or eyelets. Then there is messing around trying to get the hooks nailed in to the wall at the right angle so that they actually stay in the wall.

Today though I discovered a great product that makes things much simpler: Déco Screws. Simply screw them in to the wall and they can support up to 30 lbs (according the box – none of my picture frames are anywhere near that weight!). They work with the funny gripper bars (and remain invisible, unlike hooks which you can see over the top of the frame), eyelets and, of course, conventional wire.

I notice on their website they also have another product, Déco Nails, but the reviews on Amazon suggest these are not so good, so I will be sticking with the screw version.

FedEx Failure

FedEx failure It has been widely reported in the media that both FedEx and UPS had problems delivering items due on Christmas Eve. Most of the reports I have seen are attributing this to weather or just unexpected demand. But in my case, the package I was expecting FedEx to deliver by 8pm on December 24th had been sitting in their Oakland facility since 7:41am on December 23rd. That is over 36 hours before the end of the estimated delivery time.

Continue reading

Comcast Resolution

Pretty much as expected, the telephone support at Comcast was useless. After a frustrating call which ended with a promise to have a supervisor call back, nothing happened. The Twitter support team at Comcast though did get in touch, and managed to resolve the issue without me needing to visit a Comcast store. Continue reading

Another Comcast Issue

Comcast is one of my perpetual dilemmas. One one hand, the service is pretty solid (and certainly better than anything AT&T could manage), but on the other they are such a terrible company to do business with. Then there is their telephone support, which takes appalling customer service to record breaking lows, but is contrasted by their Twitter based support team which are among the best support people I’ve ever worked with.

Continue reading