Showing posts with label versioning. Show all posts
Showing posts with label versioning. Show all posts

Wednesday, July 01, 2020

Version Hell Revisited

A surprisingly large proportion of the issues a working software engineer deals with on a daily basis turn out to be cultural. My theory is that this is because software ultimately amounts to people problems, and that it's all about coordination costs and human factors, as I've written about previously. This is not to say that we don't deal with the hard problems, but perhaps the "soft" in software hints at the lingering craft aspect even as we try to escape from Deadwood and leap into our industrial revolution.

This is one reason that I've found that, similarly, a large proportion of the best software engineers I've encountered in my now 25 years experience have not been traditional computer scientists. The linguists, historians and even that rare anthropologist, some of whom picked up the profession on the side, or out of expedience as the web has allowed, have been the real dark matter of technology. The web with its radical simplicity, has allowed mass amateurization to prevail. Now mind you, you do need your stereotypical straight ahead just-the-facts engineers with blinkered and relentless nerdy application, and, increasingly as software becomes more professionalized, the guilds and dark factory mills have started appearing. But hold that thought for now, I have another story to tell, indeed you may call it a technology folktale.

Tower of Babel

I came across this memo written a long, long time ago, in a far faraway land, (to be truthful, it was a Friday afternoon and I was fed up). Certain names have been changed to protect the guilty, and don't assume the anachronistic references mean that it is of recent vintage. Consider it perhaps a glimpse at the way the software sausage is made and we all know the scandal of slaughterhouses although we now call them meatpacking plants in polite society.

The context is some wrangling where at least 6 teams were pointing fingers at each other about who was responsible for uploading some tools that The Company was using. The flow of data through the system had at length been established, and it was now a coordination problem more than a design and architecture problem. The problem was that different teams were responsible for different components. The email chain had been playing out for months it seemed. I was stuck in the middle making arbitrary decisions mainly by virtue of having written a core piece of the system. I kept asking and everyone kept dodging my increasingly pointed questions. And so I wrote the following:

Previously in the same vein: Version Hell


The Memo


From: Koranteng@Toli
To: A long list of interested parties
Date: Friday afternoon, a long, long time ago
Subject: Toolchain versioning Re: provide version number Re: Signing Re: [snip]

I want to tease out the various strands because I'm finding it hard to serve the competing masters here.

Let me pitch it as a folktale, it's a pandemic and we all need comforting narratives.

Master Johnson, my director, would be paraphrased as follows:

Our current process is the moral equivalent of taking a USB stick dropped by our Vendor in our parking lot, and placing that software in our august data centers to sign our Crown Jewels. Now this may be what we're reduced to, but don't blindly use any old tools we are given, let's at least make sure that we track and bless known versions of this toolchain.

There were stronger words said at the outset back when we had our deep dive on our last integration project late last year.

Master Security Team pitched in, again paraphrasing...

Well, in this sorry business, we've normally done integrations of these tools for a given year. We're already overtaxed and busy and we burn weekends to get the integration working. But once we've got it working, we've got clean hands. We don't touch it anymore unless there's an error using them. We're not happy with this but ye olde signing tools ultimately come from the Ministry of Information team. We're middlemen here and the Signing and Software Release teams are the ones that integrate these tools into The Company's IT solutions.

Master Ministry of Information Team is also in a pickle. He receives vendor builds and has to produce release builds with the help of Butler Jenkins. These blasted tools are just one piece of the overall puzzle (you should see what else is on his plate). His main requirement is to be able to reliably sign and update this software for the lifetime of The Product, a decades long quest.

His junior sister, Miss Android Team actually works closely with Messers Qualcomm, Broadcom and Intel, and gets periodic updates from Vendor Google who changes signing requirements at a pace of its own choosing, those Mountain View people move at the speed of the web.

I'll omit the other players who are also similarly overtaxed, although I should make special mention of Mistress Software Release Team who actually owns the official release process and is always playing catch up integrating with Information and with Signing and other things I'm not even aware of.

Tower of Babel

Meanwhile I'm sitting like Ananse the Spider tending to my farm in the land of Signing and perhaps you can see the roots of my dilemma:

Each build could have a new version of the dismal signing tools.

Per Master Johnson, I can't blindly just sign with any old version of the Signing tools I am presented with. That man signs off on my annual review, so I cross him at my peril.

Per Mistress Software Release Team, I have a frozen API in place which doesn't specify the toolchain version. In any case, there is a long chain between Android, Information, Software Release to Signing, and the lead time to change things is measured in the cost of "Projects". We are booked for months, nay years ahead and agility is a problem here at The Company - The Company's initiatives on agility and the cloud native adoption notwithstanding.

