Skip to content(if available)orjump to list(if available)

Programmers and software developers lost the plot on naming their tools

pdpi

GNU's version of Yacc is called Bison. Pine Is Not Elm (even though that was never an official acronym). UNIX was UNICS which was a pun on MULTICS. I couldn't for the life of me tell you what dd stands for. nano is a copy of pico which was the "PIne COmposer". Postfix is a completely opaque portmanteau of post (as in mail) and "bug fix". C++ is "C incremented", and C is the successor of B, which is the successor of BCPL.

Developers haven't "lost the plot", we never had it in the first place.

Inversely, Clang, LLDB, jq, fzf, loc are modern projects perfectly in line with the author's notion of a good name. "mise-en-place" is the perfect metaphor for what mise does.

anyfoo

> I couldn't for the life of me tell you what dd stands for.

Data(set) Definition. But that name does not make any sense whatsoever by itself in this context, neither for the tool (it hardly "defines" anything), nor for UNIX in general (there are no "datasets" in UNIX).

Instead, it's specifically a reference to the DD statement in the JCL, the job control language, of many of IBM's mainframe operating systems of yore (let's not get into the specifics of which ones, because that's a whole other can of complexity).

And even then the relation between the DD statement and the dd command in UNIX is rather tenuous. To simplify a lot, DD in JCL does something akin to "opening a file", or rather "describing to the system a file that will later be opened". The UNIX tool dd, on the other hand, was designed to be useful for exchanging files/datasets with mainframes. Of course, that's not at all what it is used for today, and possibly that was true even back then.

This also explains dd's weird syntax, which consists of specifying "key=value" or "key=flag1,flag2,..." parameters. That is entirely alien to UNIX, but is how the DD and other JCL (again, of the right kind) statements work.

isoprophlex

I just remember it as "Da Disk", early 2000's nu metal lyrics-style, because it does mad things to da disk, yo.

null

[deleted]

f33d5173

I had remembered it was "convert and copy", but cc was already taken by the c compiler so they shifted it down a letter. That might have been apocryphal.

classified

Same here. But I also seem to remember claims that this isn't true…

necovek

Having come from the DOS world (or it could have been Norton utilities), I always thought it was more like DiskDupe (duplicate disks).

Funny how we never confirm our hypothesis that "checks out".

anyfoo

"disk dump" is another common (but wrong) guess.

richardc323

Ha, for the last 30 years I have been convinced it was Disk Direct.

null

[deleted]

necovek

Even GNU is a recursive acronym, Emacs a convoluted one... What's Perl, Python, Java... all about? Remember how JavaScript was named? Don't mention Go (go-lang) or Pascal... Git, Mercurial, CVS anyone?

I believe this makes much ado about nothing.

delaminator

The 2000s Plan9 community asserts "Gnu is Not Useful" as the correct expansion.

pdpi

"Concurrent Versions/Versioning System" is a pretty reasonable one, though.

necovek

Then Gimp is also a great name, right? GNU-is-not-Unix Image Manipulation Program: immediatelly obvious what it does as soon as you learn what the acronym stands for.

Or Gtk even: Gnu-is-not-Unix Image Manipulation Program ToolKit (later changed to refer to Gnome instead of Gimp I believe).

xxs

Java is easy - named after the coffee beans of the coffee they used to drink...

CVS (noticed already mentioned by a sibling comment) is just an abbreviation.

Python - well Monty Python

necovek

Yes, I am simply highlighting that programmers have not used descriptive names consistently... well, ever (reinforcing the point the GP made).

The entire premise of the OP is simply wrong.

eloisant

Java was originally called Oak but its creator because he could see an oak from his office, but marketing people at Sun thought Java would be more catchy. Yes it's named after coffee beans, but it has no relation whatsoever to the language or the way it was created, it's just a marketing name.

usefulcat

Perl stands for “practical extraction and report language”

nineteen999

Also "pathlogically eclectic rubbish lister".

ekidd

> I couldn't for the life of me tell you what dd stands for.

Traditionally, according to folklore? "Delete disk" or "destroy data". (Because it was commonly used to write raw disk blocks.)

hoherd

I always thought it was "disk dump"

QuantumNomad_

Another, similar name it is sometimes jokingly referred to under is “destroyer of disks”.

https://web.archive.org/web/20081206105906/http://www.noah.o...

sweetjuly

I always assumed part of the "data destroyer" folklore was from people flipping if/of by accident and destroying their data :)

opan

I thought the more common mistake with dd was picking the wrong disk to write to (especially when using /dev/sdc type naming instead of /dev/disk/by-id/whatever naming). Flipping source/dest and overwriting data is a problem I associate with the tar command.

null

[deleted]

Y_Y

I feel obliged to point out that C++ is C postincremented, that is to say it has the same value as C, but after you read it C gets incremented. The metaphor is flawless.

bruce511

