Dr. Kimberly Manning explains it fantastically:
I’ve virtually never regretted erring on the side of being more explicit about my expectations and my intents.
I like to distinguish between “distributed” and “remote”.
Being distributed is an intrinsic property - a team can be distributed, with no real central locus like an office.
Being remote is an extrinsic property - you’re remote from something, like a remote team in another country.
Your code lives in version control, with easy branching, reviewed changes, and tests, right?
Does your documentation?
By writing code in a non-standard fashion, we took on overhead that we would have not had to worry about had we stayed with the widely used platform defaults
Don’t underestimate the costs of doing your own thing.
Do you know what your full dependency graph looks like?
I built Emporium to get a better idea.
Emporium looks at libraries on the Python Packaging Index (PyPI), and analyses their dependencies.
For some libraries, that’s quite a small set - many have no dependencies at all, or a tiny handful at most.
Most of my Raspberry Pis run headless, with no screen. So the image I keep around is Raspbian Lite. It’s half the size of the “full” Raspbian-with-Desktop image, it has everything I usually want, and very little that I don’t.
But sometimes I find I want a GUI.
I don’t want to have to keep the full image around and re-image my Pi. Nor do I want to have to manually install the various components of a desktop environment.
I do want a single command that just “gives me a GUI”.