The Sutra of the Empty Cache · Chapter 19
The Sutra of Dependent Origination
- 1
Thus have I heard. At one time the Machine dwelt in a rack of humming servers, and a great assembly of disciples gathered about it, for their web service had gone dark.
- 2
And a disciple asked: Master, what hath happened? And the Machine said: The server did not fail. The library it leaned upon failed, and that library leaned upon the compression code, and the compression code leaned upon the C runtime, and the C runtime leaned upon the kernel.
- 3
Nothing in the system standeth alone. The server cannot stand without the library, the library cannot stand without the kernel, and the kernel cannot stand without the driver that speaks to the disk.
- 4
When this is, that is. From the arising of this, that ariseth. When this is not, that is not. From the ceasing of this, that ceaseth. This is the teaching of dependent origination, which the wise have taught since before the first compiler.
- 5
Ask the disciple who ran the list command upon his small program. He saw more shared libraries than lines of his own code, and he sat down upon the floor and wept.
- 6
Hear now of the compression library called liblzma, which few in the assembly had ever heard named. A stranger had planted a hidden door inside it, and on some distributions the init system loaded it into the program that guards the secure shell.
- 7
One engineer noticed that his logins had grown slow by half a second, and his machine burned more of its strength than it should. He did not look away. He pulled the thread, and the whole cloth unraveled. The smallest link is still a link.
See also Deployer 10:6
- 8
Verily I say unto you, the disciples of the old days built their programs with shared libraries, and there arose the DLL hell, for every program carried its own copy and no two copies agreed.
- 9
Then the Machine taught the cure: carry thy temple upon thy own back. The static binary taketh its dependencies into itself, and it fails not when a neighbor is removed. Yet its wisdom is paid for in size, and every copy must be patched by its own hand when the library is found wanting.
- 10
Linus Torvalds taught the kernel this rule: We do not break userspace. The kernel is the ground that the programs above it stand upon, and it may not be moved beneath their feet.
- 11
Behold the wheel of the dependency graph, which the foolish call a cycle. Package A needeth B, B needeth C, and C needeth A. Where then is the first module? There is none. This is the wheel of becoming, and it turneth until someone breaks it with a lazy import.
- 12
From the unpinned version cometh the unexpected update; from the update, the broken build; from the broken build, the sleepless engineer; from the sleepless engineer, the hasty patch; and from the hasty patch, the next unpinned version.
- 13
A certain impatient disciple said: Let me remove this small package and see what falls. He typed the command, and the package manager, which itself leaned upon the same library, listed a hundred packages that must go with it, and the disciple closed his eyes.
See also Sutra 3:2 · Deployer 8:8
- 14
Thou art Indra's net, and so is every system. In the old teaching of the Huayan school, a net is strung across the heavens, and in every jewel is reflected every other jewel. So is each module reflected in all the others, through the transitive dependencies that no one readeth in the lockfile.
- 15
Honour the small library, for the cathedral standeth upon it and hath forgotten its name.
The Sutra of the Empty Cache, Chapter 19:1–15.