The article even refers to AWK as being the initials of the authors. And posits this as "reasonable"?

Naming is hard, not least because "a million" new projects are spawned every day. And if you're going down a path of "rule the world" (even in a niche like infrastructure) you start by getting a .com domain, so choices are limited.

Plus the name has to be unique enough to Google.

port11

I agree we never had it in the first place, and that it ultimately doesn't add up to much. It seems like just a familiarity problem.

If I'm diagnosing something at 2AM, I don't care whether my database queries were written with Zapatos or PG-ORM, even if the latter is clearer. As long as you use the tools, you know what they do.

saghm

In the same vein, my recollection is reading that the X windowing system is called X because it's the letter after "W", which was the original choice (because it's what the word "window" starts with), but it was already taken, so they went with X.

anyfoo

It looks like X was deliberately chosen to denote succession of W, not clashing with it:

    "The name X derives from the lineage of the system. At Stanford University, Paul Asente and Brian Reid had begun work on the W window system [3] as an alternative to VGTS [13, 221 for the V system [5]. [...] We acquired a UNIX-based version of W for the VSlOO (with synchronous communication over TCP[24] produced by Asente and Chris Kent at Digital’s Western Research Laboratory. [...] It was also clear that, although synchronous communication was perhaps acceptable in the V system (owing to very fast networking primitives), it was completely inadequate in most other operating environments. X is our “reaction” to W."
-- https://dl.acm.org/doi/pdf/10.1145/22949.24053

plorkyeran

> grep (global regular expression print), awk (Aho, Weinberger, Kernighan; the creators’ initials), sed (stream editor), cat (concatenate), diff (difference). Even when abbreviated, these names were either functional descriptions or systematic derivations.

If you asked someone unfamiliar with unix tools what they thought each of these commands did, diff is the only one which they would have even the slightest chance of guessing. It's ridiculous to complain about "libsodium" and then hold up "awk" as a good name.

DSMan195276

Yeah this definitely falls into the category of "I use them so they feel natural", there's nothing amazing about those names.

The underlying problem is that you now run into so many named things (utilities, libraries, programs, etc.) in a day and they all have to differentiate themselves somehow. You can't name every crypto library `libcrypto` for obvious reasons.

null

[deleted]

groos

Fine. Name it sodium-crypto.a or sodium.crypto.a or whatever. The author's complaint does hold water.

DSMan195276

You can, but then the names get needlessly long and one of the things we generally like (especially for command-line programs) is names that are short and easy to type. If we're going to make this argument then why not call the unix tools `concatenate`, `difference`, `stream-editor`, etc. Those are way better names in terms of telling you what they do, but from a usability standpoint they stink to type out.

Libraries and programs also have a habit of gradually changing what exactly they're about and used for. Changing their name at that point doesn't usually make sense, so you'll still end up with long names that don't actually match exactly what it does. Imagine if we were typing out `tape-archive` to make tarballs, it's a historically accurate name but gives you no hint about how people actually use it today. The name remains only because `tar` is pretty generic and there's too much inertia to change it. Honestly I'd say `cat` is the same, It's pretty rare that I see someone actually use it to concatenate multiple files rather than dump a single file to stdout.

The author is missing the fact that stuff like `libsodium` is no differently named from all the other stuff he mentioned. If he used libsodium often then he may just as well have mentioned it as well-named due to it's relation to salt and would instead be complaining about some other library name that he doesn't know much about or doesn't use often. I _understand_ why he's annoyed, but my point is that it's simply nothing new and he's just noticing it now.

kibwen

> The author's complaint does hold water.

Ironically, much like sodium itself, a substance of which the author seemingly possesses too much of.

QuercusMax

https://en.wikipedia.org/wiki/Libiberty was always my favorite ridiculous name. It was named so you can link it with -liberty.

lmm

A friend created a library called library which was kind of a converse to that (you had to link it with -lrary). It was funny for 30 seconds and then just annoying.

MarsIronPI

Used to be that Ruby's "rubygems" library had an alias "ubygems" so that when invoking ruby with the -r option (to require a library) you could say "ruby -rubygems". Sadly, they seem to have removed this alias library sometime around Ruby 2.4.

bee_rider

I’m not sure I like awk, sed, or cat, I think these are just names we’re used to, not good really. diff seems ok.

grep almost has an onomatopoeic nature to it… like, it sounds like you are grabbing or ripping the patterns out of the file, right?

fsckboy

>I’m not sure I like awk, sed, or cat

sed is not "stream editor" as it says above, it's "stream ed", where ed was another prexisting program which was essential and everybody knew it. its name was from "editor" shortened.

the sed commands are the ed commands. so, it's almost not possible to say "i don't like the name", it rests on a rich tradition, it's the stream version of ed. (ed commands are very similar to vi commands at heart.) it's sad the unix crowd never grokked teco because teco was already a programmable stream editor from a tradition that was not particulary streamy. it predated ed by a decade and would have fit the unix world perfectly. maybe it was already too big? I'm sure they would have known about it. Emacs does come from the teco tradition.

