さきほど、MFGと関連ソースをオープンソースとして公開しました。

karino2/MFG: Modern Filter language for GPU

MFGをリリースした当初から「近日中にオープンソースとして公開予定」と言い続けてきましたが、 無事公約を果たせました。

MFGの言語処理系のコードは当然入っていますが、その他にコマンドラインツールとして使うコードや、 Qt製のIDE、MFGOpenStudioのコードも含まれています。

MFGの言語処理系のコード

C++で書いたパーサーやForest、それらを使ったIRなどのコードや、DirectXやMetalのバックエンドのコードが入っています。 すべて一人で書いたコードなので、規模の割にはクリーンに書けているのではないか、と思っています。

MFGOpenStudio

MFGStudioから社内ライブラリを切り離してオープンソース版として再実装して、実現が難しい機能は削ったものを、MFGOpenStudioと名付けて公開する事にしました。 コミュニティエディションという位置づけです。

機能としてはMFGStudioから、主にプレビュー周辺の機能を削ったものとなっています。 MFGのフィルタの作成は公式のMFGStudioを引き続き使う事になりますが、 MFGの言語処理系の方を変更する場合に動作を確認するには、こちらを使うのが良いでしょう。

自分が今回の仕事を終えた後も開発が続けられるように、 marを作成するのに必要な機能は一通りすべて入れてあります。

作業の背景や感想など

単にMFGの処理系部分を公開するだけならもともと公開を想定して書いたためそれほど大変でも無かったのですが、 コードがあるだけで第三者からはそれをどう使うかが分からない、という風になってしまうのは避けたかった。

オープンソースにするからには、形だけではなく、自分が今回の仕事を終えた後も継続して開発していけるようにしたい。 他の環境に移植したり、バグを修正したり、新たな使い道を模索したり、といった事が出来るようにしたい。 だからMFGStudioをオープンソース化出来ないか、という話は以前から社内でしていました。

そんな訳で年末年始の頃に一度MFGStudioを社内ライブラリから切り離してオープンソースで再実装する作業を行おうとしたのですが、 社内ライブラリの依存が大きく、もう一度社内ライブラリを再実装するような大変さになってしまい挫折していました。

どうやって公開したものかなぁ、と悩んでいた所、MFGStudioをいじるのでは無く、 コミュニティ版として機能を削ったものを作ってから依存を切るのはどうだろう?と思い至り、 MFGOpenStudioが生まれる事となりました。 これもそれなりに大変な作業でしたが、無事公開までこぎつけられたので、良い方針を選べたと思っています。

オープンソース化というのは言葉の上では簡単そうですが、この規模のソフトウェアだとなかなか大変な作業です。 無事達成出来て、ほっとしています。

MFGがオープンソースとして公開出来て嬉しい

MFGはお絵描きアプリのフィルタを第三者がポータブルかつセキュアに書けて、 しかも実用的なパフォーマンスで動く、という野心的な目標を、世界で初めて実用化出来たと自負しています。 それが実際にどのようなものなのか、というのを、 公開したものをベースに話せるのは説得力も違います。 また、違った応用を模索する可能性も残せたのも嬉しいです。

MFGの開発自体は、手元のメモによると2021年くらいからとなっているので、5年近く開発していた事になりそうです。 他の仕事もやっていたので実質は3年くらいと思いますが、 それでも3年間いつも「この言語仕様はどうあるべきか?」とか、 「こういうフィルタを書けるように出来無いか?」とか考え続けてきたものなので、 単に仕事で受けて作ったもの、という枠を超えた存在です。 自分の子供のようと言いたくなるような思いです。

そうやって自分の人生の重要な時間を使って開発してきたMFGを、 こうしてオープンソースとして公開出来るのは、とても有り難く、嬉しく思っています。