Why Sponsor Oils? | blog | oilshell.org

I'm Attending Recurse Center this Summer


The Recurse Center is an educational retreat for programmers, located in New York City. I've heard about it for years on Hacker News, and I've always liked the idea.

In early February, I applied and was accepted. A few days ago, I finally figured out where I'll be staying! I'll be there from May 21st to August 8th.

This post is a status update: what's happened recently, and what I plan to do in the future.

Table of Contents
Plans for Oil
TODO Before Leaving
What I've Been Working On
User-Facing Features
A Small Commitment

Plans for Oil

I'm giving myself permission to take a break from Oil for the summer. I've worked on it for almost two full years, and I don't expect a three-month break to derail the project.

(The first post showed the first Python commit on 4/20/2016, but I actually started a C++ version in a different repo on 3/29/2016.)

In particular, the cadence of regular Oil releases will slow. This blog will probably also fall behind — it's behind even without the trip to NYC!

The purpose of my trip is to learn from other people, so it wouldn't make sense to just slog away at Oil.

On the other hand, there's more than one educational thing about this project, which somebody might be interested in. So I'll be surprised if the project goes completely dormant.

TODO Before Leaving

I don't want to drop the project abruptly, so here's a TODO list for the next two months.

(1) Make an Oil release. It will be either 0.5.alpha3 or 0.5. I wrote in the 0.4 release announcement that I wanted a significant user-facing feature for 0.5. If that doesn't happen, I'll call it 0.5.alpha3.

(2) Flush the blog backlog. Unfortunately, unpublished drafts of blog posts have piled up. So I plan to summarize several posts in a single post, like I've done in past posts tagged #blog-topics.

If you're interested in more detail, you can leave a question in the comments. I'm prone to leaving long replies. (Here's another one.)

What I've Been Working On

Although I haven't written many blog posts recently, I've continued to work on Oil. The project reached some concrete milestones at the beginning of the year, so I gave myself permission to start several new things at once.

The next two sections describe work in progress, so I'll be brief. Feel free to ask questions if you want details.

User-Facing Features

(1) A shell trace tool. This is a web service that helps you debug your shell programs. You can think of it as sh -x with a better UI. I'm working on it with my friend Eric.

(2) Static analysis of shell scripts. The idea is that if you type oshc deps foo.sh, it will display all the external binaries the script depends on (rsync, curl, etc.). This necessarily involves some heuristics, not all of which I've figured out yet.

A good use case for this is making shell app bundles.


(3) Performance measurement and experiments. To help optimize OVM and the code generated by OPy, I started learning more about CPython performance.

(4) Refactoring the OPy compiler. Note that OPy is project-specific infrastructure. It won't be exposed to users.

(5) A source code browser. I started with a Clang-based C++ source browser, and I plan to add Python support. This relates strongly to the OPy compiler because source browsers also require statically resolving names and determining types.

This might be a fun thing to work on at Recurse Center, because code comprehension tools have an obvious relationship to learning.

A Small Commitment

I know there are readers excited about Oil, and I don't want to lose that support while I'm gone.

So, even though I'll be working on other things, I aim to respond quickly to questions about the development process, and to pull requests. I generally respond in day or so, and I'd like to keep that up.

I'd love it if other people could work on OSH while I'm gone. I've tagged some issues #help-wanted on the issue tracker.

I realize that there's a learning curve to overcome when working on Oil. The project is written in a unique style, with several custom test frameworks and code generators. Feel free to ask me questions about them.

On the other hand, it's very possible that Oil will play a big role in my time at Recurse Center. In fact, that would be ideal.

But I'm not going to overplan or overthink it; I'll just let things happen. The goal is to do something I wouldn't do if I were at home. That might relate to Oil or it might not.


In summary, I have:

  1. A small list of tasks to wrap up before leaving.
  2. A large list of sub-projects in flight, related to Oil features and infrastructure.
  3. A full summer of open-ended learning!

I'm also thinking of a more informal /recurse-blog/, but I'll tackle that once other things are in order.