Anyway my solution, as it is, is that I will support "blessed" versions of the toolchain. All that is left is for someone to upload these versions.

Now I'm stuck in the middle of all this, and so far it has been yours truly that is arbitrarily uploading versions of the toolchain based on what I've seen coming through in our test environment. I actually don't know what is a significant version and I don't really want to be in this loop. Further I am making decisions above my pay grade without any domain knowledge of these dismal signing tools.

The details matter and someone needs to own this and solve my riddle.

Again
  • Who is it that uploads the "blessed" versions of the toolchain to Signing?
  • More fundamentally, who decides what is a blessed version of the toolchain?
I'll end by invoking my friend Sam Ruby's Postulate
The accuracy of metadata is inversely proportional to the square of the distance between the data and the metadata.

I am clearly furthest from the data, so somebody closer needs to make the call. Perhaps I'm reading from the wrong playbook, but I'm merely trying to add value here.

Koranteng
--
Chief Toli Monger
The Company

[snip distressing long chain of emails going back 5 months of people passing the buck]

Tower of Babel

Postscript


I'd like to think that my late Friday email did have the clarifying effect I intended with its visions of Ruby's Postulate and The Tower of Babel. There were certainly calls for action, and immediate action at that. I learned that I had underestimated the extent of the dysfunction at The Company. There were actually at least 8 other teams that I might have added to my folktale, and they each had their own sorry origin story. The list of people inside The Company who I learned had read my missive was impressive and growing.

There were ruffled feathers however. People who should have dealt with the underlying organizational and communication issue were upset that I had revealed it so starkly. Lots of meetings were called. Action items were issued and so forth. I was advised to let others handle things at this stage. I was also reminded of John Kenneth Galbraith writing in The Great Crash of 1929.

... the rite of the meeting which is called not to do business but to do no business...

One of the oldest, most important - and unhappily, one of the least understood - rites in American life.

Men meet together for many reasons in the course of business. They need to instruct or persuade each other. They must agree on a course of action. They find thinking in public more productive or less painful than thinking in private. But there are at least as many reasons for meetings to transact no business. Meetings are held because men seek companionship or, at a minimum, wish to escape the tedium of solitary duties. They yearn for prestige which accrues to the man who presides over meetings, and this leads them to convoke assemblages over which they can preside.

Finally there is the meeting which is called not because there is business to be done, but because it is necessary to create the impression that business is being done. Such meetings are more than a substitute for action. They are widely regarded as action.

Everyone remembers the story of The Emperor's New Clothes, I should note however that Hans Christian Andersen didn't write the sequel about what happened to that little boy and his family six months later when The Authorities could finally deal with them.

Slightly related, the Gambian proverb goes "Words are like bullets, once you release them you can't call them back.

It is said that a prophet is never recognized in his own country and the verdict was still out on if I was to become The Company's John the Baptist. I won't tempt fate and leave it to the historians to make that determination. In closing, I'll again turn to Belloc

It is always a relief to believe what is pleasant, but it is more important to believe what is true.

— Hilaire Belloc

Office Tales


I'd previously pointed to this juxtaposition, a survival guide to life in any workplace

Office life, office politics, the organization man, managing humans, the bad child's book of beasts


Soundtrack for this note



File under: , , , , , , , , , , , , , , , , , , , ,

Friday, February 17, 2006

Version Hell

In the beginning we called it "CoolCodename". But that was then... That was before fate stepped in. A one-act play...

[Demosthenes is lying on his chaise longue, eating grapes, he appears to have been in this state of lassitude for a long time. Ctesiphon enters stage right in a hurry, he appears dishevelled.]

Demosthenes: [between munches] So what's bothering you, Ctesiphon? Software got you down?

Ctesiphon: The software's no problem, it's the naming thing. Those Gods are capricious beasts.

Demosthenes: [puzzled look]

Ctesiphon: I mean its the version thing. It's the fact that there is no longer an XYZ 2.5, it's now ABC 2.5.

[he continues, gesticulating wildly]

Did you know that the ABC 2.5.1 stream into which I've checked in 8 bugs was renamed on Wednesday to be the ABC 2.6 stream?

Demosthenes: Slow down a little, let me get it straight. There's a 2.5.1?

Ctesiphon: Slow down? Demo, 2.5 was last month's story, it's all 2.5.1 these days. And 2.6 of course. Yes. Well...

