[TUHS to Bcc; Cc'ed to COFF to redirect for follow-ups]
On Sun, Jul 20, 2025 at 8:24 AM Christian Hopps <chopps(a)chopps.org> wrote:
Larry McVoy <lm(a)mcvoy.com> writes:
I wasn't trying to tell Will he can't
use whatever editor he wants, I was
trying to tell Will I wouldn't tolerate this much back and forth about his
personal preferences distracting us from shipping product. My team had
emacs people and vi people, nobody cared so long as you got your job done.
What we didn't have is editor arguments clogging up our thinking.
To jump in here before everyone poo poos this thread too much. I agree with this
sentiment when it's time to get work done.
That said, I've enjoyed this thread b/c I like getting other peoples perspectives,
especially from folks that I think have some clue. Sometimes I learn something new or a
new perspective and I end up adapting new tools or practices b/c of it -- even now that my
beard/hair is grey.
I find these are actually fun conversations to have occasionally -- maybe in a cafe/bar
or even on a mailing list. Maybe not everyday or all the time, but sometimes. :)
I think some folks may have interpreted Larry's statements as stating
that, if you worked for him, you used the tools he mandated. But I
don't think that's what he meant (at least not about text editors),
and I think that your interpretation is correct: use whatever works
for you, but don't waste a bunch of other people's time pushing the
virtunes of your preferred tools on those who already have things that
work for them.
I think that's fair. That said, there is a qualitative difference
between the sort of banter people may bat around over lunch, and
someone seriously trying to get everyone else to use their preferred
editor (editors are just one example, though interesting in this
regard because choosing them seems to be such a deeply personal
thing). I think the discussions on these mailing lists are closer to
the former than the latter, and as long as it remains friendly, I
really don't see any harm in that.
But this got me thinking that surely there are decisions made on a
project basis, where individual preference by itself is not, and
cannot be, the deciding factor for use. Perhaps the most obvious is
code-formatting styles, but others may be choice of build tool,
revision control system, implementation language, and so on. Where
does one draw the line between the tools an individual chooses for
their own use, and those mandated by the group?
I suspect there is no one, good, universal answer. Take implementation
language as an example: "I'll write my part in C, you write yours in
FORTRAN..." sounds highly suspect at first, but _might_ make sense if
"I'm" tasked with writing the IO part and "you're" taking on
the
numerical bits and have to interface with a numerical library written
in Fortran. Indeed, I've found that when people try to define some
kind of general rule for deciding this or that, they tend to be trying
to simplify really complex things in a very superficial way that's not
reflective of actual practice.
But maybe there is some utility in thinking about this generally.
Perhaps a reasonable first-order approximation for finding a dividing
line might be taken from the answer to the question, "is this
something that really only impacts me, or is it going to have an
impact on my peers, as well?" Editors sort of make sense here; by and
large, as long as I can use the tools effectively, my peers aren't
going to be impacted if I use tool A to enter text versus tool B.
Similarly with whether I prefer light text on a darker background, or
dark text on a lighter background, what font I use, type size, what
window manager I use, and so on. But on the other hand, if I demanded
that I be able to use My preferred code formatting style regardless of
what the rest of the code used, then that _does_ have an impact on
those around me, so deserves more thought. And _that's_ the kind of
thing that people can argue about endlessly until finally someone just
makes a decision.
I've said this before, but Google's style guides were a great case in
point here. To be honest, I didn't like them and thought that the
resulting code was ugly. But after a few weeks, I just stopped
noticing that, and I had to admit that they were a great aid in being
able to approach a codebase with billions of LOC in it. When
`clang-format` came along and took out a lot of the tedium of making
your code conform to the style guide, it really freed up a lot of
mental capacity to start thinking about real problems, design, and so
on, and not just where the braces went. But that was all predicated on
someone just Making a Decision.
FWIW for coding/email/organizing/scheduling I now use
some franken-setup project called "spacemacs" which is emacs, but the UI of vi,
launching much faster, that uses a meta-configuration that makes it simple to enable all
those features (and yes I still write lisp when needed but that's almost never to get
what I want anymore).
For quick editing I still just type `vi` and use ^Z, even though I also use tmux and long
running disconnected remote sessions.
Personally, I've found it very helpful to maintain some level of
proficiency in a variety of different text editors, using different
tools for different things. Part of this is the whole, "when in Rome,
do as Romans do..." sort of thing: I'm not looking for `vi` on VMS or
Multics or VM/CMS or something, but I'll also happily use emacs to
write Lisp, and on plan 9, I'll use sam or acme for C or troff or
whatever. On my Mac, Zed or VSCode work pretty well. On remote Unix
machines, a lot of the kids are hip on this "Helix" thing these days.
Speaking of plan 9.... One nice thing about a system that embraces
true resource sharing is that, when one can construct an environment
that contains the set of all the resources one needs to work with and
then one can bring one's local toolset to bear on those resources.
Plan 9, where resources are represented by files in mutable
namespaces, really exemplifies this, which is distinct from a more
"remote access" model, where I use something like ssh or mosh or
telnet to login to a remote system. In the remote access model, I'm
constrained by whatever tools are available on a remote system. So if
I'm logging into some remote server over SSH or something, it's handy
to know whatever editor may be on the distant end. It's a shame more
systems aren't like plan 9 in this way, but they aren't, and for
better or worse, I've still got to use them, and it's so much less
personally aggravating to care deeply about what tools are available
in that context.
- Dan C.