As Don Draper says in MadMen — “I sell products, not advertising”.
General Semantics (GS) is a philosophy developed by Alfred Korzybski, popularized by A.E. Van Vogt. The basic maxim of GS is “the map is not the territory”. It is the distinction between semantics and syntax. Meaning is communicated via words, but it is more than the words itself. Shannon once quipped that the entropy of written English is about the entropy is 2.62 bits per letter. This statistic is what makes crosswords feasible, because two words can share the same letter. So, in other words, the meaning of a word must be more than the letters themselves, the meaning of phrase must be more than the paragraph, the meaning of a thought must be more than a page, a chapter, or a book. So the postulate of GS, “the map is not the territory”. Here map refers to the semantics, and the territory as the syntax.Entropy of English Language
Vogt’s book “The world of NULL-A”, is where I first chanced upon GS. In this book, the protagonist, Gilbert Gosseym has multiple bodies — instances — with the ability to teleport between body instances. Teleportation is feasible when two instances are identical. There are several Gilbert Gosseyms — Gilbert_Gosseym_1, Gilbert_Gosseym_2, etc. When one dies, another becomes activated, or the ‘spirit’ becomes resident. This pseudo-scientific plot device has roots in Quantum Physics, the theory says that a particle may be in more place at the same time, or equivalently that the idea of locality is a mistaken assumption. With the internet, locality is suspended. Products exist globally distributed about the world. reference: World of NULL-A
THE job of a configuration management system (CMS) is to keep product instances identical across repositories. Actually, that is only partly true, because a CMS is really a change management system (CMS). It really manages changes between product instances.
When a car rolls off the assembly line, the fiction is that car is like all the other cars that rolled off. The blueprints are supposed to definitely dictate the car’s configuration. Of course, manufacturers found that by adding options they could increase sales. So differences such as colour paint are factored in as options. The CMS keeps track of that from the car VIN number. In reality, every car is different and some of these differences known, but many are random. not known. But the essence of the assembly line is to keep a standard configuration for all cars, with well known excursions.
For objects which are not mass produced, there is a different ethos. So for example, the custom bicycle builder, builds bikes to customer specifications — no two bikes are the same. And as the builder learns better technique, and employs better tools and tooling, the bikes change. I remember as a kid in the 1970s, all bicycles were built from steel, Today, there are titanium, aluminum, and composite frame bicycles. The essence of a product has not been captured by its imitators.
What does this have to do with CMS? Well, for the case of software, the product definition is specified by a collection of source code and data files. There is inherent variation in the product variation and that is a good thing. It can reflect the learning curve, new customer requirements, more and different uses, bug fixes, dependencies, new operating systems.
A repository should be a complete product definition. Everything that is necessary and sufficient to define the product should exist in the repository. Multiple repositories can exist on machines distributed over the internet. In the simplest case, these repositories simply mirror each other. They all define the exact same product. The git command, “clone” downloads the product definition, and creates a mirrored repo, and lets the original repo know that it is derived.
- git clone
Github which provides additional services (some of which are quite valuable extensions to the basic git) has a Fork option which allows you to clone from someone else’s repository — and to later ask them if they want to merge your branch using a Pull Request (PR). This can (and often is) a complete stranger, and provides a really cool workflow. You can also merge two repos that are from your account using the Merge Request. So Forks are very similar to Cloning, but facilitate inter-repo merging via a PR.
When repositories reflect product variation, they branch off from each other. A given branch ‘option’ is derived (or descends) from the original repository ‘master’. In git, one does
- git branch option
- git checkout option
- git add -A
- git commit -m “Added option”
To push this repo back to the original, one does a push. This then puts the new branch on the original repo. Which then can be merged.
And that is that. Or is it? Biological systems, life works by increasing diversity, variation is needed. Many product instances are created, many are seemingly identical, but wild variations are needed and encouraged.
What indeed is Aristotelian logic? I think it is not just one thing, so when I talk about NULL-A, it is negating a broad system, a whole body of though. In one aspect, Aristotle came up with a classification or taxonomy that examined the IS-A relationship among classes. At least, I think he did. So, I am a man, A man is human, A human is a primate, A primate is a mammal. A mammal is an animal. An animal is living. That I think is what is Aristotelian.
Non-Aristotelean logic might begin with how do I differ from other men? How am I unique? We need to explore these notions in a new philosophy. This need is critical for our world today, because product definition, development, maintenance, growth are invasive realities that affect our everyday life and existence.
If we stop to think, we realize that it all rests on shaky philosophical foundations. We need to get our bearings quickly, before version 2.0 leads us into hell.