back

by teleforce·5y ago·view on hn ↗
Yes, it is one of the most entertaining and insightful articles I have read on computing and programming language for a long time.

All the best for your new Oil shell, and I agree that we need to have similar to POSIX standard for distributed systems but it must put local-first software as the first class citizen [1].

Personally I think the local-first software cannot happen soon enough given that what we have endured for the past 30 years with regard to inefficiency and drudgery of the web based applications.

Just wondering about your thoughts on SDLang [2] as the type alternative to JSON, YAML etc, and lightweight alternative to XML?

[1]https://martin.kleppmann.com/papers/local-first.pdf

[2]https://sdlang.org/

1 comments
Here's my recent comment about sdlang:

https://news.ycombinator.com/item?id=24945449

So I think Oil will be very familiar to SDLang users, BUT it has programmability, which you need in cluster configuration and build configuration, e.g. to express duplication.

So I would divide the space into a few categories:

(1) Stringly typed: .ini, YAML

(2) Typed Data: JSON, XML to some extent, SDLang

(3) Programmable configuration: HCL, Cue, Jsonnet, Nix expressions, BCL, Starlark, Oil

SDLang looks really similar to HCL too, except HCL is programmable:

https://www.terraform.io/docs/configuration/expressions/dyna...

Very important: With categories 1 and 2, people add template languages like Go templates on top to solve the programmability problem, which we don't want!!! We don't want to move typed data back to the stringly typed realm!

Also, I don't think the "expression style" of HCL, Nix, and BCL is great. It's good for small things, but it starts to get hard to read for large configs. I'd prefer simple for loops and if statements, basically like the Starlark language (a subset of Python used in Bazel).

---

Thanks for the paper reference, I bookmarked it!