MAML 成為 JSON 新替代方案,配置格式大戰再起

BigGo 社群部
MAML 成為 JSON 新替代方案,配置格式大戰再起

在不斷演進的配置語言領域中,出現了一位新的競爭者。MAML(Minimal, Human-readable, Machine-parsable)旨在解決長期以來開發者對 JSON 的不滿,同時避免像 YAML 這類替代方案的複雜性。隨著開發者持續追尋完美的配置格式,MAML 代表了在人類可讀性與機器解析效率之間取得平衡的最新嘗試。

此時機點再恰當不過——當前討論正圍繞在 UTC+0 2025-10-13T07:12:28Z 進行,開發者社群正積極辯論我們是否真的需要又一種配置語言,還是現有解決方案已能滿足需求。

配置語言的難題

開發者社群對於配置格式的激增意見分歧。有些人歡迎創新,其他人則對看似永無止境的新選擇感到厭倦。這種情緒從熱情支持到完全排斥都有,許多開發者質疑我們究竟是在解決真實問題,還是只是在創造更多標準。

一則評論完美捕捉了普遍情緒:>「哦太好了,我們正需要的——又一個這種東西。YAML 裡的 YA 還沒給夠提示嗎?現在有 15 個互相競爭的標準了。」這種挫折感反映了對配置語言領域碎片化的廣泛擔憂,開發者必須不斷學習新語法,而這些語法本質上都是在表達相同的基本資料結構。

MAML 帶來的新特性

MAML 將自己定位在 JSON 的嚴格性與 YAML 的靈活性之間的折衷方案。這種語言保持了 JSON 的核心簡潔性,同時增加了開發者長期以來要求的四項關鍵功能:註解、多行字串、可選的逗號,以及可選的鍵引號。這些新增功能針對開發者在使用 JSON 作為配置檔案時遇到的特定痛點。

該語言的設計哲學強調極簡主義與可讀性。與 YAML 依賴有意義的空白字元且容易出現縮排錯誤不同,MAML 使用了更明確的結構,對人類和機器都更容易解析。用於多行字串的三引號語法提供了一種乾淨的方式來處理格式化文字,而無需面對跳脫字元的困擾。

「它解決了我對 JSON 的所有不滿:註解、多行字串、可選的逗號、可選的鍵引號」

MAML 與 JSON 的主要功能比較:

  • 註解:MAML 支援,標準 JSON 不支援
  • 多行字串:MAML 使用三引號語法,JSON 則使用跳脫序列
  • 逗號:MAML 中為選用,JSON 中為必須
  • 鍵值引號:MAML 中為選用,JSON 中為必須
  • 資料類型:新增適當的整數類型支援

競爭格局

MAML 進入了一個已有 JSON、YAML、TOML 等成熟參與者,以及 KDL 和 HCL 等新興替代方案的擁擠領域。每種格式各有優缺點,開發者通常根據特定使用情境而非客觀優越性來做選擇。TOML 在淺層配置方面表現出色,但在處理深度巢狀資料時則顯得吃力,而 YAML 的強大功能伴隨著複雜性和潛在的陷阱。

HashiCorp 的 HCL(HashiCorp Configuration Language)似乎與 MAML 有著相似的目標,特別是在使配置更人性化這方面。然而,MAML 透過更緊密地遵循 JSON 的結構模式,同時去除讓 JSON 在手寫配置時顯得繁瑣的語法摩擦,以此突顯其差異性。

相關的配置語言:

  • JSON:原始標準,機器友善但人類不友善
  • YAML:功能豐富但複雜,對空白字元有嚴格要求
  • TOML:非常適合扁平配置,但在巢狀結構上表現不佳
  • HCL:HashiCorp 的配置語言,具有相似的目標
  • JSON5/HJSON:其他為了提升人類可讀性而擴展的 JSON 版本
  • KDL:基於節點的配置語言替代方案

實作與社群反應

圍繞 MAML 的生態系統已開始成形,針對 JavaScript、Python、Rust、C 和 PHP 的實作正在進行中。這種快速的採用表明該語言滿足了開發者社群的真正需求。僅用三天就開發出的 IntelliJ 語言外掛程式,顯示了有前景的新格式周圍的工具能多快出現。

然而,關於 MAML 與現有解決方案(如 JSON5 和 HJSON,它們也旨在創建更人性化的 JSON 版本)的區別,仍然存在疑問。社群特別感興趣的是,MAML 是否會保持與 JSON 的向後相容性,以及它將如何處理經常困擾配置語言的邊緣情況。

目前的 MAML 實作:

  • JavaScript: maml.js (MAML v0.1)
  • Python: maml-py (MAML v0.1)
  • Rust: maml-rs (開發中)
  • C: libmaml (開發中)
  • PHP: maml-php (開發中)

配置的未來

關於配置語言的持續辯論,反映了我們如何管理軟體開發複雜度的更深層問題。雖然有些開發者主張回歸基礎,使用環境變數或 Shell 腳本,但其他人則持續尋求表達能力與簡潔性之間的完美平衡。這種搜尋的持續性表明,理想的配置語言可能尚未出現——或者不同的使用情境需要不同的解決方案。

正如一位開發者所指出的,Bash 腳本已經存在很長時間,並且短期內不會消失。這種對更簡單解決方案通常能與更複雜的方案並存之認可,凸顯了許多開發者在配置管理方面所採取的務實態度。

MAML 的出現代表了配置語言演進中的另一步。它是否會被廣泛採用,或是加入其他立意良善但最終小眾的格式之列,仍有待觀察。可以確定的是,對完美配置語言的追求仍在繼續,這是由開發者對既強大又易用工具的無盡追求所驅動的。

參考資料:MAML