[HN Gopher] Interactive Docs with Markdoc
       ___________________________________________________________________
        
       Interactive Docs with Markdoc
        
       Author : tomger
       Score  : 53 points
       Date   : 2022-09-14 11:36 UTC (1 days ago)
        
 (HTM) web link (stripe.com)
 (TXT) w3m dump (stripe.com)
        
       | jph wrote:
       | Markdoc syntax and capability looks so much like MDX
       | (https://mdxjs.com). Can anyone who's evaluated Markdoc and MDX 2
       | comment?
       | 
       | I'm currently doing an architecture decision record about
       | Markdown documentation, and will add Markdoc to the candidates.
       | The leaders so far are MDX 2 with plugins for JSX-style work, and
       | Svelte for a fully dynamic site.
       | 
       | I'm aware of the Markdoc page about "Why not MDX?" which explains
       | that Markdoc is deliberately less capable than MDX. But the page
       | doesn't show how to do typical needs (IMHO) such as loops or
       | substitutions. And for simple writing, compare with standard
       | markdown annotated with tags/templates using Liquid or Jinja or
       | similar?
        
       | drx wrote:
       | Really cool of @koomen to donate the domain, from the github repo
       | (https://github.com/markdoc/markdoc):                 Special
       | shout out to:             @marcioAlmada for providing us with the
       | @markdoc GitHub org.       @koomen for gifting us
       | https://markdoc.dev.
        
       | behnamoh wrote:
       | Interesting to see another post on HN frontpage about Stripe's
       | "incompetent" review team, and then see this one.
        
       | atonse wrote:
       | We're using markdown + liquid with custom liquid tags.
       | 
       | This looks so similar to that.
        
         | segphault wrote:
         | Hey, I'm the creator of Markdoc and the author of that blog
         | post.
         | 
         | The key advantage of using Markdoc instead of using Markdown
         | with liquid or another string-based templating system that
         | preprocess the content is that the tags and other custom syntax
         | are a first-class part of the Markdoc format. The document
         | parses to an AST and the individual tags can programmatically
         | manipulate the content and document node hierarchy instead of
         | just manipulating or outputting strings of text that are passed
         | on to a Markdown processor.
        
           | jph wrote:
           | You may have misunderstood the parent post? Custom Liquid
           | tags use code that can do anything you want: programmatically
           | manipulate content, read databases, invoke APIs, autogenerate
           | examples, run tests, use git, etc.
        
             | chipotle_coyote wrote:
             | No, Segphault literally addressed why Markdown with Liquid
             | is not the same as Markdoc on a processing level. "Custom
             | tags processed by [thing that is not Markdown]" !=
             | "Markdown superset that makes custom tags first-class
             | entities". Either your template processor is run before the
             | Markdown processor and outputs Markdown, or it's run after
             | the Markdown processor and outputs HTML. Neither one is
             | doing what Markdoc is doing. Markdoc parses to an AST;
             | "Markdown + [other thing]" does not. The difference may be
             | immaterial in some use cases, including yours, but it's
             | still a difference.
        
       | m_ke wrote:
       | Should probably mention mdx since it's a much better alternative
       | that has been available for a while
        
         | nkohari wrote:
         | Can you say more about why you think MDX is better?
         | 
         | For what it's worth, we considered MDX, but chose not to use
         | it. Full explanation here: https://markdoc.dev/docs/faq#why-
         | not-mdx
        
           | [deleted]
        
           | ipsum2 wrote:
           | Speaking for myself, I'm tired of learning yet another
           | templating language re-implementing basic features like if,
           | else, and for loops when I could just use an existing
           | language with a few additions. Learning HTML is pretty easy,
           | even for non-engineers.
           | 
           | Doesn't this syntax:                   <callout
           | type="check">...</callout>
           | 
           | Look better than:                  {% callout type="check"
           | %}...{% /callout %}          ?
        
           | uhryks wrote:
           | Chase McCoy had a good note explaining it:
           | https://chasem.co/2022/05/markdoc
           | 
           | Basically because MDX mixes JSX and markdown, you need
           | knowledge of JSX/JS (which non-devs might not have), and
           | tooling dedicated to build, parse it and so on. Markdoc is
           | more of a "separation of concerns" approach.
        
           | dsmmcken wrote:
           | I haven't experienced the supposed concern of complexity with
           | MDX. I have a docs site with 1600+ md pages. In practice I've
           | exposed a small number of react components that doc writers
           | can use and that's it. Sure in theory they could introduce
           | new complexity, but they don't. Further, you can introduce
           | new markdown primitives with remark that get transformed to
           | react components if you want to hide some of that complexity
           | from writers. For example, we have one that auto collapses
           | adjacent fenced code blocks of different language into one
           | react component with a built in language switcher.
        
       ___________________________________________________________________
       (page generated 2022-09-15 23:00 UTC)