<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>UDE Blog (English)</title><description>Build in public: architecture notes, engineering decisions, and progress updates.</description><link>https://ude-blog.pages.dev/</link><item><title>UDE: From Source Code to Quality Documentation</title><link>https://ude-blog.pages.dev/blog/ude-source-to-docs/</link><guid isPermaLink="true">https://ude-blog.pages.dev/blog/ude-source-to-docs/</guid><description>Why stacks like Doxygen+DoxyBook2+Hugo fall short on large projects, and how UDE solves the problem.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;1. The Starting Point: Source Code and Comments&lt;/h2&gt;
&lt;p&gt;The foundation of any quality API documentation is the comments in the source code. In large projects (C++, for example), they are the single source of truth. Without them, automatic documentation generation simply isn&apos;t possible.&lt;/p&gt;
&lt;p&gt;The only question is how to turn those comments into a modern, convenient, fast site for developers.&lt;/p&gt;
&lt;h2&gt;2. How This Is Solved Today -- and Where the System Breaks&lt;/h2&gt;
&lt;p&gt;The most popular tool for C++ is &lt;strong&gt;Doxygen&lt;/strong&gt;. However, its native output format (HTML or XML) doesn&apos;t fit modern static site generators (SSGs) like Hugo, Docusaurus, or VitePress, which expect Markdown as input.&lt;/p&gt;
&lt;h3&gt;The Doxygen + DoxyBook2 + Hugo Stack&lt;/h3&gt;
&lt;p&gt;To work around this limitation, intermediate converters are often used: Doxygen generates XML → DoxyBook2 converts the XML to Markdown → Hugo builds the site.&lt;/p&gt;
&lt;p&gt;This works, but it has serious limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No scalability.&lt;/strong&gt; The converter reads the entire XML graph into memory at once. At the scale of an SDK with tens of thousands of classes and methods, this process runs into memory limits and unreasonably long processing times.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hard to customize.&lt;/strong&gt; Configuring the output for several styling formats at once is a difficult task, since these tools weren&apos;t designed for high flexibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. UDE&apos;s Solution: A Unified Pipeline&lt;/h2&gt;
&lt;p&gt;UDE fully rebuilds the process, removing unnecessary conversion stages and optimizing how data is handled.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ude-blog.pages.dev/images/cpp_to_docs_pipeline.jpg&quot; alt=&quot;UDE Pipeline&quot; /&gt;&lt;/p&gt;
&lt;p&gt;UDE&apos;s architecture is built on a clear separation of stages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Collector&lt;/strong&gt; extracts data directly from the source code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parser&lt;/strong&gt; translates it into a normalized, language-neutral model -- an &lt;strong&gt;IR (Intermediate Representation)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renderer&lt;/strong&gt; instantly assembles Markdown/HTML in whatever format the target SSG understands, with no intermediate XML crutches.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The advantages of this approach are clear: there&apos;s no extra conversion step, and from a single source (the IR) you can render documentation in any format or style you need.&lt;/p&gt;
&lt;h2&gt;4. Speed and Predictability&lt;/h2&gt;
&lt;p&gt;For large projects, build time is critical. UDE solves this with incremental caching.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ude-blog.pages.dev/images/incremental_cache.jpg&quot; alt=&quot;Incremental Cache&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Instead of loading the entire entity graph every time, UDE recomputes only what has &lt;strong&gt;actually changed&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-platform.&lt;/strong&gt; The pipeline works identically, locally on Windows and in CI on Linux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docs-as-code.&lt;/strong&gt; The configuration of what to document is versioned alongside the code and built in the same CI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;5. UDE and Hand-Written Guides (DevGuide)&lt;/h2&gt;
&lt;p&gt;API reference generated from code answers the question &quot;how are the functions and classes structured.&quot; But it can&apos;t tell you &quot;in what order to call them to solve a specific business problem.&quot; That&apos;s what DevGuides are for -- manually written articles and tutorials.&lt;/p&gt;
&lt;p&gt;UDE doesn&apos;t try to replace that manual work. Instead, it provides seamless integration: the generated API reference stays complete and always up to date, living naturally alongside hand-written guides on the pages of modern SSGs.&lt;/p&gt;
&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;Also read us:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://ude-blog.pages.dev/&quot;&gt;UDE Blog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://t.me/ude_blog_en&quot;&gt;Telegram channel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://dev.to/ude_team&quot;&gt;Dev.to&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>architecture</category></item></channel></rss>