4 ms·
It doesn't have functions, but I've also released a type-checked configuration language recently[0]. The main difference is it's designed to be easy to edit, ev
by simplify 8y ago
It doesn't have functions, but I've also released a type-checked configuration language recently[0]. The main difference is it's designed to be easy to edit, even by non-technical users.
[0] https://github.com/gilbert/zaml https://github.com/gilbert/zaml
- jmillikin 8y agoNote that Skycfg isn't a language itself; we're using Google's Starlark (a deterministic Python dialect) for syntax and evaluation. This means that we get IDE support and tooling for ~free, such as Python syntax highlighting and Starlark formatting with Buildifier.
- simplify 8y agoA deterministic Python dialect is indeed very cool. I've dabbled in writing a deterministic language myself. Syntax highlighting and formatting is nice, but I think error reporting is more important for the end user. Zaml auto-validates configuration structure, removing the need to write most boilerplate on the programmer's side. Can you help me understand Skycfg's type safety and validation? When I see `return [pb.StringValue(value = 123)]`, does this imply the schema is written inline, alongside the values?
- jmillikin 8y agoThe schema is defined as a Protocol Buffer (https://developers.google.com/protocol-buffers/ https://developers.google.com/protocol-buffers/) package. This lets us construct values protobuf-based APIs without having to manually copy over the schema. For example, if you had this schema: package my.example.schema; message Person { string name = 1; int32 id = 2; string email = 3; } Then you could build a value using Skycfg like this: pb = proto.package("my.example.schema") msg = pb.Person( id = 1234, name = "Jane Doe", email = "jdoe@example.com", ) print(msg) For Kubernetes, we're using the schema at https://github.com/kubernetes/api https://github.com/kubernetes/api and for Envoy we use https://github.com/envoyproxy/data-plane-api/tree/master/envoy https://github.com/envoyproxy/data-plane-api/tree/master/env...
- corwin7 8y ago> The main difference is it's designed to be easy to edit, even by non-technical users. Yaml is beautiful and easy, this looks like a nightmare.
- kjeetgill 8y agoMany uses of YAML are beautiful and easy but the spec/parsers are anything but. 5 notations for things, unclear whitespace delimiters, graph/labels, etc. https://news.ycombinator.com/item?id=17358103 https://news.ycombinator.com/item?id=17358103