Skip to content
Tech AI Wire
Coding

MojoがApache 2.0でオープンソース化、コントリビューションは非公開のまま

3 分で読めます

著者 Tech AI Wire Team

数字で見る

Apache 2.0
license, with LLVM exceptions
1.0
version shipped the week before, with source stability
2024
year the standard library began taking contributions
The Mojo flame logo printed on a white card with a red open padlock in front of it

Modularは8月18日、MojoコンパイラとそのツールをLLVM例外付きのApache 2.0ライセンスで公開し、Mojo 1.0のリリースから1週間で、この言語で最後に残っ ていた非公開部分をGitHubに載せた。パッチを送りたいと考える人にとっての注意 点は、Modularがコンパイラやツールへのコントリビューションをまだ受け付けてお らず、「今年の終わりまでに」受付を始めることを目指していると述べていること だ。

実際に何が公開され、何が公開されなかったのか

Mojoの標準ライブラリは2024年から公開されており、Modularの発表がMojoで書かれ た数十万行のカーネルコードと表現するものも同様だ。コンパイラとその周辺のツー ルが残っていた非公開のコンポーネントであり、今週動いたのはまさにそれだ。

構成要素状況
標準ライブラリ2024年から公開、コントリビューション受付中
Mojoで書かれたカーネルコードすでに公開済み
コンパイラ8月18日にソース公開、コントリビューションは未受付
ツール8月18日にソース公開、コントリビューションは未受付

この区別は聞こえる以上に重要だ。Apache 2.0でソースを公開することは、企業の基盤として安心して使えるようにする権利、す なわち利用、改変、再配布、そして明示的な特許許諾を与える。コントリビューショ ンを受け付けるかどうかは、それとは別のガバナンスの問題であり、Modularはそれを 未定のままにするのではなく期限を設けた。

なぜあえてApache 2.0なのか

Modularの発表は、ライセンスの選択を明確な主張にしている。「Apache 2.0ライセンスはプログラミング言語とコンパイラにとってのゴールドスタンダード だ。あらゆる種類のアプリケーションで使える大きな柔軟性を提供するからだ」。そ れに付随するLLVM例外は、LLVM自身が使っているのと同じ仕組みであり、ライセンス 条項がコンパイラの出力にまで及ぶのを防ぐために存在する。これこそがツールチェ ーンで構築される専有ソフトウェアでこれを使えるようにしているものだ。

この系譜は偶然ではない。MojoはChris Lattnerによって作られた。Phoronixが指摘するように、彼はLLVMとSwiftの両方を手 がけたアーキテクトであり、この言語は同じコンパイラインフラに支えられている。

Qualcommという問題

どちらの情報源も、この発表がQualcommによるModular買収の後に行われたことを指摘 している。Modularは今や自らをQualcomm傘下の企業と称している。Phoronixはその観 点からオープンソース化を予想外と位置づけ、Qualcommのオープンソースに対する複 雑な歴史と呼ぶものを指摘している。

逆に読めば、買収直後のApache 2.0での公開は、買収された言語プロジェクトが継続性について送れる最も強いシグナ ルだ。すでに公開されたコードについてライセンスを撤回することはできない。その 継続性がロードマップや約束されたコントリビューション受付の時期にまで及ぶかど うかは、これから示されるべき部分だ。

開発者にとっての意味

以前Mojoを検討して、非公開のコンパイラで立ち止まった人にとって、その具体的な 反対理由はもうなくなった。コンパイラを読み、ビルドし、フォークし、ツールチェ ーンにライセンスの疑問を抱えることなく専有ソフトウェアを出荷できる。それは、 実験できる言語と、技術評価で正当化できる言語との違いだ。

変わっていないのはコントリビューションの経路だ。Issueを立てることには価値があ る。だが、コンパイラのパッチが取り込まれることに依存する作業を計画するのは、M odularがその扉を開くまでは違う。同社は2026年の終わりまでにと述べているので、 それより早いものは計画ではなくボーナスとして扱うべきだ。

Phoronixの報道からの2つの実践的な注意点は、時間を投じる前に自分の環境と照らし 合わせる価値がある。プラットフォームのサポートはmacOSとLinuxを対象としてお り、Windowsはまだ開発中だ。チームがWindows中心なら、話はネイティブのツールで はなくWSLかコンテナになる。そしてMojoはPythonと双方向で相互運用でき、Mojoから Pythonを呼び出すことも、その逆もできる。これこそが段階的な導入を現実的にする ものだ。言語を試すためにコードベースを書き直すのではなく、ひとつのホットパス を移すことができる。

検討すべきもう一つのシグナルはバージョン番号だ。Mojo 1.0はこの公開のわずか1週間前に登場し、Modularはそれをソース安定性の約束と組み 合わせている。これは、リリースの間に言語が足元で動かなくなる時点のことだ。実 際のエンジニアリング時間を費やす前にMojoが実験であることをやめるのを待ってい た人にとって、1.0というタグとApache 2.0のコンパイラは、これまで欠けていた組み合わせだ。