Programmers and software developers lost the plot on naming their tools
17 points by lr0
17 points by lr0
FORTRAN (Formula Translation)
I would have literally never guessed this in a quintillion years. It's effectively whimsical, just for 1957's whimsy instead of 2025's.
When you encounter “high-entropy alloys” or “shape-memory polymers,” the name itself conveys information.
"shape-memory polymers" is a category of polymers, the same way "configuration management" is a category of tools, not a product. If you look at the products sold by a shape-memory polymer manufacturer like Covestro AG, you get a list of random sounds like "Apec", "Bayblend", "Makrolon" etc.
I'm not claiming that this article is entirely about aesthetics, but it feels preoccupied with the aesthetic of Serious Engineering. Names in other disciplines are often dubiously mnemonic, and you still need domain knowledge to understand what they actually are.
(Compare with the ethos of Comfy Software (lobsters), which I am on the record as vibing with more.)
We could have used namespaces, prefixes, or compound terms like every other engineering discipline has done for centuries.
One problem is that anyone can grab the name http-request-validator. What if it's not fit for purpose? What if I want to try an alternative approach that might not be upstreamable? What if I don't get along with the author? We could namespace packages, à la GitHub, e.g. jdpage/http-request-validator, but when you're scanning a list of dependencies this is even less memorable than a cute name, especially if someone has authored multiple packages.
ADDENDUM: It's probably relevant that software engineering descends from computer science, which is a branch of mathematics, which has a history of whimsical names.
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.
Really? Physicists come up with particles called “quarks” (a made-up word from Finnegans Wake) that have properties like “charm” and “strangeness”. Mathematicians have “imaginary” and “perfect” numbers, and generic words like “group” and “ring” refer to very specific concepts. Biologists name species after Latinized in-jokes (there's a beetle named after Gary Larson), and there are a lot of genes with silly names like sonic-hedgehog. Astronomers have been naming stuff after mythological creatures for millennia. There’s a desert plant called “Boojum” and a cryptographic construct called a “Snark”, both from Lewis Carroll.
The pattern was clear: names conveyed purpose or origin.
Even if this was true(¹), how does this help lowering the cognitive tax? C coming from B, itself coming from BCPL doesn't help me if I don't already know about C, because it's not obvious. How does awk being the initials of its creators help me identify what I can do with it? Same thing with COBOL or FORTRAN: unless the full names are used, their speciality isn't obvious. And even then, the names are very generic.
(¹) I don't think it really is. What can you do with a Macintosh? Or with Windows? What's Ada, is it a language to automate looms? That curses library sounds dangerous.
I don't think it really is. What can you do with a Macintosh? Or with Windows? What's Ada, is it a language to automate looms? That curses library sounds dangerous.
Yeah, the author has completely lost the plot themselves. At MIT itself there was a long history of whimsical names going back to at least the sixties. For example, SHRDLU, a program named after the first letters on a keyboard, was written in the Planner programming language. Then there were follow-ups to this language named Conniver and Scheme(r). And in the seventies and eighties there were two Emacs clones named EINE and ZWEI, which are acronym puns: Eine Is Not Emacs and Zwei Was Eine Initially.
I think this type of whimsical wordplay goes back to the hacker and Tech Model Railroad Club culture.
And getting rid of it now, of all times, is the hardest: there's more open source out there than ever, and many reimplementations of the same idea. Not every HTTP library out there can be named requests...
Just responding the the bullet list
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.
Nope, you’re building a consumer product if you aren’t building it for yourself. The fact that companies or other projects are the users does not mean they aren’t consumers
“Descriptive names are boring!” Yes, and surgical instruments are boring. Boring is fine when clarity is paramount. This isn’t creative writing class.
The purely descriptive names were taken 30+ years ago, and even then most of the names that “indicate what they do” quite frankly do not. “Emacs” is not a name that says it’s an editor, nor vi or vim, et
“It’s just for fun!” Your fun has externalities. Every person who encounters your “fun” name pays a small tax. Across the industry, these taxes compound into significant waste.
What actual cost is there? This just sounds like elitism pure and simple
“All the good descriptive names are taken!” We could have used namespaces, prefixes, or compound terms like every other engineering discipline has done for centuries. We have the technology. But even if you can not do that, at least make the name has anything to do with the product, put a “DB” post-fix, do some word play like how “magit” does. If you couldn’t not be clear, you could have made it relatable at least.
Different products with essentially the same name, sans spelling, capitalization, punctuation, implied phonetics are actively worse for everything
The middle ground here is non-dry/academic names that also convey meaning. Examples include python's "requests" library and rust's "chrono" library. These are both memorable and related to the functionality they provide. IMO this is preferable to the very dry alternatives ("httplib", "datetime"), but not always possible to achieve.
I'm of two minds with this - for one I love whimsy and if you can get a good name-sake for your open source tool then by all means go for it. But if I'm working on internal tools for work we tend to opt for very descriptive names over pet names. These tend to become acronyms and then we have an internal shorthand to use for those tools everywhere.
A good example of trying to remember names is all the different tools that work with Grafana - including the tools made by Grafana themselves. Trying to remember Mimir, Prometheus, Tempo, etc and what their purpose is and how they fit into our monitoring and observability stack is a lot of metal load. Of course, this would likely change in my mind the more I talk about and use these tools.
A counter example is all the AWS products. If you're not in the AWS world saying something like "We publish the container to ECR an then deploy into ECS on Fargate behind an ALB." All of those names (save for maybe Fargate) are very descriptive names but also end up lost in the sauce of acronyms.
So I guess my point is that there is a balance between pet names and extremely literal technical names and the real problem is one's exposure to either.
This starts with an anecdote from a GNU/emacs conference.
Yes and no. I can understand why a self-respecting software professional might run away from a tool like ChilliCream Hot Chocolate based on the name alone. However, I’m not sure that more projects with names like PostgreSQL will clear things up. It’s a double portmanteau, the origins of which are not immediately obvious—I doubt anyone fires their computer up in 2025 and says, “Now, where can I find my Ingress successor with SQL support?” It only feels obvious and familiar today because the tool itself is obvious and familiar. I doubt that if PostgreSQL has been named Slonik it would be any less popular.
Another road one could go down is Objective C style naming like:
HMCharacteristicValueLockMechanismLastKnownActionUnsecuredUsingPhysicalMovementExterior
or:
CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter
That way lies a culture of Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz, which is fine in moderation but difficult to read in excess. One might argue for more mathematically based words like the good old days, but even the ones we already have (function, isomorphic, scalar) are really just metaphors that mean something fundamentally different in math.
Naming is famously hard. I had to go up and down the entire etymology tree multiple times, not finding a suitable (easy to pronounce and slightly comprehensible) word that isn't already taken. Find me some good names for a (lightweight) markup language or a programming language. Given the number of programmers out there, the entire namespace, so to speak, is saturated, with all low hanging fruits been taken away. It'll only get more difficult in time to come. Either you give up on clear and accessible names or accept the possibility of name collisions.
English as a second language was difficult for me, for I started with the formal, academic register (which I still continue to use to this day) and learnt more about the culture later. Whimsical names, or rather their underlying connotation, was wholly or partly inaccessible to me and I treated them like numeric identifiers. Thus, in remembrance of my past self, I'd not like to impose the same onto others. So, when you do use such names, please explain the connotations for the non-native speakers out there when it's not entirely obvious.
As the author puts it, the cultural shift has already happened and it wont be practical to enforce any such norms, now or later. We can only hope to transfer such cultural, tacit knowledge to future generations.
I think the next big language should have two-tier package manager namespace and new packages shall be created in 2nd tier and only get promoted to a descriptive name if they are the most depended upon in that category for at least 5 years.
Early adopters tend not to be that great at making good packages, but they do exhaust the namespace very rapidly.
Meh. If I can't have fun coming up with a name for a project I wouldn't even start it. I like programming and I like having fun while doing it.
To probably the chagrin of the author I almost always start by attempting to generate a name from a recursive acronym.
at least some current was trying to make some sense in the 80s; grep (global regular expression print), awk (Aho, Weinberger, Kernighan; the creators’ initials),
wordplay is infinitely better than the author's initials
“What I’d like to see in Emacs”. One of the interesting points Mr. Stallman pointed out in this talk was “memorable names”
on the contrary, I wish the (neo)vim community emphasized on wordplay names like the emacs community does - there are very few people other than tpope who do this
I think it's possible to make an argument for intelligible names, but that the claims around recency are essentially ahistorical.
Using the post's own motivating example of Richard Stallman: one of GNU's most central libraries is named libiberty seemingly solely so that the GNU folks could feel clever while writing -liberty as a linker argument.
If there's any other field that would be even worse about this than us, it would be pharmaceuticals.
(Try having a game of "Antidepressant or Tolkien Character". It's surprisingly hard - even for an antidepressant user who used to be a huge Tolkien fan.)
I've grown to mostly not care about this. There are some obviously bad names like utoipa, which hurts my brain whenever I see it, but ultimately the author was just having a bit of fun. The examples in the article are mostly innocuous in my opinion.
However: I wish we would stop naming things after real people or real names unless it's someone the author knows. I don't care about Linux, Debian, or MySQL, but abstractly naming your software Hugo, Jenkins or Julia just feels out of place.
I also prefer names making some sense in context of what the projects do. Maybe there is middle-ground in adding short descriptive subtitles to fancy naming.
When I was working at $PREVIOUS_JOB, I would blog about the projects i was working on, and I came up with names that definitely fell into the "cute" category, but in a few cases, were more descriptive (if you had some popular US culture knowledge) than the actual internal name. For instance, the service that dealt with the business logic I called "Project: Lumbergh" [1], but internally at The Enterprise was called "TPS" [2]. There was the project I named "Project: Sippy-Cup" that dealt with SIP (Session Initiation Protocol), which was better, in that it has "SIP" in the name, than the internal project name of "NIE". [3] A third example was "Project: Waldo" [4] which internally we knew as RJS, or "Remote Job Service."
There are some others, but the chain of logic gets quite convoluted.
[1] Based off a manager's name in the move "Office Space".
[2] Also a reference to "Office Space", but the original developer said was the "Transaction Processing Service" as a cover story. So yes, we did generate TPS reports.
[3] A misspelling of "Ni", from Monty Python's "Search for the Holy Grail." I wrote the thing, and I don't even remember how we came up with that name.
[4] After the Robert Heinlein story "Waldo", about a man named Waldo who invented remote manipulators.
This hit home for me. I realize I need to go to an about page too often just to see what something is, whether on hearing about it in passing, or wondering what that forgotten thing in my homebrew update list is.
If it was obvious what this, or libdjb, implements, it would have the most GOATed name ever: http://www.fefe.de/libowfat/ ;) The pun being you compile against lightweight library with -lowfat ;)
I also dislike modern names, and it really sucks, because to me Astral is maybe the best, but has the worst names. One can imagine ruff being rough on your code (with love) but uv? And ty sorta makes sense as an abbreviation of type, but I got it off a podcast transcript it's pronounced t-y. Why?
When the descriptive names are taken and the fantasy-figure names are weird and/or taken, what remains at the bottom is this. Everyone should do their best with coming up with mnemonic names, so it is closer to creative writing than the article implies.