Why Sponsor Oils? | blog | oilshell.org
Note: I plan to move this post to our new domain https://oils.pub, which reflects the project's renaming.
I started writing an announcement for Oils 0.23.0, which may be the longest post ever. A lot has happened in 3 months!
But to kick off the new site, I want to write a few short posts. I have these drafts:
I put a screenshot of our Zulip channels to the right, because it's now where everything happens.
Let's start out with a brief review, and then I'll show the tables.
The core of the Oils project is:
2016 - OSH
2019 - YSH
2023 - J8 Notation
You can use OSH by itself, YSH by itself, or upgrade from OSH to YSH.
Let's break YSH down into 7 parts. Some of them correspond to chapters in the Oils Reference.
For more detail, see A Tour of YSH.
Part | Notes | Example |
Commands and Words | simplified shell |
|
Expressions | syntax like Python/JS |
|
Types and Methods | the runtime model |
|
Procs | procedures / processes |
|
Funcs | pure functions |
|
express data with code |
|
|
composable patterns |
|
To make something useful, we need more than the 3 languages! There are actually 10 more parts to the project, which I sketch in this table.
Each part is loosely associated with Zulip streams. Please join https://oilshell.zulipchat.com/ if interested.
Some parts have named subprojects. I've mentioned some of them on the blog, and others only on Zulip.
Part | What is it? | Subprojects | Zulip streams |
Core Languages |
|||
OSH | compatible shell | POSIX, bash compat | #oil-help #oil-discuss-public #language-design |
YSH | new shell | catbrain † | #language-design |
J8 Notation | text formats | JSON8, J8 Lines, TSV8, NIL8 † | #data-languages #doc-languages † |
Protocols | inter-process communication | BYO | #protocols |
Essential Parts |
|||
Interactive Shell | UI, maybe GUI | Completion, Headless shell, Pretty Printing | #shell-autocompletion #shell-gui |
Standard Library | for OSH and YSH | Task files, Testing, Flag parsing | #api-design |
Language Tools | highlighter, formatter, tree-shaking | vim, micro-syntax | #tools-for-oils |
Apps | Show that Oils works | #projects-with-oils #containers #nix |
|
Writing - as important as code |
|||
Docs | Oils Reference, User guides, Design docs | #oil-documentation | |
Blog | New oils.pub website | #blog-comments #blog-ideas #blog-ideas-mentioned |
|
Under the Hood |
|||
Shell Runtime | shared between OSH and YSH | syscalls, signals, UTF-8, integers, floats | #shell-runtime #performance #big-integer |
C++ Translation | for speed | mycpp, Zephyr ASDL, Pea + Yaks † | #performance #zephyr-asdl #yaks † |
Research † | Experiments that may or may not "graduate" | Evolution of Soil CI | #distributed-shell #server-side |
|
† experimental ideas
I'm glad I took the time to make these tables. What I take away is:
What's next? As mentioned, I want to write these posts:
Oils Is Still Small and Flexible
Missing Retrospectives on Oils
Oils - Grand Ideas and Fiddly Details
Oils 0.23.0 - User Feedback, Bug Bounty, and Writing YSH Code
In 2021, I mentioned 7 parts of the project:
This new list of 13 parts is more accurate, which gives us a feeling for how the project has grown over the years.