Between the Wires:オープンソース開発者Sindre Sorhusとのインタビュー

バンコクの屋台のレストランでシンドレ

これは、タイに住む多人数のオープンソース開発者であるシンドレ・ソルウスのインタビューです。

あなたの子供時代とあなたが育った場所について少し教えてください。

私はノルウェーのオスロ郊外の郊外で育ちました。小さい頃は、レゴに本当に興味がありました。毎年、誕生日とクリスマスにレゴを手に入れました。レゴは、物事を早くから構築することに興味を持ちました。ある時点で、部屋に巨大なレゴの街が建てられ、部屋全体をほぼ占有しました。

レゴを子供として構築する

どのようにしてプログラミングを始めましたか?

私が7歳のとき、家族は最初のWindows 95コンピューターを手に入れました。私は、キャラクターが数学の問題を解決するために飛び回るMap Blasterと呼ばれるゲームをプレイしていました。数年後、ようやくインターネットにアクセスできるようになり、すべてが変わりました。私は他の人のウェブページにゲストブックを書いてgifを集めるのに多くの時間を費やしました。ある日、ウェブサイトがどのように機能するかについて興味を持ち、ブラウザの「ソースを表示」ボタンを発見しました。

家族のコンピューターで、SindreはMicrosoft Outlook Expressをチェックしていました

それは私にとって大きな衝撃でした。右クリックしてソースを表示すると、すべてがどのように作成されたかを確認できました。最初はあまり理解していませんでしたが、同じことを何度も見て、それがどのように機能するかを理解し始めました。これが私がプログラミングの旅を始めた方法です。

10歳のときに最初のウェブサイトを作りました。それは数年間ソースを見ていた後だった。あらゆる種類の色、星のパターンの背景、メディアのバックグラウンドミュージックでアニメーション化されたものなど、当時のWebサイトで誰もが持っていたタッチの1つでした。 Microsoft FrontPageを使用しました。

かつて退屈していたので、父のコンピューターに何千ものネストされたディレクトリを作成し、最終的にコンピューターをクラッシュさせました。お父さんはコンピューターを再フォーマットする必要がありました。彼は同時に感銘を受け、イライラした。それは私が最初のウェブサイトを失った方法でもありました。

学年の後半に、私はFlashゲームに夢中になり、学校の休み中に多くのFlash映画を見ました。私はそれらがどのように作られたか興味がありましたが、ソースボタンはありませんでした。そのため、swiffファイルを逆コンパイルしました。難読化されていないので簡単です。これもまた、他の人の仕事から学ぶ機会を与えてくれました。私は他の人のゲームを修正し、すべてのキャラクターをやり直し、新しい敵を作り、ハイスコアを追加し始めました。他の人が実際に一緒に接着したゲームをプレイできることに気づいたのは誇りに思った瞬間でした。

フロントエンドのデベロッパー兼フォトグラファーとして軍隊に5年間滞在しました。当時のWeb開発はどのようなものでしたか?

軍のシンドレ

高校を卒業した後、私はノルウェーの軍に直接徴兵されました。メディアユニットに入り、ほとんどの時間をオフィスでイントラネットで作業していました。私たちは兵舎に住んでいたので、夕方にはあまりすることがありませんでした。しかし、私の経験のほとんどは、他の人のPHPやJavaScriptをコピーして貼り付けることであり、それらがどのように機能するのかよくわかりませんでした。ある日、私はPythonとDjangoに出くわしました。PHPにはなかったすばらしいドキュメントとチュートリアルがありました。私は毎日チュートリアルを読み、仕事で物を作り始めました。

それが私の実際のコーディングの始まりです。徴兵後、私は大学の前に旅行に行くことを計画しました。しかし、軍隊のサイバー防衛部隊からの仕事のオファーを受けました。興味をそそられたので申し出を受けて、そこで5年間過ごしました。

シンドレが軍隊で作ったアプリ

どのようにしてTodoMVCとYeomanに関与しましたか?