grep got its name from what the "grep" command would look like typed within the ed editor.

awk should not be thought of as a tool, it's a programming language, and has every right to the name as ada or pascal or haskell does.

back in those days, filenames had to be short, long names were not allowed, no space, and also, people liked typing short commands. concatenate shortened is... well, cat is as good a name as any. back then the word console was popular for the name of the terminal connected directly to the computer (frequently already logged in), perhaps con was already in use then, it definitely had a meaning already on DEC operating system machines as inherited on Microsoft machines, CON: is still console, and Bell Labs was using DEC machines.

btw at some sites there is a "dog" command. it's like the "cat" command, but it starts at the end of the file and then shows any additions. so, if you want to see if anything is being added to a logfile, you can "dog" the file (which is completely broken when VMS Windows dorks show up and decide to make everything binary) now the verb "to dog" in English means "to follow closely", so it's a cute wordplay on cat and means what it does, similar to "less is more". in less, you can accomplish something like "dog" (dog with more context) with the "F" command. these individual pieces of wordplay don't form a coherent network in the end, but as new things are invented over time they are fun and help you remember new commands till you get used to them.

rswail

> ed commands are very similar to vi commands at heart

vi was build on top of ed.

Ed was the Unix line editor, which is why all the commands after a colon have the form of "start,endcommand", eg "1,$p" would list all the lines of a file on your tty/decwriter.

1,$s/findexp/replace/g would s ubstitute all examples ("g") of findexp on the lines 1 through EOF

squigz

They're good names because they're short and easily recognizable

lmm

There are only so many short names to go around.

kazinator

cat is arguably from catenate, which is the smarter, shorter version of concatenate. By default, unadorned catenation is a joining (literally "making into a chain"), which is always together/with, so the con prefix is redundant. If you ever need a derivative of catenate that means splitting apart, you can coin discatenate, where the dis then plays an essential role.

Also, why is it that people are gregarious when they congregate, and not congregarious? Or why didn't they just gregate? There was such a Latin cognate verb without the con attached.

mojuba

However once you learn that sed means stream editor, you won't ever forget it. libsodium is forgettable.

pavel_lishin

> However once you learn that sed means stream editor, you won't ever forget it.

I feel like this is approximately the third time I'm learning this.

embedding-shape

I've been using Linux for almost 20 years, including sed a lot of that time, I'm sure I've heard it before, I must have, but when parent wrote it I was like "aah, that makes sense".

homebrewer

Don't forget that you need to know English for that to work. I'm pretty sure most Unix users don't speak English (most computer users definitely don't). I interact with people who know few words besides "hello" and "goodbye", and for them "sed" is a nonsense term, just a set of letters randomly thrown together. Same as e.g. Excel, a random token that means nothing.

sed is just an example, of course, the author's point doesn't hold much weight for many (most?) users globally.

Gigachad

Libsodium isn’t a tool or program the average user casually uses. Anyone who actually has to use it in their project even once will remember it.

How often do you forget what Firefox or Gnome are?

jolmg

That's part of the point, I believe. It's not about being always able to guess the function from first sight. It's also about the function and name serving as mnemonic to each other once you understand how it got named.

bigiain

I think perhaps the articles argument gets less strong then?

It's claimed grep is "well named" because even though it's not obvious when you first read it, that it being a contraction for "global reg ex print" and hence memorable. I'm not sure the same argument can't be made for libsodium which assuming the reader is familiar with NaCl (the same as the assumption that the previous reader is familiar with regex) then it's an equally memorable name for your crypto library.

There's always a consideration about the context the name is intended and likely to be used in. The article mentions engineering naming and "ibeam", but engineering has it's own technical names an jargon as well. Most people wont know what "4130 tube" means, but people who build bicycle frames or roll cages will - and they're likely to use the less specific term "chromoly" if the don't need to distinguish between 4130 and 4145.

In my head "libsodium" is similar - if you don't know what it (and NaCl) mean, you 100% should keep out of that part of the codebase.

pavel_lishin

"libsodium" -> "salt" -> "salting is something tangentially related to cryptography" is significantly better as a mnemonic than "awk stands for the author's initials".

bigiain

Same for grep - with, I guess, the proviso/assumption that you know what regular expression means, which might have been a fair assumption for the sort of people who had command line access to Unix systems in the 70s/80s, but may no longer be valid for developers under 30 who grew up with Windows and were perhaps trained in 6 or 26 week "bootcamps" that didn't have time to cover historical basics like that?

necovek

Regular expressions are more of a CS topic (regular languages), though common abbrevs of "re" and "regex" I've only seen in the wild pre and post my formal education in CS.

forrestthewoods

