{"id":44496306,"url":"https://github.com/malloydata/motly","last_synced_at":"2026-03-07T01:14:30.519Z","repository":{"id":338149761,"uuid":"1156783871","full_name":"malloydata/motly","owner":"malloydata","description":"MOTLY configuration language","archived":false,"fork":false,"pushed_at":"2026-02-17T18:24:18.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-17T22:55:42.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/malloydata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-13T03:36:05.000Z","updated_at":"2026-02-17T18:24:21.000Z","dependencies_parsed_at":"2026-02-18T21:00:47.054Z","dependency_job_id":null,"html_url":"https://github.com/malloydata/motly","commit_stats":null,"previous_names":["malloydata/motly"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/malloydata/motly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malloydata%2Fmotly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malloydata%2Fmotly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malloydata%2Fmotly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malloydata%2Fmotly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/malloydata","download_url":"https://codeload.github.com/malloydata/motly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malloydata%2Fmotly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29596094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T20:59:56.587Z","status":"ssl_error","status_checked_at":"2026-02-18T20:58:41.434Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-13T05:26:23.914Z","updated_at":"2026-02-18T21:00:50.132Z","avatar_url":"https://github.com/malloydata.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MOTLY\n\nMOTLY is a lightweight, human-friendly configuration language. It originated as the annotation/tag language in [Malloy](https://github.com/malloydata/malloy) and is designed for readability: no quotes on simple strings, no commas, explicit braces instead of significant whitespace, and native types for booleans and dates.\n\nWhile MOTLY is indeed the syntax for the Malloy \"Tag\" language, it is growing into an experiment in configuration languages. The plan is for MOTLY + MOTLY Schema to produce native DOM-like access to configuration data with re-serialization.\n\nMOTLY isn't really an acronym, but if it were, it could stand for:\n\n- **M**alloy **O**bject **T**agging **L**anguage, **Y**ahoo!\n- **M**ore **O**bjects **T**han **L**ines, **Y**ippee!\n- **M**arkup **O**bjects **T**ersely, **L**ike **Y**AML\n- **M**akes **O**ther **T**hings **L**ook **Y**ucky\n- **M**ight **O**vertake **T**OML **L**ater, **Y**'know\n\nIt is spelled MOTLY (all upper case), like YAML, TOML and JSON though.\n\n## Quick Example\n\n```motly\n# Application configuration\napp: {\n  name = \"My Application\"\n  version = 1.2\n  debug = @false\n\n  server: {\n    host = localhost\n    port = 8080\n    ssl = @true\n  }\n\n  features = [logging, metrics, caching]\n\n  scheduled_maintenance = @2024-06-15T02:00:00Z\n}\n```\n\n## Why MOTLY?\n\n| | JSON | YAML | TOML | MOTLY |\n|---|---|---|---|---|\n| Quotes on simple keys/values | Required | No | Keys no, values yes | No |\n| Separators | Commas required | None | None | None |\n| Nesting | Braces | Indentation | Section headers | Braces |\n| Comments | No | Yes | Yes | Yes |\n| Native booleans | `true`/`false` | Many (`yes`, `on`, ...) | `true`/`false` | `@true`/`@false` |\n| Native dates | No | Yes (ambiguous) | Yes | `@2024-01-15` |\n| Copy-paste safe | Yes | No (whitespace) | Partially | Yes |\n\nMOTLY uses explicit braces like JSON (no whitespace surprises like YAML) but drops the syntactic noise (no quotes on simple strings, no commas, no colons between keys and values). Booleans and dates are unambiguous with the `@` prefix.\n\n## Status\n\nMOTLY is under active development. The language itself is solid -- [Malloy](https://malloydata.dev) uses the MOTLY parser for its [tagged annotations](https://docs.malloydata.dev/documentation/language/tags).\n\n**What works today (0.0.1):**\n- Full parser and interpreter (Rust and pure TypeScript, kept in sync)\n- Schema validation with custom types, enums, patterns, unions, recursive types\n- Reference system (`$root.path`, `$^sibling`, `$^^grandparent`, indexed access)\n- [`@malloydata/motly-ts-parser`](bindings/typescript/parser/) -- the TypeScript parser, published on npm with zero native dependencies\n\n**Where it's going:**\n- **DOM API** -- schema-driven, language-native DOM bindings. You define a MOTLY schema, you get back a typed DOM with getters, setters, and validation -- like an ORM for configuration. This replaces the current `getValue()` plain-object approach and eliminates the DOM layer that Malloy builds on top today.\n- **Schema metadata** -- extending schemas to carry UI metadata (labels, placeholders, secret flags) for driving dynamic UI generation.\n- **WASM backend** -- the Rust parser compiled to WASM, behind the same TypeScript API. Drop-in performance upgrade.\n- **Multi-language bindings** -- once the Rust DOM exists, Python/Ruby/Go bindings come naturally through FFI.\n\nSee [VISION.md](VISION.md) for the full roadmap.\n\n## Documentation\n\n- **[Language Reference](docs/language.md)** -- complete syntax and semantics\n- **[Schema Validation Reference](docs/schema.md)** -- validating MOTLY files against schemas\n- **[Future Plans](VISION.md)** -- DOM API, schema metadata, and long-term direction\n\n## Packages\n\n- **Rust**: `cargo doc --open` -- Rust library and CLI ( not published yet )\n- **TypeScript**: [`@malloydata/motly-ts-parser`](bindings/typescript/parser/) -- pure TypeScript parser (zero native deps)\n\nThe file extension is `.motly`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalloydata%2Fmotly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalloydata%2Fmotly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalloydata%2Fmotly/lists"}