私は2011年頃にGitHubを使い始めましたが、主に消費者として使いました。いろいろなレポを見て、彼らが面白そうだから主演しました。 README.mdファイルのタイプミスを修正しましたが、それについての問題でした。

ある日、JavaScriptフレームワークの選択に役立つTodoMVCに出会いました。それは本当に素晴らしいアイデアでしたが、後から考えると、パフォーマンステストとフレームワーク機能の問題を実際に解決するために、より高度なアプリケーションが必要です。 TodoMVCについて最初に思い出したのは、素晴らしいロゴがあったことです。それは非常に表面的なようですが、それが私を始めたきっかけです。

TodoMVCロゴ

私はロゴがとても気に入ったので、もう少し見回すことにしました。 jQueryアプリケーションが実際にはないことに気づいたので、作成することにしました。週末にプルリクエストを送信し、プロジェクトのメンテナーであるAddy Osmaniから返信がありました。彼は私のPRをすぐにマージしました。これは私のような初心者にとってはとてもいい経験でした。この本当に人気のあるプロジェクトに自分のアプリが含まれるようになったのは嬉しいことです。私はこれを数週間行い、Addyは私をプロジェクトに追加しました。

これは本当にオープンソースに興味を持ちました。これ以前は、単なる消極的な消費者でしたが、TodoMVCを使用することで、大きなプロジェクトを維持するという趣味がありました。しかし、私はその経験から多くを学びました。

数か月後、AddyはGoogleで働き始めました。 Googleでの彼の最初のプロジェクトは、最新のWebアプリの足場ツールであるYeomanでした。私たちはTodoMVCで非常に協力していたので、彼は私を外部寄稿者として招待することにしました。

ヨーマンロゴ

Yeomanの最初の目標は、誰もが優れたWebアプリを作成するために使用できるツールのセットを作成することでした。そのとき私たちが気づかなかったのは、ウェブ上にはあまりにも多くのユースケースがあるため、1つのツールで全員の問題を解決することは不可能だということです。 Yeomanは一般的な構成になり、多くの開発者がYeomanを拡張して独自のユースケースに適したジェネレーターを作成しました。

Create React AppまたはWebpackを見ると、履歴も繰り返されます。誰かが1つの問題を解決することになっているこの製品を作ることから始めますが、誰もが異なるニーズを持っているため、問題が発生します。このツールですべてをカバーできないことに気付いたら、構成を追加します。重要なのは、バランスの取れたアプローチをとることです。 「いいえ」と言う必要があり、いつ「いいえ」と言うかを知る必要があります。あいまいなユースケースがあるため、一部のユーザーを失望させることがあります。これはツールを作成する上で難しい部分であり、オープンソースプロジェクトではさらに多くのフィードバックがあるためさらに困難です。

なぜあなたはオープンソースに情熱を傾けているのですか?

私はオープンソースが大好きで、ブラウザの「ソースを表示」ボタンに戻ると思います。私の意見では、オープンソースはお互いの仕事の上に構築できるため、ソフトウェアを構築する最も効果的な方法です。誰かが難しい問題を解決すれば誰もが恩恵を受けます。オープンソースを使用すると、他の方法では作業できなかった世界中の信じられないほどの人々と作業することができます。収益を上げることに集中するのではなく、私たちにとって重要なことに取り組み、コミュニティに必要なものに集中することができます。

Paul IrishのYouTubeには、「jQueryソースから学んだ10の事柄」というすばらしいビデオがあります。それが、jQueryソースコードを読むことに興味を持った理由です。ポール・アイリッシュは正しかった、あなたは実際にあなたがやりたいことをやりたいことを何でもすることによって多くを学ぶ。

オープンソースの持続可能性はどうですか?

それは間違いなく、私が最近よく考えてきた矛盾点です。私は今、オープンソースをフルタイムで約3年間やっています。お金を稼ぐことはありませんが、この仕事を有料の仕事としてフルタイムでやるのはいいことです。ただし、Vue.js by Evanは、オープンソースの持続可能性がどのように機能するかを示す素晴らしい例です。彼は誰もが望むフレームワークを作成し、かなりの数の企業で使用されています。他の企業や個人は、生産に役立つため、彼のプロジェクトに投資するインセンティブを持っています。重要なのは、プロジェクトを信頼できるものにすることです。個人的には、プロジェクトを維持するのに個人からの貢献だけでは不十分だと思います。

