Version Numbers

Initech was the big customer for Chops's company. And like a lot of big customers, they had requests and they had the weight to throw around to get their requests fulfilled. When they wanted a new feature, they got a new feature. When they found a bug, they got the patch ASAP.

No matter how special Initech thought they were, they were mostly requesting things that other customers wanted anyway, so it worked pretty well.

So, one day, they submitted a pile of feature requests, the dev team got to work, and cranked out the features. They tested it, they shipped betas out to the customer, the customer liked the changes, confirmed that it passed user-acceptance, and was ready to deploy. Well, almost ready. There was one tiny little problem.

"So, we can't do this upgrade," said Jerry, the lead from Initech. "It violates our IT policy."

"Um, how?" Chops asked.

"Well, the current approved version in our environment is 3.4.24. The version you're shipping us is 3.5.1. That's too big a version number change."

"Oh, uh… we shipped 3.5 a few months ago…"

"Right, but we haven't gotten that approved. Can you add these features to the 3.4 version?"

That request got escalated up to management, and since Initech was a big customer, management said, "Yes, absolutely, do it."

The result was a disaster. While 3.5 and 3.4 were basically the same from the end user's perspective, a lot of internals had changed. The new features used the new internals, and when trying to backport them it was a lot of work. They started from the codebase of 3.4.30 (the last release of 3.4.x), and ended up breaking everything. Tests which passed under 3.5 started failing, tests which had been passing under 3.4 also started failing. No one was exactly sure how to backport these features to the old internals and it was eating a lot of developer cycles.

Chops watched this slow motion disaster, and watched management getting increasingly upset. Initech wanted their new features, and they wanted them last week. So Chops decided to take matters into their own hands. They took the 3.5.1 build, and re-set the version numbers to be 3.4.31.

"Hey, Jerry," Chops said. "I've taken the latest version, 3.5.1, and I've renamed it 3.4.31. So the official version number is 3.4.31. Is that okay?"

"Uh, the version you're giving me is 3.4?"

"That's the version number on the file, yes. But the code is actually 3.5."

"But the file says 3.4?"

"It does," Chops said. "And the 'about' information will also say 3.4.31."

"Perfect, that'll do."

Chops sent the file over. Jerry ran it through all their tests and confirmed it was still satisfactory. Initech's management confirmed that the version number only incremented a small amount, and it was still "officially" a 3.4 version.

Everyone was happy with this outcome.

[Advertisement] Otter - Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!

This post originally appeared on The Daily WTF.

Leave a Reply

Your email address will not be published.