<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Config Files on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/config-files/</link>
        <description>Recent content in Config Files on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Wed, 22 Apr 2026 21:48:37 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/config-files/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Cómo elegir entre 8 formatos comunes de configuración: de INI, XML, JSON, YAML y TOML a Markdown</title>
        <link>https://www.knightli.com/es/2026/04/22/common-config-file-formats-ini-xml-json-yaml-toml-markdown/</link>
        <pubDate>Wed, 22 Apr 2026 21:48:37 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/22/common-config-file-formats-ini-xml-json-yaml-toml-markdown/</guid>
        <description>&lt;p&gt;Si escribes código, administras servidores, ajustas opciones de juegos o mantienes toolchains, casi seguro no puedes evitar los archivos de configuración.&lt;/p&gt;
&lt;p&gt;Muchas veces, lo que realmente rompe un programa no es el algoritmo ni el framework, sino una línea diminuta de configuración: un espacio faltante, una coma extra o un valor escrito de una forma que el sistema no esperaba. Mirar formatos comunes lado a lado nos devuelve a varias preguntas centrales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Qué formatos son más amables para escribir por humanos?&lt;/li&gt;
&lt;li&gt;¿Qué formatos son más amables para parsear por máquinas?&lt;/li&gt;
&lt;li&gt;En la era de AI Agents, ¿empezará a cambiar el papel de los archivos de configuración?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este artículo intenta organizar esa cuestión de forma concisa.&lt;/p&gt;
&lt;h2 id=&#34;01-un-archivo-de-configuración-es-básicamente-una-negociación-entre-humanos-y-máquinas&#34;&gt;01 Un archivo de configuración es básicamente una negociación entre humanos y máquinas
&lt;/h2&gt;&lt;p&gt;Hay una forma de decirlo que me parece especialmente precisa: un archivo de configuración es un contrato de comportamiento entre humanos y programas.&lt;/p&gt;
&lt;p&gt;Su valor es obvio. No necesitas reescribir lógica de negocio ni recompilar nada. Cambiando unas pocas líneas de texto puedes alterar el comportamiento de un sitio, la lógica de una aplicación, el despliegue o incluso gráficos y opciones ocultas de un juego.&lt;/p&gt;
&lt;p&gt;El problema es que este contrato contiene una tensión incorporada.&lt;/p&gt;
&lt;p&gt;Desde el lado humano queremos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;algo legible, escribible y estructuralmente claro&lt;/li&gt;
&lt;li&gt;preferiblemente con comentarios para entenderlo después&lt;/li&gt;
&lt;li&gt;la menor repetición posible, idealmente con reutilización y modularidad&lt;/li&gt;
&lt;li&gt;un formato que no explote de inmediato por un pequeño error&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero desde el lado máquina, la elegancia es irrelevante. Le importan principalmente dos cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el parsing debe ser rápido&lt;/li&gt;
&lt;li&gt;las reglas deben ser estrictas, los tipos claros y la ambigüedad mínima&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso los formatos de configuración siempre se tensan entre lo human-friendly y lo machine-friendly. Cuanto mejor es un formato para lectura humana, más trabajo suele necesitar la máquina para parsearlo. Cuanto más eficiente es para máquinas, más fácil suele ser que humanos cometan errores al editarlo.&lt;/p&gt;
&lt;h2 id=&#34;02-ini-simple-y-directo-pero-limitado&#34;&gt;02 INI: simple y directo, pero limitado
&lt;/h2&gt;&lt;p&gt;Empecemos con &lt;code&gt;INI&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sus fortalezas son muy directas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;estructura simple&lt;/li&gt;
&lt;li&gt;secciones más pares clave-valor fáciles de entender&lt;/li&gt;
&lt;li&gt;soporte de comentarios&lt;/li&gt;
&lt;li&gt;adecuado para configuración ligera, como ajustes de juegos o entorno básico&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si alguna vez modificaste ajustes de juegos antiguos o parámetros de herramientas a mano, probablemente lo viste.&lt;/p&gt;
&lt;p&gt;Pero &lt;code&gt;INI&lt;/code&gt; también tiene limitaciones obvias. Su estructura es demasiado plana y no representa naturalmente anidamiento profundo o arrays. Además, normalmente carece de un sistema de tipos estricto, así que muchos valores son básicamente strings y el programa decide cómo interpretarlos.&lt;/p&gt;
&lt;p&gt;Eso hace que &lt;code&gt;INI&lt;/code&gt; se sienta como una herramienta vieja pero cómoda: excelente para trabajo ligero, fácil de superar cuando el proyecto crece.&lt;/p&gt;
&lt;p&gt;Un &lt;code&gt;INI&lt;/code&gt; típico:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[server]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;127.0.0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[feature]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;enable_cache&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;03-xml-riguroso-y-estable-pero-cansado-de-escribir&#34;&gt;03 XML: riguroso y estable, pero cansado de escribir
&lt;/h2&gt;&lt;p&gt;El segundo formato importante es &lt;code&gt;XML&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si mantuviste proyectos Java antiguos o viste archivos enormes llenos de tags de cierre, te resultará familiar.&lt;/p&gt;
&lt;p&gt;Sus fortalezas incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;estructura jerárquica clara&lt;/li&gt;
&lt;li&gt;soporte de comentarios&lt;/li&gt;
&lt;li&gt;reglas estrictas&lt;/li&gt;
&lt;li&gt;validación fuerte cuando se combina con un schema&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso permite a las máquinas conocer tipos, cardinalidad y restricciones estructurales antes de parsear de verdad, dando mucha seguridad.&lt;/p&gt;
&lt;p&gt;Pero su coste humano es igual de clásico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tags verbosos&lt;/li&gt;
&lt;li&gt;mucho ruido visual&lt;/li&gt;
&lt;li&gt;archivos que crecen rápido&lt;/li&gt;
&lt;li&gt;un cierre faltante puede romperlo todo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso &lt;code&gt;XML&lt;/code&gt; se siente como un contrato formal sellado. A las máquinas les gusta; los humanos se cansan de mantenerlo. Muchos proyectos nuevos ya no lo eligen primero, pero en sistemas antiguos y entornos con reglas estrictas no ha desaparecido.&lt;/p&gt;
&lt;p&gt;La misma configuración en &lt;code&gt;XML&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;config&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;host&amp;gt;&lt;/span&gt;127.0.0.1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/host&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;port&amp;gt;&lt;/span&gt;8080&lt;span class=&#34;nt&#34;&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;feature&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;enable_cache&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/enable_cache&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/feature&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/config&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;04-json-dominante-para-intercambio-de-datos-incómodo-para-configuración-editada-a-mano&#34;&gt;04 JSON: dominante para intercambio de datos, incómodo para configuración editada a mano
&lt;/h2&gt;&lt;p&gt;En desarrollo moderno, &lt;code&gt;JSON&lt;/code&gt; es casi inevitable.&lt;/p&gt;
&lt;p&gt;El juicio clásico es: excelente como formato de intercambio de datos, algo incómodo como configuración mantenida por humanos.&lt;/p&gt;
&lt;p&gt;Sus ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;estructuras claras de objetos y arrays&lt;/li&gt;
&lt;li&gt;transmisión amigable para red&lt;/li&gt;
&lt;li&gt;parsers maduros&lt;/li&gt;
&lt;li&gt;encaje fuerte con APIs web y comunicación frontend-backend&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Frente a &lt;code&gt;XML&lt;/code&gt;, &lt;code&gt;JSON&lt;/code&gt; se ve mucho más ligero. La misma estructura suele ser más corta y más fácil de enviar por red.&lt;/p&gt;
&lt;p&gt;Pero tiene un defecto grande: &lt;code&gt;JSON&lt;/code&gt; estándar no soporta comentarios.&lt;/p&gt;
&lt;p&gt;Su sintaxis también es estricta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;las claves deben ir entre comillas dobles&lt;/li&gt;
&lt;li&gt;el último elemento no puede tener coma final&lt;/li&gt;
&lt;li&gt;un símbolo faltante rompe todo de inmediato&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que &lt;code&gt;JSON&lt;/code&gt; es excelente para APIs e intercambio entre servicios, pero no siempre ideal para configuración que humanos editan, explican y revisan a menudo.&lt;/p&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;server&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;host&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;port&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;feature&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;enable_cache&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;05-yaml-muy-legible-pero-la-indentación-y-los-tipos-implícitos-pueden-traicionarte&#34;&gt;05 YAML: muy legible, pero la indentación y los tipos implícitos pueden traicionarte
&lt;/h2&gt;&lt;p&gt;Si trabajaste con Docker, CI/CD, Kubernetes o automatización de despliegues, casi seguro trataste con &lt;code&gt;YAML&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Su mayor atractivo es lo limpio que se ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;menos llaves y comillas&lt;/li&gt;
&lt;li&gt;la indentación expresa jerarquía&lt;/li&gt;
&lt;li&gt;soporta comentarios&lt;/li&gt;
&lt;li&gt;anchors para reutilización&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Desde una primera mirada humana, &lt;code&gt;YAML&lt;/code&gt; suele parecer más amable que &lt;code&gt;JSON&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pero el problema está justo ahí. Oculta mucha complejidad y en uso real produce dos fallos clásicos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;infierno de indentación&lt;/li&gt;
&lt;li&gt;conversión implícita de tipos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los problemas de indentación son fáciles de entender: un espacio extra o faltante puede romper la config. Peor aún, la conversión implícita hace que valores que parecen strings simples puedan interpretarse automáticamente como booleanos u otros tipos.&lt;/p&gt;
&lt;p&gt;Por eso tanta gente elogia lo bien que se ve &lt;code&gt;YAML&lt;/code&gt; y al mismo tiempo sufre con él. Es realmente bueno para lectura humana, pero las máquinas no lo parsean sin esfuerzo, e incluso distintas librerías pueden discrepar en detalles sutiles.&lt;/p&gt;
&lt;p&gt;La misma configuración en &lt;code&gt;YAML&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;127.0.0.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;enable_cache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;06-toml-equilibrio-entre-legibilidad-y-determinismo&#34;&gt;06 TOML: equilibrio entre legibilidad y determinismo
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TOML&lt;/code&gt; suele presentarse como una respuesta moderna equilibrada.&lt;/p&gt;
&lt;p&gt;Su atractivo combina parte de la claridad de &lt;code&gt;INI&lt;/code&gt; con parte de la claridad de tipos de &lt;code&gt;JSON&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soporte de comentarios&lt;/li&gt;
&lt;li&gt;estructura clara&lt;/li&gt;
&lt;li&gt;tipado más fuerte y explícito&lt;/li&gt;
&lt;li&gt;manejo más natural de tipos comunes como fecha y hora&lt;/li&gt;
&lt;li&gt;muchas menos trampas de conversión implícita que &lt;code&gt;YAML&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;También se ha vuelto cada vez más común en toolchains modernas, como &lt;code&gt;pyproject.toml&lt;/code&gt; en Python.&lt;/p&gt;
&lt;p&gt;No es perfecto. En estructuras profundamente anidadas, &lt;code&gt;TOML&lt;/code&gt; puede volverse verboso, y la escritura por rutas puede sentirse repetitiva. Pero para config de proyectos pequeños y medianos, herramientas y package management, la experiencia suele ser muy estable.&lt;/p&gt;
&lt;p&gt;Si quieres un formato con comentarios, significado claro y bajo dolor de parser, &lt;code&gt;TOML&lt;/code&gt; es un candidato fuerte.&lt;/p&gt;
&lt;p&gt;Ejemplo común:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;enable_cache&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-conf-y-configuración-apache-no-es-un-formato-universal-sino-un-lenguaje-de-dominio&#34;&gt;07 &lt;code&gt;.conf&lt;/code&gt; y configuración Apache: no es un formato universal, sino un lenguaje de dominio
&lt;/h2&gt;&lt;p&gt;Vale la pena enfatizar que mucha gente ve &lt;code&gt;.conf&lt;/code&gt; y asume que es un formato estándar único. No lo es.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.conf&lt;/code&gt; es solo un sufijo de archivo para &amp;ldquo;configuration&amp;rdquo;. El contenido depende por completo de las reglas del sistema concreto. Es más una categoría amplia que una sintaxis estándar.&lt;/p&gt;
&lt;p&gt;Toma &lt;code&gt;Apache&lt;/code&gt; como ejemplo. Su estilo es representativo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;parte parece una lista de directivas de una línea&lt;/li&gt;
&lt;li&gt;parte parece bloques etiquetados con comportamiento acotado&lt;/li&gt;
&lt;li&gt;encaja naturalmente en el dominio de servidores web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sus fortalezas son prácticas para operaciones, especialmente al expresar permisos, routing y virtual hosts. La desventaja es que sirve a su propio ecosistema y no tiene mucha portabilidad general.&lt;/p&gt;
&lt;p&gt;Eso lo acerca a un lenguaje específico de dominio: excelente dentro del sistema para el que fue diseñado, no algo que tratar como formato universal.&lt;/p&gt;
&lt;p&gt;Ejemplo mínimo estilo Apache:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Listen&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;*:80&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/www/html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;08-protocol-buffers-tipado-industrial-pero-mayor-barrera&#34;&gt;08 Protocol Buffers: tipado industrial, pero mayor barrera
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Protocol Buffers&lt;/code&gt; ya no son realmente &amp;ldquo;solo escribir una config a mano&amp;rdquo;. Se parecen más a un sistema formal de definición y serialización de datos.&lt;/p&gt;
&lt;p&gt;Sus fortalezas son importantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tipado fuerte&lt;/li&gt;
&lt;li&gt;schema explícito&lt;/li&gt;
&lt;li&gt;buena compatibilidad hacia adelante y atrás&lt;/li&gt;
&lt;li&gt;transmisión binaria compacta&lt;/li&gt;
&lt;li&gt;procesamiento eficiente por máquinas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero los costes también son claros:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hay que definir archivos &lt;code&gt;.proto&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;se necesitan herramientas y paso de compilación&lt;/li&gt;
&lt;li&gt;la barrera es relativamente alta para proyectos pequeños&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que no son ideales si solo quieres configurar una herramienta pequeña. Pero si construyes sistemas grandes, servicios RPC, sistemas distribuidos o protocolos de datos de larga vida, suelen ser mucho más fiables que formatos ligeros.&lt;/p&gt;
&lt;p&gt;Su estilo se acerca a &amp;ldquo;define primero la estructura y luego genera código&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;syntax&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;proto3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ServerConfig&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;int32&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enable_cache&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;09-en-la-era-de-ai-agents-markdown-puede-volver-a-ser-formato-de-configuración&#34;&gt;09 En la era de AI Agents, Markdown puede volver a ser formato de configuración
&lt;/h2&gt;&lt;p&gt;La parte más interesante es poner &lt;code&gt;Markdown&lt;/code&gt; dentro de la categoría de &amp;ldquo;formatos de configuración&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Desde una perspectiva tradicional, suena extraño, porque &lt;code&gt;Markdown&lt;/code&gt; parece más bien documentación. Pero si el objetivo ya no es un parser rígido sino un LLM o AI Agent, el argumento tiene sentido.&lt;/p&gt;
&lt;p&gt;¿Por qué?&lt;/p&gt;
&lt;p&gt;Porque los programas tradicionales dependen de sintaxis estricta y campos fijos, mientras los modelos grandes entienden mejor significado, estructura y contexto. Para ellos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;los encabezados son jerarquía&lt;/li&gt;
&lt;li&gt;las listas son pasos&lt;/li&gt;
&lt;li&gt;el texto en negrita es énfasis&lt;/li&gt;
&lt;li&gt;el lenguaje natural puede portar reglas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando el objetivo de configuración cambia de &amp;ldquo;parser rígido&amp;rdquo; a &amp;ldquo;agente que entiende significado&amp;rdquo;, &lt;code&gt;Markdown&lt;/code&gt;, como texto estructurado amigable para humanos, puede volverse una configuración más natural.&lt;/p&gt;
&lt;p&gt;Esto lleva a un juicio importante: en la era tradicional del software, muchos formatos existían para hacer que humanos se adaptaran a máquinas; en la era AI, las máquinas empiezan a adaptarse a la expresión humana.&lt;/p&gt;
&lt;p&gt;Por ejemplo, una configuración de tarea para un agente podría ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# Goal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write a welcome email for a new user.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Requirements
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Friendly tone
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; No more than 150 words
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Mention the product&amp;#39;s 3 core features
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Forbidden
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Do not promise features that do not exist
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Do not use exaggerated marketing language
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;10-entonces-cómo-elegir&#34;&gt;10 Entonces, ¿cómo elegir?
&lt;/h2&gt;&lt;p&gt;Si comprimimos toda la discusión:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;si quieres configuración extremadamente simple, ligera y plana: &lt;code&gt;INI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres estructura fuerte, validación fuerte y compatibilidad legacy: &lt;code&gt;XML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres transmisión de red e intercambio de interfaces: &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres alta legibilidad más cloud-native y config de despliegue: &lt;code&gt;YAML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres una experiencia moderna generalista más estable: &lt;code&gt;TOML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres reglas internas específicas de dominio: &lt;code&gt;.conf&lt;/code&gt; / DSLs estilo Apache&lt;/li&gt;
&lt;li&gt;si quieres diseño industrial de protocolos y evolución a largo plazo: &lt;code&gt;Protocol Buffers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;si quieres expresión natural y orquestación de tareas para AI Agents: &lt;code&gt;Markdown&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No hay un único mejor formato. Depende de para quién escribes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;humanos que mantienen el sistema&lt;/li&gt;
&lt;li&gt;máquinas que parsean a alta velocidad&lt;/li&gt;
&lt;li&gt;servicios que se comunican entre sí&lt;/li&gt;
&lt;li&gt;o AI Agents que necesitan entender y ejecutar&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusión-breve&#34;&gt;Conclusión breve
&lt;/h2&gt;&lt;p&gt;La historia de los archivos de configuración es, en el fondo, la historia de humanos y máquinas renegociando constantemente dónde debe caer el coste de entender.&lt;/p&gt;
&lt;p&gt;Antes, los humanos tenían que adaptarse a las máquinas, así que memorizábamos llaves, reglas de indentación, comillas y sintaxis rígida. Ahora que los modelos de lenguaje y sistemas de agentes entienden cada vez mejor la expresión natural, la propia &amp;ldquo;configuración&amp;rdquo; empieza a cambiar.&lt;/p&gt;
&lt;p&gt;Quizá en el futuro muchos escenarios de configuración ya no giren alrededor de una sintaxis fija, sino de declaraciones estructuradas de intención. Hasta entonces, formatos como &lt;code&gt;JSON&lt;/code&gt;, &lt;code&gt;YAML&lt;/code&gt;, &lt;code&gt;TOML&lt;/code&gt;, &lt;code&gt;INI&lt;/code&gt; y &lt;code&gt;XML&lt;/code&gt; seguirán coexistiendo, cada uno en el rol que mejor le encaja.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