Open Collectiveを使用して、貢献者やイベントのプロモーションに報いるためにお金を集めることを考えています。 Webpackは素晴らしい仕事をしました。誰かがプロジェクトに資金を投入するたびに不必要な変更を加えることが期待されるのではないかと心配していたので、私は実際これに長い間反対していました。通常、企業がプロジェクトに投資する場合、仕事に優先順位を付けて、問題を迅速に修正したいと考えています。

私は現在タイに住んでいて、1500ドル以下で大丈夫だと思います。

1000個以上のnpmパッケージがあります。どのように生産性を維持していますか?

それは誤解です。人々は1000個のパッケージを見て、私は非常に生産的だと思っていますが、彼らが気付いていないのは、それらのパッケージのほとんどが小型でモジュール式だということです。それらは公開時にほぼ完了しています。私はプログラミングとレゴでの構築を比較するのが好きです。私は、より大きな構造を構築するために組み立てることができる多くのレゴブロックを作成します。私は問題を解決するために、公開する前に他のパッケージでそれらを使用します。また、ユーザーが非常に小さいため、多くの機能要求を送信しない理由でもあります。さらに何かが必要な場合は、別のモジュールを作成できます。私の時間の90%は、私の最大の10プロジェクトに費やされています。

要求の厳しい有毒な人々に対処するときに、新しいOSS貢献者に与えることができるアドバイスは何ですか?

私は6年前からオープンソースを開発しているので、厚手のスキンを開発しました。私はそれをすべて経験したと思うのが好きだから、もう何も私を悩ませるとは思わない。私は、いくらかの毒性を経験してから辞めた多くの初心者と話しています。オープンソースは、あなたの人生のストレスの原因ではなく、あなたがする楽しいことです。

新しいデベロッパーへの私のアドバイスは、インターネット上の見知らぬ人が気分やドライブに悪影響を与えないようにすることです。それは価値がありません。立ち去るオプションがある場合は、それを利用してください。登録解除ボタンを利用してください。オープンソースのメンテナーは、ユーザーが顧客にお金を払っていないことを覚えておく必要があります。私たちは自由な時間に彼らに何かを無料で提供しています。

有毒な人々と、あなたは常により大きな人間である必要があります。間違っているように聞こえますが、私がやろうとしているのは親切に彼らを殺すことです。どういうわけかそれは私のために長年働いてきました。たとえば、誰かが迷惑な場合、私はオープンで状況について親切にしようとします。私は決して皮肉になったり、彼らに話しかけたりしないようにします。荒らしはあなたのうるささと談話を養うので、そこにいなければ、彼らはあなたを放っておきます。

ミュートオプションは、特にTwitterで提供されている場合はどこでも利用します。誰かが有毒物質と国境を接しているときに気付くのは良いことです。不必要な対立を引き起こすのではなく、単にその声を閉じて入力する方がはるかに良いです。

あなたはあなた自身のモジュール用にいくつかのロゴをデザインしました、それらは素晴らしいです。デザインをどのように学びましたか?

XOプロジェクト

まず、オンラインチュートリアルに従ってクールなエフェクトを作成しました。以前はAdobe Illustratorを使用していましたが、現在はSketchを使用しています。

設計するのは本当に楽しいです。もっと多くのプログラマーが試してみるべきだと思います。数時間プログラミングした後、休憩を取って別の方法でいくつかの創造的な仕事をするのはいいことです。

また、プロジェクトをより個性的にするため、ロゴを作成することでプロジェクトに利益をもたらします。通常、GitHubでレポジトリを入力すると、ヘッダー、導入部、README.mdなど、同じテキストベースのものが表示されます。いくつかのグラフィックでスパイスを効かせてうれしいです。ロゴがある場合、人々はプロジェクトを使用する可能性が高いことがわかります。たとえば、ウクライナの開発者であるVadim Demedesは、AVAのリリース直後にこのプルリクエストを送信しました。 Vadimは後にAVAチームのメンバーになりました。彼は、その素晴らしいロゴのために、AVAに興味を持ったと私に言った。

