Why Sponsor Oils? | blog | oilshell.org
Please read the new 2023 FAQ first. I wrote it a few days ago because I realized that this post doesn't make sense without it!
Let's go over the project renaming I mentioned in the last release announcement.
Practically speaking, we needed a name for the new C++ tarball (formerly oil-native), but there are more reasons, explained below.
The project is now "Oils" or "Oils for Unix", which contains OSH and YSH.
|Old Name||New Name|
|Oil||Oils||Short Project Name|
||Globally Unique Project ID|
OSH or OSH language,
|Shell that runs POSIX/bash scripts|
Oil or Oil Language,
|Shell influenced by Python,
Some things to notice:
It was confusing that the project was called "Oil", and a part of it was also "Oil".
Saying "OSH language" and "Oil language" was an awkward way to distinguish the language and the project. Now it's just OSH and YSH.
OSH no longer stands for "Oil Shell".
You can think of it as "Oak Shell", which is supposed to remind you of the strength and endurance of shell :-) But officially it's just OSH, similar to ZSH.
YSH is also just "YSH", but you can think of it as "Yam Shell". More details below.
Unlike "Oil" and "OSH", search engines will be able to find YSH and "Oils for Unix".
"Oils for Unix" is like "Golang" as a name for "Go". It's a globally unique name that can be used everywhere.
"Oils for Unix" reminds me of this picture. Do you have any other pictures in your mind? Let me know in the comments.
Source: The Unix Magic Poster (
This busybox-like structure reflects the names:
/usr/local/bin/ oils-for-unix # an executable file osh -> oils-for-unix # symlink ysh -> oils-for-unix # symlink
More things to name:
https://www.oils-for-unix.org/, which I bought.
sudo apt-get oils-for-unix, and the equivalent for many other distros. Doesn't exist yet.
github.com/oils-for-unix/oils. When the context is clear, we'll use the shorter "Oils" name.
oils-for-unixeverywhere you can, not
We need a name for the new C++ tarball, and the new executable file.
The Python tarball was called
bin/oil.ovm. We can't replace it in a single release, because there are still differences.
To delineate what's stable and what's not.
Reduce confusion about the compatible shell vs. new shell.
I've seen people write things like "fish is more POSIX-compatible than Oil", which makes me sad!
But I see where they got that idea. They assumed OSH == Oil Shell == Oil, so they didn't make the distinction between the two modes. (Reminder: How is it possible for OSH and YSH to be in the same interpreter?)
There will be more parts to the project — more "Oils".
The project is no longer just a shell:
Bad connotations of "Oil" and "Oil Shell".
The name "Oil" was intended as an analogy to mechanical systems. Oil makes your systems work together more smoothly.
But it reminds many people of the energy commodity, and the big industry behind it. "Oil Shell" further seems to remind people of the company "Shell Oil". My brain doesn’t work that way, but it’s come up a surprising number of times, over a long period.
The search results for "Oil Shell" are also polluted with "Shell Oil".
The origin of YSH was "the shell with haY" — Hay being an important new part of the project.
Hay stands for Hay Ain't YAML, which is why I suggest "Yam Shell" as a mnemonic. It sounds like the thing it's not -- YAML :-)
You can also think of it as:
"Oils" came about because I don't want to "break" the project by giving it a completely different name. Making it plural is a subtle change that also results in a different connotation.
I added "Oils for Unix" so web searches work, and so we have a globally unique ID to use.
The appendix has more notes on the choice of names.
I think it's better to "break everything at once" than to spread it out over a long period. So here's advance notice of more changes.
Again, I'll try to make the incompatible changes first, and then we can compatibly improve YSH over a longer period.
Your feedback is improving the language! I hope to write more about YSH this year, since I know many readers are curious.
I thought of our versioning scheme like CPython:
To simplify things, I'm thinking of changing it to CalVer, i.e. calendar versioning.
So we would release
oils-for-unix-23.04.tar.gz in April 2023. Let me know what you think about this!
I'm thinking we should do this in one big release? The Python and C++ tarballs will both be affected.
yshsymlink to the Python tarball. In the C++ tarball, it's already
The renaming could be a bit painful, but I hope this post explained the reasons for it. If you haven't had enough navel-gazing, there are more details in the appendix!
Next, I want to write An Opinionated Guide to Shell Programming next, based on this thread:
I pronounce them as acronyms:
I want to acknowledge these great suggestions from readers:
loamfrom Aaron on Zulip, which got a +1. The connotation is a "rich soil".
gush(gradually upgradeable shell) via e-mail, and
oilare symlinks to the
boil, and might use that name for something in the future!
I also want to acknowledge the big lobste.rs thread on naming, with over 100 comments.
There was a lot of confusion about the project, so I wrote the 2023 FAQ to address issues that came up.
For example, the top suggestion was to "just use one name", which isn't possible. The project has had 2 symlinks and an executable for probably five years now!
I hope that things will become clear over time. We definitely need better docs, but it's also important to stabilize both OSH and YSH.
People pointed out problems with the new names, and I don't disagree. But there wasn't anything clearly better, within our tight constraints.
YSH is a little boring.
This is the main downside I thought of, but I think the name will eventually take on the connotation of the project. For example, "Python" doesn't sound like "snakes" anymore, but it did for more than a decade.
"Oils for Unix" is clunky.
Probably true, but you can say "Oils" when the context is clear. Pretty much every globally unique name like "golang" will be clunky.
Plural "Oils" is awkward.
Yes, it's taking me awhile to get used to. But I would think of it like coreutils or "findutils". Those are projects with multiple tools.
OSH still sounds like "Oil Shell", which sounds like "Oils for Unix".
This is true, so I suggested "Oak Shell" to get rid of that connotation. Or honestly, it's OK to keep thinking of "Oil Shell". Our domain name might
oilshell.org for awhile.
YSH is something new, so it can have a new name.
OSH isn't searchable, like YSH is.
This is true. There's an outside chance we could rename it to
gush or something, but I think that will cause too much pain in practice.
Oils for Cloud?
I wanted another "Oils for X" name, but none of them point to our domain when Googled.
Ultimately, our choice is practical: I changed my Twitter handle to "Oils for Unix", and nobody noticed it was different. It's recognized as the same project.
And if you Google "Oils for Unix", it already turns up our page.
If I renamed the project to "loam" or "coil", neither of those things would be true.
And again, YSH is also very searchable. That's surprising for a 3 letter name!