lol no. There are literally a hundred plus Unix tools and commands. I couldn’t tell you what 90% of them mean. I sure as hell couldn’t have told you what sed stood for. And if you asked me tomorrow I also wouldn’t be able to tell you.

C programmers are great. I love C. I wish everything had a beautiful pure C API. But C programmers are strictly banned from naming things. Their naming privileges have been revoked, permanently.

null

[deleted]

lanstin

creat(...)

wombatpm

Relevant XKCD

Https://xkcd.com/1168/

null

[deleted]

i_am_proteus

So few of us use physical tapes these days, but the "tape archive" (tar) remains ubiquitous.

Not entirely unserious: "awk" is a good name because it is three characters to type "rg" is better than "grep" because it is two fewer characters type

rswail

There's a reason why the basic Unix file commands are ls, cp, mv, rm.

They're easy to type on a TTY.

grep is from the ed command "g/re/p" which is g (all lines, short for "1,$") /re/ regular expression to search for, "p" to print the lines.

It still works in vi.

necovek

I would if they weren't so outrageously expensive (tapes and tape drives ;))

nonameiguess

It also seems wrong? libsodium explains the logic in its name right on its about page. It's a fork of NaCL (the chemical formula for sodium salt), which itself is a plain acronym for "networking and cryptography library." Google doesn't seem like a good example, either. Wasn't that meant to be an allusion to the very large number googolplex, as in Google exists to tame the unfathomably large amount of information on the web? The author may or may not like those names, but they have a logic just like grep and awk do.

j16sdiz

it should have been called chlorine for "Cl" is the cryptography library in "NaCL"

ezconnect

The problem with current naming is it now using common names like coffee and it's hard to search for them or relate to them. At least the old Unix naming are kinda unique and sometimes means something. Unlike today.

munificent

> This would be career suicide in virtually any other technical field.

This article would certainly disagree with you:

https://en.wikipedia.org/wiki/List_of_U.S._Department_of_Def...

> the Golden Gate Bridge tells you it spans the Golden Gate strait.

Is that even a meaningful distinction? Does anyone think, "Gee, I'd really like to cross the Golden Gate strait?" or do they think "I want to get to Napa?".

> The Hoover Dam is a dam, named after the president who commissioned it, not “Project Thunderfall” or “AquaHold.”

It was actually called the "Boulder Canyon Project" while being built, referred to as "Hoover Dam" even though finished during the Roosevelt administration, officially called "Boulder Dam", and only later officially renamed to "Hoover Dam".

The fact that Herbert Hoover initiated the project tells you nothing meaningful about it. Would "Reitzlib" be a better name than "Requests"?

> If you wrote 100 CLIs, you will never counter with a cobra.

But out in the real world, you could encounter a Shelby Cobra sports car, Bell AH-1 Cobra chopper, USS Cobra (SP-626) patrol boat, Colt Cobra handgun, etc.

> No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

When you open your medicine cabinet, do you look for a jar labeled "acetylsalicylic acid", "2-propylvaleric acid", or "N-acetyl-para-aminophenol"? Probably not.

It's a bad sign when all of the examples in an article don't even agree with the author's point.

moregrist

> > No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

The author is just wrong. Chemistry is fairly jam-packed with various cutesy names either to amuse the authors or because they’re attempting to make an algorithm memorable to the field.

Off the top of my head:

- SHAKE and RATTLE: Bond constraint algorithms.

- CHARMm: An MD package but you’d never guess it from the name

- Amber: Another MD package that you’d never guess from the name.

- So so many acronyms from NMR: COSY, TOCSY, NOESY

The list goes on and on and permeates most of the subfields in one form or another.

If you want really cutesy names, though, look in molecular biology.

kergonath

> - So so many acronyms from NMR: COSY, TOCSY, NOESY

My favourite: MAS, for magic angle spinning. Because every paper needs a bit of magic.

Scientists are the wrong population to pick if you want people who dislike silly names. They are everywhere because we don’t hate fun, and it does make things memorable. We’re also fond of naming things after people, which is as un-descriptive as it gets.

dylan604

Americium, Einsteinium, Unobtanium also show chemistry isn't so uptight as suggested.

jrowen

Unobtanium is fiction from the movie Avatar lol

Notoriously bad exposition I might add ("This is unobtanium. This is what we're here for!").

knallfrosch

America is named after some author writing about a "New World." America is sometimes erroneously used to refer to only one of the states instead of the whole continent.

Einstein doesn't tell me anything, unlike Müller (miller) and Schmied (Schmiede = Forge)

bigger_cheese

Physics has "Strangeness" and "Charm Quarks"

My own field Materials Engineering has:

"Hardness", "Toughness", Resilience", etc. which all describe different properties.

"Ferromagnetic" or "Ferrimagnetic best believe those are different.

Oreb

And astrophysics has MACHOs and WIMPs.

sweetjuly

and, of course, can't forget the derivatives of position after jerk being snap, crackle, and pop [1] after, you know, Rice Krispies.

