1. 27

    1. 5

      Neat stuff!

      I wonder what @andyc has to say about Oh vs. Oil :)

      1. 10

        Thanks for the shout out :) I listened to the end of the talk (thanks for the pointer by @msingle), and basically everything he says is accurate. I found his 2010 master’s thesis several years ago, and it is a great read. Section 3 on Related Work is very good.


        Oh and Oil have very similar motivations – treating shell as a real programming language while preserving the interactive shell. Oh seems to be more Lisp-like while Oil simply retains the compositionality of the shell; it doesn’t add the compositionality of Lisp. (In other words, functions and cons cells compose, but processes and files also compose).

        I mention NGS here, which probably has even more similar motivations:


        The main difference between Oh and Oil is the same as the difference between NGS/Elvish/etc. and Oil: Oil is designed to be automatically converted from sh/bash.

        My thesis is that if this conversion works well enough, Oil could replace bash. If I just designed a language from scratch, I don’t think anyone would use it. Many people seem to agree with this. After all, fish has existed for 15 years, and is a nicer language than bash for sure, but I’ve seen it used zero times for scripts (and I’ve looked at dozens if not a hundred open source projects with shell scripts.)

        However as he correctly notes (and I point out in the FAQ), Oil doesn’t exist yet! Only OSH exists.

        The experience of implementing OSH and prototyping the OSH-to-Oil gave me a lot of confidence that this scheme can work. However it’s taking a long time, longer than expected, like pretty much every software project ever.

        I’m not really sure how to accelerate it. Maybe it will get there and maybe it won’t :-/ No promises!

        I “front-loaded” the project so that if I only manage to create a high-quality implementation of OSH (a bash replacement), then I won’t feel bad. I’m pretty sure people will use that if it exists.

        I maintain a “help wanted” tag for anybody interested in contributing:


        This is mainly helping with OSH, as Oil is a concentrated design/implementation effort that is hard to parallelize. Feel free to join https://oilshell.zulipchat.com too!

        1. 3

          Michael MacInnis mentions talking to @andyc ~44:25 in the talk, but I’d also like to hear his opinion on Michael’s work.

          1. 1

            Oh! (no pun intended :p) I’m still at the ~33:00 mark into the video and hadn’t gotten to that part. But yeah, I’d like to hear that.

        2. 3

          I’ve tried a handful of different shells, and feel there’s lots of room for improvement in the language. xonsh uses python, and that made certain one-liners I had more readable and manageable. I will give this one a try next! Has anyone started using it as their primary shell, any thoughts?