Why Sponsor Oils? | blog | oilshell.org

Reasons for the Big Renaming to Oils, OSH, and YSH

2023-03-31 (Last updated 2023-05-04)

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.

Table of Contents
What are the new names?
A Picture
Where are they used?
Why rename?
Immediate Reasons
Long Term Reasons
Why the names "Oils" and "YSH"?
Other Breaking Changes
YSH Language Changes
Date-Based Versioning
TODO List
Conclusion
Appendix
Pronunciation
Best Suggestions
Problems With the New Names
A Practical Choice

What are the new names?

The project is now "Oils" or "Oils for Unix", which contains OSH and YSH.

Old Name New Name
Oil Oils Short Project Name

oilshell

oils-for-unix

Globally Unique Project ID

OSH or OSH language,
bin/osh

OSH, bin/osh

Shell that runs POSIX/bash scripts

Oil or Oil Language,
bin/oil

YSH, bin/ysh

Shell influenced by Python,
Ruby, JavaScript

Some things to notice:

A Picture

"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 (jpmens.net)

Where are they used?

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:

Why rename?

Immediate Reasons

Long Term Reasons

Why the names "Oils" and "YSH"?

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.

Other Breaking Changes

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.

YSH Language 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.

Date-Based Versioning

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!

TODO List

I'm thinking we should do this in one big release? The Python and C++ tarballs will both be affected.

And then:

Conclusion

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:

Appendix

Pronunciation

I pronounce them as acronyms:

Best Suggestions

I want to acknowledge these great suggestions from readers:

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.

Problems With the New Names

People pointed out problems with the new names, and I don't disagree. But there wasn't anything clearly better, within our tight constraints.

A Practical Choice

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!