{"id":48654167,"url":"https://github.com/rudxain/ddskvt","last_synced_at":"2026-04-10T09:00:10.939Z","repository":{"id":339516017,"uuid":"1162251891","full_name":"Rudxain/ddskvt","owner":"Rudxain","description":"Drop-Dead Simple Key-Value Tree data format: spec (mostly done) \u0026 ref-impl (TO-DO)","archived":false,"fork":false,"pushed_at":"2026-03-18T19:20:14.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-10T09:00:04.944Z","etag":null,"topics":["based","bloat-free","bloatless","data-format","experimental","key-value","kiss-principle","minimalist","no-bloat","no-bullshit","no-nonsense","simple","specification","tree-structure"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rudxain.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-20T03:14:30.000Z","updated_at":"2026-03-18T19:20:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Rudxain/ddskvt","commit_stats":null,"previous_names":["rudxain/ddskvt"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Rudxain/ddskvt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rudxain%2Fddskvt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rudxain%2Fddskvt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rudxain%2Fddskvt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rudxain%2Fddskvt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rudxain","download_url":"https://codeload.github.com/Rudxain/ddskvt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rudxain%2Fddskvt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31635969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: 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":["based","bloat-free","bloatless","data-format","experimental","key-value","kiss-principle","minimalist","no-bloat","no-bullshit","no-nonsense","simple","specification","tree-structure"],"created_at":"2026-04-10T09:00:09.726Z","updated_at":"2026-04-10T09:00:10.877Z","avatar_url":"https://github.com/Rudxain.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Drop-Dead Simple Key-Value Tree data format\n\n```\nIf you are...\n\tTired of JSON's obnoxious quotes\n\t\tLike\\ these `{\"ugly\": \"redundant\"}`\n\tConfused by Tom's \"Obvious\" \"Minimal\" Language\n\t\tWTF is the diff between\n\t\t\t`[table]`\n\t\t\tand\n\t\t\t`[[table]]`\n\t\t\t???\n\t\thttps://hitchdev.com/strictyaml/why-not/toml\n\tIn an asylum, thanks to YAML\n\t\thttps://noyaml.com\n\t\thttps://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell\n```\n\nThen this format is for you!\n\nThis format isn't just minimalist, it's [brutalist](https://en.wikipedia.org/wiki/Brutalist_architecture). The motto is **\"Pure structure, no semantics\"**. This is a *data format* not a _language_.\nThis format embraces the fact that schemas are inevitable, so you are expected to explicitly define a schema or implicitly assume it.\n\n## FAQ\n\u003e If it's so simple, why trees? Aren't trees complicated?\n\nNo, the tree-like structure of this format is merely a consequence of recursion:\n```\ntable is set of entries\nentry is key-value pair\nkey is string\nvalue is string or table\n```\nTrees are **everywhere** in nature, math, and comp-sci, even in unexpected places. So I'd argue this format must be able to express them easily.\n\nIf you insist on flatness, INI exists ;)\n\n## Name\nThe name is meant to evoke a \"no bullshit\" vibe.\n\nThe \"drop dead\" part can be interpreted as \"dead-simple and elegant\" or as an [insult to other formats](https://www.urbandictionary.com/define.php?term=KYS), [depending on your mood](https://github.com/git/git/blob/73fd77805fc6406f31c36212846d9e2541d19321/README.md?plain=1#L55-L66) ;)\n\nFile extension is `.skvt`. I suggest you pronounce it as \"scot\".\nPeople can make jokes about \"TOML skvt\" being similar to \"[Tom Scott](https://en.wikipedia.org/wiki/Tom_Scott_(YouTuber))\"\n\n## Grammar \u0026 Types\nThis is the normative part of the specification\n\n\u003e [!IMPORTANT]\n\u003e I haven't fully settled on this, so the format is technically unstable. Expect breaking-changes\n\nThe only data-types are\n- UTF-8 text string\n- table of unordered key-value entries\n- ordered list: this might be removed from the spec\n\nLine-breaks (`\\n` only; `\\r` is undefined for now) delimit entries, ` ` delimits the key from its value.\nSo far, I think the 1st space should be assumed to be the delimiter, rather than the last one.\nIf a key is associated to a table or list value, then any ` ` in the key-string should be assumed to be a character like any other.\n\nIndentation is significant, and specifies nesting. Only \"hard\" tabs (`\\t`) because I [hate YAML](https://noyaml.com) and [tabs are superior](https://lea.verou.me/blog/2012/01/why-tabs-are-clearly-superior)\n\nI'm hesitant to support comments, as the empty key can be used as alternative:\n```\nname foobar\n this is a comment\nversion 0.1.0\ndependencies\n\tyeet 0.2\n\t version from the future, lol\n\tanyhow 69.0\n\tregex 1.0\n```\n\nImplementors are free to choose how to handle duplicate keys. For debugging, I recommend printing an error or warning\n\n## Usage in the wild\nThis format is so damn simple that you might be already using it!\n\n- Many special files in Linux `/proc/*` have similar format\n- [This tool I made](https://github.com/Rudxain/fr3) uses a shallow subset of this format, a variant where last ` ` delimits key-value\n- etc... (let me know of other examples)\n\n## See also\n- [CSVZ](https://github.com/secretGeek/csvz)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudxain%2Fddskvt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frudxain%2Fddskvt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudxain%2Fddskvt/lists"}