No is temporary, Yes is forever
https://gyazo.com/5478d55b5024a2edadf92a12b790c7aa
塵への帰結
一度追加した機能は、後方互換のためずっとサポートしなくてはならなくなる
見えるもの:追加した機能によって便利になる
見えざるもの:追加した機能で生じるバグとメンテナンスコスト
オープンソース開発について「No is temporary, Yes is forever」という有名なフレーズがあります。新機能要求について No と断るコストは一時的なものであるが、 Yes と言ってしまうと (互換性を守る限りは) 保守するコストを永遠に払い続けなければならない、と自分は解釈しています。 Go の姿勢がまさにそうです。機能だけでなく文法についても Go 1.0 がリリースされてからほぼ変化がありません。
Go と Ebiten は似ている点があります。機能セットをミニマムにするという点がそうです。哲学を意識して Go を選んだわけではないのですが、結果的にそうなっているのが面白いですね。 この記事で知った言葉
kidooom.icon自分もこの考え方は好き
Scrapboxが多機能じゃない点にも似ている
つまり、Goのアイデンティティのひとつに「厳選された必要十分な機能セット」というものがあり、過去ここを壊すような多くの提案には「No!」が突き付けられてきました。(当時、Rob氏はめったに首を縦に振らないRob軍曹という呼び名がついたほど)
オープンソースプロダクトには「No is temporary, Yes is forever.」ということわざがあります。Rob氏はこのことをおそらく知っていて、Yesとする項目を厳選してきたのだろうと思います。そうして生まれたのがGoという言語処理系なのです。