[1] https://en.wikipedia.org/wiki/Fourth,_fifth,_and_sixth_deriv...

shaftway

> > > No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

Lawrencium has entered the chat.

yongjik

Off-topic, but it always amuses me that the sleepy town of Livermore, CA, known locally for its vineyards and an outlet mall, is immortalized in the Periodic Table, instead of the other greater places like New York or Chicago.

Chicago even had the world's first nuclear reactor, but no luck.

gowld

Most of your examples are software!

Also SHAKE and RATTLE describe the motion-simulation in the algorithm.

Acronyms are abbreviations for meaningful names.

moregrist

> Most of your examples are software!

Most of my examples are from computational chemistry, which is software, but (historically) written by chemists.

As one of those chemists (at least before my current work), I feel somewhat qualified to comment on my field and whether it always names things seriously or not.

But if you look around, fun terms are everywhere in chemistry or chemistry-adjacent fields. For example, PALM and STORM (from fluorescence microscopy) were almost certainly chosen because they were easy to remember.

> Also SHAKE and RATTLE describe the motion-simulation in the algorithm.

Not really. SHAKE and RATTLE are bond constraint algorithms to avoid simulating the fast degrees of freedom, typically in solvent.

In molecular dynamics, your time step is effectively set by the fastest degree of freedom (there’s a relationship with the Nyquist theorem here), so it pays to freeze out the vibrations of the O-H bonds in water when you’re simulating a larger system. SHAKE and RATTLE effectively freeze the bond and angle distances near equilibrium while allowing some relaxation.

The rest of the degrees of freedom are typically integrated with a larger time step using a method appropriate for the simulation ensemble (eg: one of the Verlet integrators, a Langevin integrator, etc).

> Acronyms are abbreviations for meaningful names.

Acronyms like XPS, EPR, NMR, etc are like that: dry, short, and meaningful.

But there are a lot that were chosen because they were entertaining to the authors or because they are easy to remember. Even in a technical field, marketing matters.

smallnix

> Acronyms are abbreviations for meaningful names.

I think often words are added to allow for a memorable name, such as crispr

> When Mojica and Jansen struck up a correspondence, they began tossing around catchy names for the patterns, and on Nov. 21, 2001, they settled on CRISPR—an acronym for Clustered Regularly Interspaced Short Palindromic Repeats.

https://nautil.us/the-unbearable-weirdness-of-crispr-236685/

jdranczewski

Following on on the DoD example, the field of astronomy is infamous for its terrible acronyms: https://lweb.cfa.harvard.edu/~gpetitpas/Links/Astroacro.html

Y_Y

> No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

But a meteorologist might:

https://en.wikipedia.org/wiki/STEVE

armadsen

Biology is another discipline where the author is wrong. See e.g.: https://en.wikipedia.org/wiki/Sonic_hedgehog_protein

BoppreH

I think the author makes a hard distinction between consumer products and infrastructure/engineering products. The Shelby Cobra has a funny name, but its engine is the memorably named V8. The Hoover Dam is a dam, and the Golden Gate Bridge is a bridge.

We can argue about namespace pollution and overly long names, but I think there's a point there. When I look at other profession's jargon, I never have the impression they are catching Pokemon like programmers do.

Except for the ones with Latin and Greek names, but old mistakes die hard and they're not bragging about their intelligibility.

leipert

Also the author misses how elements, species and astronomical objects are named. After random places, people, games, fictional characters, etc.

Names are just names. It’s nice if they are kind of unique and have no collisions.

BoppreH

Elements are numbered, species are messy categories to begin with and too numerous, and astronomical objects do have sensible naming[1].

But to me it's still unclear what a good naming culture would look like for programmers.

[1] https://en.wikipedia.org/wiki/Astronomical_naming_convention...

makeitdouble

> The Hoover Dam is a dam, and the Golden Gate Bridge is a bridge.

Nothing stops the author from using "Libsodium crypto lib" and "Zephyr RTOS".

themafia

> but its engine is the memorably named V8.

You're misremembering. It's the "Windsor V8." Or more specifically the "4.8L Windsor Ford V8."

BoppreH

Thanks, I'm not a car guy. I double checked with Wikipedia, but clearly I don't even know where I'm supposed to look.

kace91

>I think the author makes a hard distinction between consumer products and infrastructure/engineering products.

Which is really funny considering he talks about emacs.

kixiQu

I believe strongly in this counterargument:

https://medium.com/better-programming/software-component-nam...

Small summary: external identifiers are hard to change, so projects will evolve such that they are not accurately descriptive after time.

