{"id":18048781,"url":"https://github.com/marcelgarus/semdoc","last_synced_at":"2026-02-17T17:02:11.252Z","repository":{"id":54181247,"uuid":"252979668","full_name":"MarcelGarus/semdoc","owner":"MarcelGarus","description":"A document file format that allows writers to focus on the content solely and empowers readers to adapt the appearance to their devices and needs.","archived":false,"fork":false,"pushed_at":"2023-04-20T18:29:26.000Z","size":244,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-10T02:17:20.846Z","etag":null,"topics":["document","file-format","semdoc"],"latest_commit_sha":null,"homepage":"https://semdoc.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarcelGarus.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}},"created_at":"2020-04-04T11:32:56.000Z","updated_at":"2024-05-23T20:56:34.000Z","dependencies_parsed_at":"2025-04-10T09:53:04.428Z","dependency_job_id":null,"html_url":"https://github.com/MarcelGarus/semdoc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MarcelGarus/semdoc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcelGarus%2Fsemdoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcelGarus%2Fsemdoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcelGarus%2Fsemdoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcelGarus%2Fsemdoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcelGarus","download_url":"https://codeload.github.com/MarcelGarus/semdoc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcelGarus%2Fsemdoc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29550824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T14:33:00.708Z","status":"ssl_error","status_checked_at":"2026-02-17T14:32:58.657Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["document","file-format","semdoc"],"created_at":"2024-10-30T20:15:22.563Z","updated_at":"2026-02-17T17:02:11.238Z","avatar_url":"https://github.com/MarcelGarus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"semdoc.svg\" width=\"92px\" /\u003e\n\n## SemDoc – Semantic Document\n\nSemDoc is a document file format that allows writers to focus on the content solely and empowers readers to adapt the appearance to their devices and needs.\n\n### Why yet another file format?\n\nThere are many great tools for writing documents: Google Docs, Word, Notion, Markdown, Latex, and many more.\nBut for *distributing* documents, we're pretty much stuck with PDF.\nSemDoc aims to change that.\n\n**What's wrong with PDF?**\nPDF is excellent for print-quality content:\nIf you want to print something or publish a design brochure, it's a great fit.\nBut I'm not too fond of PDF for general content consumption:\n\n* **It organizes everything into pages.**\n  It's not like scrolling is a particularly new invention.\n* **The layout is entirely static.**\n  I refuse to believe that putting my phone into landscape mode just to read a PDF without continually scrolling back and forth is the best user experience we can come up with in the 21st century.\n* **Advanced features are hard to use correctly.**\n  Tabbing through input fields or copying text with accents rarely works.\n  These symptoms indicate an issue with the format itself.\n* **Dark mode?** Anyone?\n\nFundamentally, PDF gives most of the control to document *creators*, leaving none to readers.\n\nIn contrast, SemDoc follows these principles:\n\n* **Be a compile target.**\n  It doesn't aim to be readable to humans or be edited by hand; instead, it's an efficient binary format.\n  Like PDFs, you compile other formats to it.\n* **Be purely semantic.**\n  It contains no syntax information, only semantic information.\n  Writers declare *what* to display, readers control *how* to show it.\n* **Be extensible.**\n  Over time, the SemDoc format can be extended.\n\n\u003c!--\nI can almost hear people asking:\nBut what about just a tiny bit of syntax? I'm only asking for …\n\n* **customizing the color scheme?**\n  What if I told you some operating systems (for example, Windows) let the user choose a custom accent color?\n  What about light and dark mode?\n  What about blue mode? Red mode?\n  What about AR glasses, where the world is the background?\n\n* **overriding the default fonts?**\n  Explain that to people with dyslexia, who use unique fonts that give each letter a recognizable characteristic.\n  Debate with people who practiced speed reading with one particular font.\n  And I can almost see the hacked-together \"music fonts\" and \"math fonts\" popping up for allowing you to distribute other content.\n  Why bloat the document with font definitions and complicate everything?\n\n* **make text bold?**\n  You may mark content as *important*, but \"bold\" is such an arbitrary property.\n  What about smart speakers reading the text out loud? Should they speak boldly?\n  Why not give developers of AR glasses the freedom to mark important text by lifting it slightly to the front?\n  Why artificially limit yourself to a concept that only makes sense on 2D screens?\n\nAlso, note that these little customization options all add up.\nOver time, peer-pressure might build up that forces every writer to think of a fancy color scheme (of course, for light and dark mode), provide a font, etc.  \nThat's not what writers should have to concern themselves with.\nIf you do want more control, you're welcome to build a website.\n\nNot defining the appearance also makes the format future-proof – it adapts to current devices just as well as AR glasses.\nAnd a long-lived format is a win for everyone using it.\n--\u003e\n\n### Relevance\n\nSome might think, \"documents are going to be cloud-first anyway. Consumers don't need file formats anymore; they'll collaborate online.\"\nThat's probably true for most cases.\nBut I'd argue there will always be a use-case for immutable atomic instances of documents to be sent.\nImmutability makes them legally binding.\nLatency might forbid you from collaborating with people living on Mars.\n**The concept of transferring a file is straightforward to understand for us humans because files are like things.**\n\n---\n\n[Here's an explanation of the format.](format.md)\n\n## Roadmap\n\n- [x] Write vision\n- [x] Implement base of the format\n- [x] Make format debuggable\n- [x] Document format\n- [x] Implement block-level optimizations\n- [x] Support blocks with more than 255 children\n- [x] Add more blocks\n- [ ] Improve the quality of Markdown to SemDoc converter\n- [ ] Use Reference atom\n- [ ] Implement document reader in CLI\n- [ ] Implement document reader in Flutter\n- [ ] Optimize performance\n- [ ] Put process in place for proposing new blocks\n- [ ] Implement intermediary language for editing SemDocs\n\n## Block ideas\n\n- [ ] pixel images\n- [ ] vector images\n- [ ] redacted\n- [ ] comments\n- [ ] signed\n- [ ] secondary\n- [ ] more info\n- [ ] links\n- [ ] highlighting\n- [ ] quote\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelgarus%2Fsemdoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcelgarus%2Fsemdoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelgarus%2Fsemdoc/lists"}