devblog The CubeTutor Controversy
私はこのブログ記事を、数日前に配信されたCube Tutorとその現在の開発状況を取り巻くいくつかの問題に関するポッドキャストに反応して書いています。 彼らは、世界中で叫び、怒る権利があるトピックに、成熟した、平静な、明確で丁寧な口調でアプローチしました。 おそらく想像できると思いますが、Cube Tutorの現状を、最も長くこのサイトを支えてきた二人のサポーターが分かりやすく説明しているのを聞くのは、私にとって本当に難しいことでした。 彼らは明確で事実に基づいた方法で情報を提示し、私はその指摘のどれにも異議を唱えることはありません。 彼らはすべてにおいて正しいのです。私は約束を守らず、いかなる種類のコミュニケーションも提供することができず、そのことについて、皆さんには本当に申し訳なく思っています。 何が問題だったのか。
2013年当時、私は大規模で成功したソフトウェア会社で開発者をしていました。 仕事は順調で、今思えば何の不満もなかったのですが、興奮することもなく、ベッドから起きて一日に打ち込む理由にもなりませんでした。 私は10年以上マジックのプレイヤーとして活動し、その頃キューブに夢中になり、自分のキューブを作りたいと思うようになった。 余暇を利用してCube Tutorの開発を始めたのですが、最初は自分の必要性のためだけでした。 それが成長し、より多くの機能を持つようになったので、私はそれをオンラインで公開し、何人かの友人がそれをいじり始めました。 そこから、MTGSalvation に投稿して、他の人にも試してもらうようにしたところ、多くの人が試してくれました。 2013年秋頃、私はCube Tutorに何かあることに気づきました。人々はCube Tutorに夢中になり、私は自由な時間に好きなサイトに取り組むことができ、とても幸せでした。 ビジネスパートナー候補から、Cube Tutorを経済的に支援できるようなものにできないかと相談を受け、そのアイデアは夢のように聞こえました。 仕事にも嫌気がさしていましたし、好きなことにフルタイムで取り組めるというのは、とても魅力的なことでした。
2014年の最初の6ヶ月ほどは最高でした!私は通知を提出し、それに身を投じました。 2014年の最初の半年ほどは最高でした!私は毎日起きて、大好きなサイトで一生懸命働き、それをさらに大きなものへと成長させることに意欲を燃やしていたのです。
いつ何が起こったのかよく覚えていませんが、一緒に仕事をすることを望んでいたビジネスパートナーが、明らかに私と同じビジョンを持っておらず、単に私たちのアイデアを追求することに興味がないことが徐々に明らかになってきました。 今思えば、私は少しナイーブで、何らかの理由でうまくいかなかったのでしょう。 貯金が少なくなり始め、ランニングコストがかさむ中、完全無料のサービスとしてCube Tutorを提供し続けることは、もはや不可能であることが明らかになりました。 仕事に戻り、ユーザーにサーバー代を少し援助してもらいながら、このまま続けていくか、それとも、さらにこの仕事に打ち込み、自分の情熱的なプロジェクトに取り組み、何かを成し遂げようとするか、どちらかでした。
私は、Cube Tutor Championプログラムに着手しました。 これは、Cube Tutorを財政的に支援し、アカウントにいくつかの追加機能を約束する方法ですが、より重要なのは、財政的な圧力を取り除き、私が実際にサイトを改善するために働くことができるようにすることでした。 全体として、私はこのサイトが日の目を見るまでに1年の大半を費やしましたが、最終的に立ち上げたときは素晴らしい気分でした。 人々が参加してくれただけでなく、私はすぐにPatreonの第2層のコミットメントを達成し、仕事として、このサイトでパートタイムで働くことができました。
プログラムを開始する頃には、私は経済的にかなり悪い状態になっていました。 1年半の無給期間と、サーバー代に費やした数千ドルという費用を考えると、どうしても収入を得る必要があったのです。 チャンピオン・プログラムを立ち上げることができたのは、愛情深く理解ある妻の支えがあってこそで、私は本当に幸運でした。 7094>
しかし、コミュニティからの圧倒的なサポートがあっても、それだけでは十分ではなく、別の仕事をしなければなりませんでした。 Cube Tutor の週 1~2 日の仕事と並行して、非常にうまくいく機会を与えられ、現在もパートタイムでその仕事を続けています。
チャンピオン・プログラムの立ち上げとともに、サイトに何を求めているかを知っているユーザーからの機能要求が殺到し、2015年10月までの最初の数か月間は、物事が素晴らしく進んでいました。 私は定期的にリリースを行い、機能要求を解決し、一般的にパトロンの約束を守っていました。 この頃、私が受け取っていたフィードバックは、「これらの機能は素晴らしいが、サイトをモバイルで動作させるなど、より大きな機能の1つにいつ取り組むつもりなのか」という内容のものでした。 当初は、CTのような使い方をされるようになるとは想像もしていませんでしたし、モバイル端末を意識した作り方をしていませんでした。 これは大変なことでした。 しかし、月に1〜2回の機能リリースを維持することはもうできません。 すると、皆さんはとても協力的で、「おい、すごいぞ!」と言ってくれました。 頑張れ!」と応援してくれました。 私は、Cube Tutor の上にモバイル UI を構築することに着手しました。
多くの意味で、これは、小さなリリースとバグ修正を繰り返すという慣れ親しんだ領域から、より大きなものへの転換点だったと思います。 チャンピオン プログラムを開発していた頃でさえ、私はまだ定期的なリリースを発表していました。 これが、私のコミュニケーション能力の低下の始まりで、言い訳のしようがないことです。 それでも、この半年間、私は一生懸命に働き、2016年の夏にベータテストに提供したドラフトのためのモバイルUIを完成させました。 フィードバックは概して非常に肯定的で、私は作業を完了し、リリースすることを視野に入れ、再び開発に入りました。 これから数段落にわたって少し技術的な話をしますが、何が起こったのかについてできる限り明確にすることが重要だと考えています。 Cube Tutor が構築されたフレームワークである Apache Tapestry が寿命を迎え、そのフレームワークの創設者がもうサポートしないことを一夜にして知りました。 Tapestryは古い時代のフレームワークなので、これは驚くことではありませんでした。 モバイルを念頭に置いて作られたものではなく、クライアントとサーバーでスクリプト言語を実行するという、現在の業界のトレンドからも外れていました。 2016年という時代にそぐわない、動きの遅い遺物だったのです。 そもそもTapestryを選んだのは、開発が早く、使い慣れたものだったからで、このプロジェクトが日の目を見ることはないだろうと思っていたのです。 この時点で、Tapestry には非常に活発な開発者コミュニティがあり、フレームワークを改善するだけでなく、それを拡張するプラグインも生産していました。 私は、アップロードウィジェット、jQuery の統合、サーバープッシュ機能など、多くのことにこれらのプラグインを多用していました。 このフレームワークとプラグインは Cube Tutor の基盤であり、積極的にメンテナンスされていないため、すぐにまた書き直さなければならないようなものを、このままモバイル用に書き直すべきかどうか、判断に迷いました。 もともとモダンでなかった基盤からモダンにしようとしている自分に気がつきましたし、今ではメンテナンスも最新でないでしょう。 ウェブ開発業界はこの10年で急速に変化しており、Cube Tutorを次の10年まで安全に使えるようなサポートがなければ、どうやってTapestryを継続すればいいのでしょうか? 数ヶ月間、私は空回りしていました。 モバイルの仕事を続けることもあれば、他のフレームワークのプロトタイプを作ることもありましたが、ほとんどはこの問題に直面してどうしたらよいのかわからず、迷っていました。 Cube Tutor は死にゆくフレームワークで構築されているだけでなく、そのフレームワークの少し古いバージョンも使用していました。 これは、最新の 5.4.X リリースと互換性のない前述のプラグインのいくつかに依存しているため、Tapestry の 5.3.X バージョンで動作していました (現在もそうです)。 残念ながら、5.3.X バージョンの Tapestry は古いバージョンの Java、Java 7 を使用しており、また私のビルドサーバーは Java 7 のサポートを停止することにしました。 つまり、リリースのためのコードベースを実際に構築することができなかったのです。 この問題自体は、乗り越えられないものではありません。 ビルドサーバーを変更したり、ローカルでサイトをビルドしたり、あるいはTapestryのプラグインを自分で修正して、Tapestryの5.4リリースとJava 8に対応させる可能性もあります。 しかし、他のすべてのことと相まって、Tapestry 上の Cube Tutor の棺に最後の釘を打つような気分でした。
最初に戻って、新しいフレームワークで Cube Tutor をもう一度書き直すことがどれほど大変なことか、誇張することはできません。 私は、フルタイムで 2 年の大半を費やして、これを現在の状態にまで仕上げました。 他の仕事上のコミットメントや、まもなく家族を持つことになることを考えると、もう一度その作業をすべて行うことは考えられませんし、不可能です。 みんな見て、これが私の現状です」と言う勇気があればよかったのですが、私はそういうことに慣れていませんでした。 私は、問題を解決し、完成した作品や改善点を発表して、コミュニティから賞賛されることに慣れていました。 ブラッドとエリックは、私が昨年ブラッドと交わしたPMの会話を読み上げ、私が恥ずかしがっていることを話し、それが唯一の正当な理由だと言いました。
私たちは今どこにいるのでしょうか?
簡単に言えば、私は現在、新しいカード、注目のキューブ、平均的なキューブなど、データベースを通して変更できるもの以外、サイトを更新することができません。 私の人生は、2014年に贅沢をしていた自由な時間に満ちたものではなくなりましたし、サイトを書き換えるためにフルタイムでCube Tutorで自分を支えるためにPatreonのみの収入の立場に戻る余裕は単にありませんし、できたとしても、今は私の時間を要求する他の長期のプロとしての約束があるのです。 Cube Tutor を維持するためには、現在月平均約 700-750 ドルのランニングコストをカバーする必要があります。 これら 3 つのことが重なり、どうしたらいいのかわからず、ただ空回りしています。
お金そのものについては、1 年以上触っていません。 Cube Tutor の Patreon 収益をすべて別の口座で管理しており、私が経費や税金として支払わなければならなかったものに加えて、余分なお金は、ほとんどの場合、そこに置いてあるだけです。 パトロンが始まり、私がまだ活発に活動していたころは、定期的にお金を引き出していましたが、ここしばらくは稼いだ気がしないので、小さなお金が溜まっており、この投稿後にパトロンのサポートが劇的に減少しても、少なくとも少しの間、サーバー費用をカバーできるかもしれません。 答えはまだ「わからない」です。 Brad と Eric は、私が長い間、「今度のブログの記事」について言及し、それを実現することなく、トンネルの終わりに少なくとも何らかの光を提供できるまでそれを先延ばしにしてきたという点について、何度も繰り返し説明してくれました。 今私がしたいことは、この状況について正直かつオープンになることです。
最も重要なことは、情報が最終的に公開されたことであり、これを書くことは私にとって基本的で、多少カタルシスをもたらすステップです。 この投稿は、問題に対する解決策を見出すための正しい方向に戻る最初のステップであり、その解決策が実際に何であるかを知るためのものではないと考えています。 きっかけを与えてくれたBradとEricに改めて感謝します。
何よりも私はこのサイトとこのコミュニティを愛し、それをとても誇りに思っていますが、目の前にある障害に直面したとき、どうやってそれを継続する方法を見つけることができるか、心底わかりません。 私の理想とする解決策は何でしょうか? Cube Tutor がウェブ上で利用できる最も素晴らしいキューブ・プラットフォームであり続け、私が誇りに思い、皆さんがもう一度愛してくれるような道を見つけることです。
Reddit はあまり使っていませんが、これまでどおり電子メールで連絡可能です: [email protected].
Ben