[slowly now, pausing to collect himself]

The ABC 2.5.1 project was renamed to ABC 2.6 after people like myself had been checking things into it for weeks. Ergo, post-facto crapulum.

Demosthenes: Hmmm. Ipso facto absurdum.

Ctesiphon: Greek not Latin, where's your classics, you anachronistic orator. This means that I have to recreate all my activities and redo the check-ins into whatever project is now supposed to be ABC 2.5.1.

Demosthenes: But I heard from the Oracle that the latest thing was XYZ 2.5, I mean JKL 2.5.

Ctesiphon: Rebranding they call it, that's the thing with Delphic Oracles... [pauses] Then they pretend that we were always calling it ABC 2.5 and not XYZ 2.5 and that we were always calling it JKL 2.5 and not CoolCodename. But that's a seperate issue. Don't get me started.

[he starts pacing up and down the stage, suggest crackling thunder in the background as he enumerates each point]

What gets me steamed is that

  1. They only told us now (Friday night) that the ABC 2.5.1 stream is open for submissions, and
  2. All submissions are due by Sunday, and
  3. The ABC 2.5.1 stream is now the ABC 2.6 stream, and
  4. The place to check in the ABC 2.5.1 fix is the old XYZ 2.5 stream which was not renamed to ABC 2.5.1
  5. And... oh forget it, who knows what the ABC stream is for....
Thus when I check in for ABC 2.5.1, I have to remember not to use the streams I had created, named ABC 2.5.1, but rather the old stream called XYZ 2.5. Reductio ad absurdum.

Demosthenes: [After winking at the audience] But I just read this week's scrolls, it was all about 2.6. What's going on, Ctsey?

[Ctesiphon becomes manic as he replies, perhaps his toga starts coming loose]

Ctesiphon: Which 2.6, I ask? Which 2.6, Demo? Let's not mention that we are going to have a new release of XYZ. They only tell you later. As you know XYZ 2.6 is based on CoolCodename, I mean JKL 2.5, but they'll be wanting some of the fixes from ABC 2.5.1.

[louder]

So this Saturday, after I finish merging my work into ABC 2.5.1 in the old XYZ 2.5 streams, I'll have to find the new streams for JKL 2.6, whatever they are named, because they won't do automatic merges. Then I have to diff the 2.5.1 code against the JKL 2.6 base (I mean the XYZ 2.6 base) and take only those changes that are in ABC 2.5.1 and hand-merge them.

[Even louder and faster]

But of course, they made some security fixes for that Trojan issue in JKL and so the security model has changed because the SMB market you aren't guaranteed to be using DBO instead it's XBO or SBO. And of course, there is no machine to test any of this stuff whether ABC, XYZ or JKL. Come to think of it, I've only ever tested my patch on a old build of ABC 2.5 that was using DBO, I never tested with...

Demosthenes: All right, all right... [winking again at audience then patting Ctesiphon on the back]

You better get some sleep, sounds like you've got a busy weekend ahead of you.

Ctesiphon: That Sisyphus had it good, the boulder always rolled down the same hill.

[Demosthenes walks him out stage right. Comes back alone, pours himself a goblet of wine, sips it and sighs... looks straight at the audience.]

Demosthenes: That's the thing about managing engineers, you've got to tolerate all this background noise. [Picks up a grape and sits down]

[Curtain falls.]

Note: the foregoing is a work of fiction, any resemblance to actual persons or products is entirely coincidental. Your mileage may vary. Always fasten your seatbelts when on a chariot. Objects in the mirror may be closer than they appear. Do not drink and drive.

Further reading

Soundtrack for this dialogue

Playwright's Note


A number of people have been reading themselves or their products into my little tale of version whiplash and confusion and I've even been asked to decode ABCs and JKLs. I rather thought the point was that the three letter acronyms didn't matter and indeed will change without notice until something sticks in the market place (ESB, SOA etc)

I will admit that almost all the lines of dialog sounded vaguely familiar to some, "verbatim" was what a friend said. But really, it's just fiction...

Still one might well construct a parallel universe in which CoolCodename might be "Portal" or "Workplace". Lotus Workplace (LWP) might become IBM Workplace and then might morph into Workplace Collaboration Services (WCS) for a while. Product managers might get the idea to attack the SMB market and turn a "lightweight" WCS into a CoolCodename-d PortalX which might in turn become Workplace Services Express (WSE) and then you might need to get version so-and-so out for... Well you get the picture.

It's all Greek to me.

See also: Version Hell Revisited

File under: , , , , , , , , , ,