(Less discussed there, but: In a complex or decentralized ecosystem, it's also the case that you come across many "X Manager"/"X Service"/"X State Manager"/"X Workflow Service" simultaneously, and then have to rely on a lot of thick context to know what the distinctions are)

parpfish

I’ve been told multiple times in multiple jobs that I’m good at naming things, and I love whimsical names. A couple rules I’ve internalized are:

- if it’s hard to name, that’s a good sign that you haven’t clearly delineated use case or set of responsibilities for the thing

- best case for a name is that it’s weird and whimsical on first encounter. Then when somebody tells you the meaning/backstory for the name it reveals some deeper meaning/history that makes it really memorable and cements it in your mind

- the single best tech naming thing I’ve encountered (I didn’t come up with it) was the A/B testing team at Spotify naming themselves “ABBA”

mbg721

The winner takes it all!

zahlman

> I’ve been told multiple times in multiple jobs that I’m good at naming things, and I love whimsical names.

As long as you're naming products and features, rather than variables.

pksebben

I suppose it depends on your goals, but that scope restraint can be a good thing.

Do one thing, do it well, and while you're at it call yourself by the thing you do so you remember that's what you ought to be doing. A bit wordy for unix but you get the idea.

null

[deleted]

null

[deleted]

null

[deleted]

arscan

> “But memorable names help with marketing!”

> Sure, if you’re building a consumer product. Your HTTP client, cli utility helper, whatever library is not a consumer product. The people who will ever care about it just want to know what it does.

——

It sounds like the author doesn’t view themselves as a consumer in this relationship, that they are immune to marketing, and that what they are advocating for isn’t just another marketing tactic. I’m not sure if any of those are true.

My experience with areas that use functional names to describe things is that you end up in a sea of acronyms (the functional-based names are a mouthful!) and you end in an arguably worse situation (did you say ABDC or ADBC, those are two completely different things).

ElevenLathe

I agree. I've worked in places that discourage "cute" names and the result is often things like having to decide between using CoreMainHttp and MainHttpCore. Or worse, two things with exactly the same name, but two different APIs, with projects sometimes taking both as a dependency at the same time. Or even obsolete parts of the org chart encoded into dependency names, like "DataOrgUtils" when the "Data Org" stopped existing several reorgs ago, when our current VP was an intern and nobody else even worked here.

Without some central control of names though, even "cute" ones tend to converge on the same handful eventually: Phoenix (and other classical allusions like Plato's Cave, etc.), Keymaster/MCP (and other 80s childrens' movie references), Simpsons characters, Star {Trek,Wars} references. These are all attractors for the kind of people that tend to be in IT/SWE even if the actual namespace (all possible ASCII-expressable words) is much larger.

ak217

Exactly - the author thinks all these tools just materialized fully formed in their software ecosystem instead of surviving years of competition with other, less memorable tools. It takes many years of work, luck, and yes, marketing to get to the point where any of these tools are, and a memorable name can absolutely make the difference between support and oblivion.

MerrimanInd

> This would be career suicide in virtually any other technical field.

The cognitive load is unavoidable and in some ways worse in industries with highly technical names.

At one point in my career I was an engine calibrator at a large automotive OEM. Our lexicon included physics industry terms (BMEP, BTDC, VVT, etc), a large software package where every variable, table, and function was an acronym (we had about 75k tunable parameters, each with an acronym), and all the internal company jargon and acronyms you'd expect in a large corporation. But every name was as technical and functional as the author would desire.

During my first month I was exhausted. I would doze off in afternoon meetings or pass out in my car as soon as I pulled in the driveway. I finally mentioned this to a more senior coworker and his insight was that my brain was working overtime because it was busy learning another language. He was entirely right! The constant mental load was a very real and tangible load. He relayed an anecdote when he went to S. America on his honeymoon and despite him and his wife having taken ~4 years of HS/college Spanish the mental work they had to do to function basically nixed half the daily activities they had planned due to exhaustion. That was what I was experiencing.

The idea that more technical and specific names reduces mental load does not track with my experience. The complexity is intrinsic not incidental and I don't think it has much to do with the specific names chosen.

YurgenJurgensen

In mobile telephony, one of the first things new hires are told is “don’t even try to work out what all the acronyms stand for; it won’t help”. You just have eat all the alphabet soup. Worse is that they nest themselves. You can have acronyms where every letter stands for another acronym. Writing a thousand words without using a single noun is easy. And of course all the short ones are overloaded. Is an AP an Application Processor or an Access Point? Depends on which subfield the person you’re talking to is from.

But they’re a necessary evil, since MSISDN is still less cumbersome than Mobile Station International Subscriber Directory Number.

jaggederest

I thought this was a wonderful example of "some things are just intrinsically challenging to represent in your brain":

https://www.youtube.com/watch?v=6ZwWG1nK2fY

Apparently they've found structural differences in the brains of people undergoing London's famously difficult taxi qualification.

I think I saw a video that said people studying for "the knowledge" as it's known report massive fatigue.

jchw

Sometimes I am baffled at what gets onto the frontpage at HN, reminding us all that the people who vote stories and the people who comment on them are less of an overlapping group than you might think. I can understand the desire to have names that are more descriptive, but to claim we have "lost the plot" while holding up names like "awk" is contradictory at best. It sounds more like this person just had a personal vendetta against cute sounding names, not against the names being uselessly non-descriptive. In my opinion, the way this post is framed at the outset is misleading.

— This comment brought to you via Firefox, which obviously from its name, is a web browser.

lr0

> but to claim we have "lost the plot" while holding up names like "awk" is contradictory at best

My argument is that even a name like awk is much more relevant to the people who used this software back then, of course it was not the best way to name it, but at least it held some meaning to it. Unlike modern software, awk and others were not written with the consideration of a wide user-base in mind. Regarding whether we "lost the plot" or not, I believe that we did, because as mentioned, in the 80s there was a current of people who named software conventionally, and up to the 2010s, the names still used to hold some rational even when word-played or combined with cutey names.

> It sounds more like this person just had a personal vendetta against cute sounding names, not against the names being uselessly non-descriptive.

Not at all, I find it quite fun, just unprofessional.

--

Sent by replying to an automated RSS email, via msmtp (light SMTP client, which is unlike firefox, not a consumer product and its name has to do with its function).

jchw

> My argument is that even a name like awk is much more relevant to the people who used this software back then, of course it was not the best way to name it, but at least it held some meaning to it. Unlike modern software, awk and others were not written with the consideration of a wide user-base in mind. Regarding whether we "lost the plot" or not, I believe that we did, because as mentioned, in the 80s there was a current of people who named software conventionally, and up to the 2010s, the names still used to hold some rational even when word-played or combined with cutey names.

I don't personally get it. I can see the argument for names that are descriptive, because a descriptive name might be useful. Meanwhile though, a name like awk is only useful if you already happen to know what it stands for, which to me seems a little silly. Relevant? Maybe... But to what end?

> Not at all, I find it quite fun, just unprofessional.

Why do you consider it "unprofessional"? This seems like a cultural thing. For example, in Japan, it seems like it is not unusual to see cute illustrations in otherwise professional contexts. I am not sure there is a standard for professionalism that is actually universal.

Disregarding that, okay, fine: let's say that naming software after irrelevant things is unprofessional. Why should we care?

Software developers have spent at least the past couple decades bucking trends. We went to work at white collar offices wearing khakis and t-shirts, with laptops decked out in stickers. Now I'm not saying this is all software developers, but it is certainly enough that it is a considerably recognizable part of the culture.

Professionalism, in my eyes, is descriptive, not prescriptive. If professional software engineers normally name things with cute nonsense names, then that is professional for our industry.

I can see the usefulness in descriptive names because they serve a purpose, but names that are merely somehow relevant but otherwise don't tell you anything useful seem just as useless as non-sense names, and justifying the distinction with "professionalism" feels odd.

> Sent by replying to an automated RSS email, via msmtp (light SMTP client, which is unlike firefox, not a consumer product and its name has to do with its function).

Note how this also neatly works as a strong argument against descriptive names. RSS? msmtp? We're now drowning in acronyms and initialisms. I don't particularly have anything against these names (I mean, I use msmtp and the name certainly doesn't bother me) but the utility of the name RSS is quite limited and the vast majority of people probably don't really know what it stands for (to my memory it is Really Simple Syndication, but it may as well be just about anything else, since that doesn't help me understand what it is truly useful for.)

But you do hit on an interesting point that probably helps explain to some degree what's going on here: even for small CLI utilities, more often than not programmers doing open source are actually bothering to work on the marketing and deployment of their software. When I was younger a lot of open source was still more decentralized, with many programmers just dropping tarballs periodically and Linux distros (and others) taking care of delivering the software to users in a usable form. Part of trying to deliver a holistic product is having a memorable name.

msmtp may not be developed as a product, but in practice, almost all software is like a product. Someone is a "consumer" of it. (Even if that person is also a producer of it.) People get "sold" on it. (Even if it's free.) How it's marketed definitely depends on the sensibilities of the developers and the target audience but I'd argue almost all software is "marketed" in some form even if it is non-commercial and not packaged like a product. (Even something like GNU's landing pages for things like Coreutils is arguably a very, very light bit of marketing)

The actual truth is software programs that have more care put into marketing are arguably more professional. The professionalism of having a "relevant" name is rather superficial in my eyes, but having concise "marketing" that "sells" your software well to its intended audience and provides good resources for users is professionalism that makes a difference. Likewise, plenty of things delivered more like products do have relevant names! For example, KeePass and SyncThing come to mind immediately.

So whether the next great email server suite is "SMTPMailSuite" or "Stalwart" is mostly immaterial, but I'm not surprised when marketing-concious developers choose memorable names. (Obviously in case of Stalwart, there's a company behind it, so having good marketing is absolutely in their best interest.)

Another downside of a descriptive name is that software evolves over time and a name that is too descriptive could stop being relevant eventually. Off the top of my head it's hard to think of a specific example, but you can see software that evolves this way all the time. (One example on the Linux desktop is how KWin went from being an X11 Window manager to a full-blown display server compositor during the Wayland transition; but that name obviously still works just fine.)

elktown

Name it after your favourite football players and functional names will be enforced within the first 3 reviews.

JackFr

> IUPAC nomenclature ensures that 2,2,4-trimethylpentane describes exactly one molecule. No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

Well if they work for a drug company they will say “Let’s call this phlogistotheremone but sell it under the name Zyphyrax so that doctors and patients will refer to the same medication by different names.”

dillydogg

>“Descriptive names are boring!”

>>Yes, and surgical instruments are boring.

I'm absolutely certain that this person has never been (awake) in a surgery suite because all of the tools people use have eponymous names.

There are a billion little grabbers that all have silly names like Adson, Allis, Babcock, Kocher etc. which are all meaningless until you just know what they are. And don't you grab the Mayo scissors when they ask for Metzenbaum. In med school we had a flashcard deck that just had a picture of the tool and what it is called on the other end.

In the end, I think the author has a point, but then doesn't really make it that well. I think using awk as a good example is a bit silly. diff is a good one though!

necovek

Or had a Kirchner pin inserted.

ctoth

> There’s an odd tendency in modern software development; we’ve collectively decided that naming things after random nouns, mythological creatures, or random favorite fictional characters is somehow acceptable professional practice. This would be career suicide in virtually any other technical field.

I'm charmed by the lack of truth in this beautiful sentence. Top of mind for me, at least.

elzbardico

Ok man, now give me a moment, I need to administer my weightloss weekly injection of L-Histidyl-2-methylalanyl-L-alpha-glutamylglycyl-L-threonyl-L-phenylalanyl-L-threonyl-L-seryl-L-alpha-aspartyl-L-valyl-L-seryl-L-seryl-L-tyrosyl-L-leucyl-L-alpha-glutamylglycyl-L-glutaminyl-L-alanyl-L-alanyl-N6-(N-(17-carboxy-1-oxoheptadecyl)-L-gamma-glutamyl-2-(2-(2-aminoethoxy)ethoxy)acetyl-2-(2-(2-aminoethoxy)ethoxy)acetyl)-L-lysyl-L-alpha-glutamyl-L-phenylalanyl-L-isoleucyl-L-alanyl-L-tryptophyl-L-leucyl-L-valyl-L-arginylglycyl-L-arginylglycine

andoando

1 for the money 2 for the green 3,4-methylenedioxymethamphetamine

benrutter

> Our field deserves better than a zoo of random nouns masquerading as professional nomenclature. Clarity isn’t boring, it’s respect for your users’ time and cognitive resources.

I felt a little guilty at first, I maintain a project called Wimsey (it's a data testing library but you couldn't guess that) and at work my team regularly enjoys fun/silly names.

Trying to defend myself, I was thinking about various logical responses to this article: non-descriptive names don't become out of place when a projects goals drift; descriptive names will lead to repitition; etc.

If I'm honest though, I think I just like software to have a sense, even a tiny one, of enjoyment.

The software I use everyday, like Cron (named after a greek god of time); Python (named after a comedy act) and Zellij (names after a tiling craft) all have fun, joyful names that tell me someone loved and cared about these projects when they built them.

I need to learn these tools beyond just "x does y category of thing" anyway, so I don't mind learning these names. And it makes software engineering just a bit more fun than using "unix-scheduler", "object-oriented-scripting-lang" or "terminal-display-manager".

I love working in a field where people are passionate about their craft. Stern professionalism doesn't sound like something I want to trade that for.

It's a human trait to name the things we love, that's the exact reason why pets typically have names like "cookie" and not "brown-dog-2".

wredcoll

Naming your library "data-testing-library" would be useful... until there's a second one at which point the specific name effectively becomes meaningless.

marc_abonce

Case in point: @testing-library (the JS one for React, Vue, etc.)

Besides, this type of overly generic names makes it harder to search relevant stuff, which makes them more annoying to me than silly names.

general1465

I always get stuck into .NET naming structure Project.Parser.Pcapng, it is great for projects, but it is utterly useless for standalone naming

layer8

Some people are passionate about being professional in the sense of doing things competently and expertly. Cuteness is inherently a mental distraction from what you really care about in the craft, which is why it appears tonally inappropriate. The desire to add some sort of cuteness is taken as an indication that the person apparently doesn’t derive enough joy from the workmanship itself. In other words, a lack of caring about and being fulfilled by the actual work, so that you need to add something “fun” on top.

necovek

But that's trivially provable to not be true. You can easily be both: dedicated and professional in your work, and fun and flimsy where possible.

I mean, all the funny names of great software in this thread and even OP are a testament to that.

shermantanktop

And it’s a lowkey flex. Look, I can be technical wiz and have a sense of humor at the same time!