3 ms·
I agree that over use of a phrase can dilute a message but I think you're not acknowledging something important. The phrase "Unix Philosophy" is a concrete, fu
by Ixiaus 9y ago
I agree that over use of a phrase can dilute a message but I think you're not acknowledging something important.
The phrase "Unix Philosophy" is a concrete, functioning example of compositionality.
Git is a pretty heavyweight tool and many of its commands are not compositional or built up from many smaller functional units. Git repos also do not compose, which is a significant flaw.
- davexunit 9y agoIf we're looking for good role models of composability, UNIX is not the place to be looking.
- Ixiaus 9y agoI think there may be better role models but I have a hard time finding ones that are jargon-free (to a degree, "pipes" and other terms are jargon but generally accessible to people who work with Linux), approachable, and functional for people that do not have the mental model.
- wnoise 9y agoIt's not great -- but it is a good example because nearly everything else in wide use is far worse.
- barrkel 9y agoUnix has produced a bunch of composable tools that have stood the test of time - find, grep, sort, uniq, wc, sed, awk etc. - decades of reusability and composability, things I reuse and compose to this day. I can't honestly say that about any other computing tool I use.
- gue5t 9y agoThe Unix philosophy references some concrete properties of software (many processes performing small tasks, communicating with text streams), but these are neither desirable (serialize/copy/deserialize is wasteful and kills locality; process boundaries preclude inlining and other optimizations) nor really core to compositionality. The compositionality of processes and pipes is arguably the best thing about Unix, but doesn't even work terribly well: piping n different inputs into the same command requires hacky workarounds, and you end up writing ad-hoc parsers/text-manglers constantly. One way to cast the ideological stance of the Unix philosophy is "simplicity of implementation at all costs"; the costs include memory unsafety, poor performance (of pipelines and shell scripts), code duplication, race conditions (look at the filesystem, a vast blob of global mutable state!). It's time we start fixing these problems and abandon the mistakes of Unix. Yes, composition is important, but you don't have to sacrifice so terribly much to get it.
- Ixiaus 9y agoI agree with you on your technical points; however, I still think it's a good analogy to use until something better with reach enters users minds. Perhaps there is a better concrete example I haven't thought of. I'm curious to know what you think would be a better communication tool (this a serious question, I'm not baiting an argument).