Sindreが設計したAVAプロジェクトのロゴ

なぜタイに引っ越したのですか?あなたにとって典型的な一日はどのようなものか教えてください。

タイについてはまったく知りませんでした。兵役義務で働いていたとき、旅行することを計画しました。申し出を受けて、さらに4年間滞在しました。人生が起こるので、私はちょうど流れに行きました。

ある日、Googleとの電話インタビューの準備をしていたとき、旅行に行くなら今だろうが、そうでなければ絶対に起こらないと決めたところです。そのため、私はインタビューをキャンセルし、翌日に職場で辞任した。タイへの片道チケットを購入しましたが、それだけでした。

私は東南アジアで半年間バックパッキングをしました。そこで彼女に会いました。それが私のお気に入りだったので、私は最終的にタイに定住しました。豊かな文化、フレンドリーな地元の人々、食べ物が大好きです。私は今タイで2年間住んでいます。

周りの人がいると生産性が上がるので、地元のコーヒーショップで週3日働いています。それ以外の場合、9時から6時まで、私は多くのオープンソースコーディングとメンテナンスを行います。時にはサイドプロジェクトも行います。ほとんどの日、20を超えるプルリクエストと大量の問題を修正します。夕方には、ガールフレンドのイムと時間を過ごします。私たちは両方ともナイトマーケットでのスパイシーな屋台の食べ物が大好きです。時々、勤務中に電話がかかり、夜遅くにコンピューターの前に戻ってきます。

タイマック島のシンドレと彼の彼女

私はプログラミング言語が得意ですが、話し言葉はどのプログラミング言語よりもずっと難しく、タイ語は特に難しいので、タイ語を学びませんでした。一方、私のガールフレンドはタイ語、ロシア語、英語に堪能で、スウェーデン語がかなり得意です。ある時点で、タイ語や他の言語を学びたいのですが、時間に追われていません。

AVAプロジェクトを始めようと思ったきっかけは何ですか?

テストする必要のあるモジュールをたくさん作ったので、Mochaをたくさん使っていました。私はそれがどのように機能したかについて本当に満足していませんでした。 Mochaはいくつかのグローバルオブジェクトを挿入しますが、どこにも定義されていません。 Node.jsでやっていたので、非同期APIがたくさんあり、Mochaを使うのはあまり便利ではありませんでした。

ユースケースに合わせて、よりシンプルで最適化されたものが必要でした。それで、ある週末、私はそれに取り組むことに決めました、そして、日曜日の夕方までに、私はnpmでAVAのために0.0.1バージョンを公開しました。 JavaScriptはシングルスレッドですが、非同期の性質によりNode.jsのIOは並行して発生する可能性があります。 AVAはこれを利用し、テストを同時に実行します。これは、IOの重いテストに特に有益です。さらに、テストファイルは個別のプロセスとして並行して実行されるため、潜在的にさらに優れたパフォーマンスと各テストファイルの分離環境が可能になります。

AVAプロジェクト

バグを修正する時間がなかったため、自分のプロジェクトでのみ使用したかったので、プライベートでした。 1年半後、私は最終的にAVAのロゴを作成し、レポを整理し、多くのドキュメントを書きました。次に、プロジェクトを公開しました。

ほとんどのユーザーはAVAに非常に満足しているようです。なぜなら、私たちは常にプロジェクトに関する肯定的なツイートを受け取っているからです。彼らは、構文がどれほどシンプルで、始めるのがどれほど簡単かを本当に気に入っています。私は自分のかゆみを掻き立てようとしましたが、他の人も同じ問題を抱えており、私の解決策が気に入ったことがわかりました。

最近では、毎週非常に多くの新しい問題やプルリクエストがあるため、プロジェクトの管理により多くの時間を費やしています。

なぜmacOS開発を始めることにしたのですか?

私は少しObjective-Cプログラミングをしましたが、素晴らしい経験はありませんでした。今年の1月に、Macアプリケーションのアイデアを思いつきました。暇があったので、すぐにSwiftに飛び込みました。それは私が通常新しいことを学ぶ方法です。非常に自然です私は製品を作りたいという欲求から始め、その製品を作るために必要なスキルを見つけ、それを学びます。アイデアは計画の前にあります。

SwiftはJavaScriptよりも最初に学ぶのはずっと難しいですが、Swiftは強く型付けされているので輝いています。コンパイル時に、オプションを正しく使用すると、クラッシュする可能性ははるかに低くなります。私がSwiftについて気に入らなかった唯一のことは、Cの古いAPIとやり取りしなければならない場合があることです。

Lungoプロジェクトのロゴ

生産性とユーティリティのアプリをいくつか書きました。 Lungoは私が書いたメニューバーアプリであり、App Storeで見つけることができます。もう1つ書いたのは、Battery Indicatorです。

来年の予定は?フルタイムで行くか、財政的に持続可能になる他の方法を検討する予定ですか?

私は過去3年間貯蓄を利用し、オープンソースソフトウェアをやっています。それはアジアではずっと簡単ですが、永遠には続きません。理想的には、財政的に持続可能な方法でオープンソースをやりたいのですが、それは難しいので、おそらく来年は契約をします。

私はいくつかの異なることを試しました。私がやったことの1つは、GitHubのREADME.mdファイルでサポートを依頼することです。私はそれを広告ではなく小さなバナーと呼びます。私は少しのお金を稼ぎましたが、それは私を支えることができるからほど遠いです。

Patreonを試してみるかもしれません。

JavaScriptエコシステムで改善したいことは何ですか?

私の意見では、JavaScriptエコシステムはすでに素晴らしいですが、ブラウザー側で物事を回避するための多くの癖がまだあります。単純なアプリを世に出すためだけに、この巨大なビルドスクリプトを使用したプロジェクトが非常に多いため、Node.jsが大好きです。

ブラウザの問題は、非常に複雑なことです。考えるネットワークがあり、サイズとパフォーマンスの両方を最適化する必要があり、さまざまなユースケース、選択するフレームワークがたくさんあります。誰もがそれを単純化しようとしますが、それからあなたはあまりにも熱心になりすぎて、それから構成を追加しますが、定型文が多すぎます。その上に多くのソリューションを作成するのではなく、実際のプラットフォームを修正しない限り、簡単な前進は見られません。状況を改善すると思うことの1つは、ブラウザでモジュールを最終的に取得するときです。その場合、すべてのビルド手順が必要ない場合があります。

JavaScript開発者がユニコーンに夢中になっているのはなぜですか?

ポニーの動き全体は、実際にはDjangoコミュニティで始まりました。必要な機能を尋ね始めたとき、開発者は「より高速なHTTPパーサーが欲しい」または「機能するORMが欲しい」と言うでしょう。 「いいえ、あなたはポニーを持つことはできません!」ユニコーン全体の動きは、その機能要求の拒否から始まりました。

愛らしいポニー専用のウェブサイトもあります。

Django、魔法の力を持つポニーのためのWebフレームワーク。

JavaScriptコミュニティにどのように広がったのか正確には覚えていません。それはそれ自体で起こったものの一つでした。ユニコーンと同じくらい面白くてばかげたものを持っていると、プログラミングやOSSで作業するのに役立ち、士気が上がります。愚かなgifについても同じことが言えます。

ESPN.comはKonamiコードで魔法のようになりました。 (ソース:http://kotaku.com/5230185/the-konami-code-makes-espncom-magical)シンドレのウェブサイトシンドレのラップトップのホームスクリーン

私はもともと、Between the Wiresにこのインタビューを投稿しました。これは、開発者製品やデザイナー製品を作成している人々を特集したインタビューシリーズです。

このプロジェクトは、frontendmasters.com、egghead.io、Microsoft Edge、およびGoogle Developersのスポンサーシップにより可能になりました。