みなさん、こんにちは!
今年、 EmboxはGSoCプログラムの メンタリング組織として参加しました 。この記事では、これについて、私たちの意見では、非常に興味深い経験についてお話ししたいと思います。
GSoCプログラム自体について少しお話します。 Google Summer of Codeは、オープンソースの世界で学生を引き付けることを目的としたGoogleのグローバルプログラムです。その結果、学生はコードの品質、技術的リテラシー、開発プロセスのスキルを向上させました。これらの品質は、学生が十分に開発された開発プロセスを備えたライブ産業プロジェクトに関与しているという事実によって改善されています。これが、このプログラムへの学生の参加の主な動機となるはずです。メンタリング組織の動機は、主にプロジェクトコミュニティの開発と拡大です。
正式なルールについて少し。オープンソースプロジェクトを代表するコミュニティのみがプログラムに参加できます。リポジトリはあるが、学生に時間を割く必要があるため、開発者が1人しかいないプロジェクトはおそらく失敗します。プログラムへの参加を希望する組織は、簡単な質問に記入し、少なくとも2人の管理者を宣言し、学生に提案されたアイデアをページに記入する必要があります。アンケートには、簡単な説明、連絡先の詳細、アイデアページへのリンクが含まれています。次は組織の選択です。選考結果に基づいてプロジェクトが受理されると、プログラムの指導機関のページにプロジェクトカードが発行され、学生の選考が始まります。
メンターにとって学生の選抜は非常に難しい段階です。 Emboxは、初めてGSoCプログラムのメンタリング組織として機能しました。そして、私たちはプログラムに参加することをいとわない非常に多くの人々に対していくぶん準備ができていませんでした。正式には、学生の選考はエッセイ(提案)に基づいて行われ、応募者はプロジェクトに参加することによって完了したいタスクと、それをどのように行うつもりかについて話します。もちろん、エッセイには通常レジュームで使用されるデータが含まれていますが、それを要求することもできますが、この情報は、学生が望ましい結果を達成できるかどうかを理解するのに十分ではない可能性があります。これは、プログラムのこの段階でのメンターにとっての主な困難です。
さまざまなプロジェクトで、知人と選択はさまざまな方法で行われます。 GSoCメンターのメーリングリストでの選択に関連する問題について話し合うとき、誰かがSkypeでのインタビューを勧め、誰かがテストタスクを完了し、誰かが詳細な再開を確認しました。 Emboxでは、次のことを行うことにしました。プログラムに参加するには、まず、プロジェクトのメンターの1人に短い手紙を書いて自己紹介する必要がありました。次に、githubのリストから少なくとも1つのタスクを完了します。そして第三に、プログラムのウェブサイトに公式のエッセイを書いてください。
最初の点は特に問題はありませんでした。はい、自己紹介もせずにエッセイを提出する学生もいましたが、私たちは単にそれらを考慮しませんでした。 2点目について少し説明します。 Emboxは、すべての公正に開発されたプロジェクトと同様に、独自の開発プロセスを持っており、通常、学生は産業プロジェクトや分散プロジェクトに参加する練習が不足している可能性があります。さらに、Emboxはオペレーティングシステムです。これは通常、学生の練習の観点からは新しい分野です。そして、少なくとも何かプロジェクトの改善を始める前に、コードを構築、実行、デバッグ、変更する方法、プロジェクトで採用されているプロセス、同じgitワークフローなどを理解する必要があります。
プログラムのアクティブな段階ではそのようなことをしたくなかったので、準備段階でそれを試みました。プロジェクトプロセスの理解、C言語の最小限の知識、ドキュメントの読み取りとインターネット上の情報の検索機能を目的とした、非常に単純なGood FirstIssueタスクを作成しました。実際、このようなタスクを完了した後、学生はコードにいくつかの変更を加えてプルリクエストを準備できると確信していました。
この時点で、申請書の正式な提出の前提条件が満たされていると見なされました。しかし、学生はgithubのリストから他のタスクを完了し、改善と変更を提案することで、プロジェクトに参加し続けることができます。私たちが持っていた唯一の要求は、2番目のGood FirstIssueを受け取らないことでした。全員に平等な機会を与えてほしいと思っていたので、簡単なタスクをたくさん作成するのは簡単なことではありませんでした。他のすべての点で、PRの設定とgitの操作のルールから、プロジェクトのアーキテクチャと機能の説明まで、関心のあるすべての学生を支援しようとしました。
可能な限りプロジェクトに参加し続けた学生たちは、とても良いエッセイを書きました。これは驚くべきことではありません。このようにして、彼らはプロジェクトを深く掘り下げ、完了したいタスクを感じ、経験を積むことができたからです。
これらの学生のエッセイの多くは、作業計画の詳細だけでなく、トピックも異なっていました。提案されたトピックのリストがアイデアページに公開されましたが、当初は考えられる方向性のデモンストレーションとしてのみ検討していました。そして、彼らが私たちに彼ら自身のテーマを提供し始めたとき、私たちはとても幸せでした。
学生が自分にとって興味深いトピックに取り組むことができることが私たちにとって重要です。これは、学生にとっての追加の動機と考えています。しかし、もちろん、あなた自身のテーマは前提条件ではありません。非常に興味深いトピックがあり、プロジェクトに没頭していても、多くの学生が提案されたリストのトピックを扱いたいと考えていました。
この期間の結果、30以上のエッセイがプロジェクトに提出されました。最低限の要件を満たしているだけでなく、他のタスクについて私たちと連絡を取り、それらを達成しようとし、独自のアイデアを提供し、一般的にプロジェクトに興味を示した非常に優秀な学生が少なくとも5人いました。しかし、残念ながら、配布結果に続いて、学生用のスロットは2つしかなく、ほとんどコインを投げる必要がありました。幸いなことに、少し後でわかったように、優秀な学生の何人かは他のプロジェクトに進みました。 エリック・カフェラータと 坂本優太の
2人を選びました ..。どちらも独自のアイデアを思いついた。 ErickはSTM32用のUSBデバイスモードを実装しています。 YutaはEmboxをRISC-VアーキテクチャのMAiX-Bitボードに移行します。興味深いことに、どちらもウェルカムメールにリストのタスクがありました。しかし、予想通り、プロジェクトを深く掘り下げた後、彼らはアイデアをより適切に策定しました。
プログラムの公式計画の次の段階は、学生がコミュニティとより緊密にコミュニケーションを取り、プロジェクトを研究し続ける知人の段階でした。両方の学生がすでにプロジェクトに参加していたので、それは彼らの知人の継続のようなものでした。もちろん違いはありました。生徒がどのトピックを実装する必要があるかはすでにわかっているので、選択した領域に近いタスクを生徒に提供しました。
プログラムのこの段階の結果として、いくつかの準備作業が完了し、私の意見では、学生は将来の計画に従ってよりうまく動くことができました。
夏には、プログラムのメインステージである開発ステージが始まり、その結果、新しいコードが表示されます。この段階は3つの部分に分かれており、それぞれ1か月間です。各パーツの後に、認証が実行されます。学生は平等に働くことが期待されています。そして、毎月の結果に基づいて、学生が順調に進んでいることを確認する必要があります。
実際には、さまざまな学生の活動に気づきました。時には、活動が予備段階よりも低いようにさえ見えました。彼らはセッションを開始したか、研究で過負荷になり、プログラムに参加するのに十分な時間を割くことができなかったことが判明しました。しかし、他の時期には非常に生産的に機能しました。これは私たちのプロジェクトだけでなく起こっていることが判明しました。メンターサミットの結果、ルールを簡素化し、学生とメンター組織が学生の勤務スケジュールについて合意できるようにすることも提案されました。
コミュニケーションはチーム開発の重要な部分です。もちろん、Emboxには、他のオープンソースプロジェクトと同様に、開発者間の独自の通信メカニズムがあります。 Emboxにはテレグラムチャットがあります( 英語、 ロシア語、 ニュース)およびメーリングリスト(英語(embox-devel [at] googlegroups.com)およびロシア語(embox-ru [at] googlegroups.com))。
しかし、もちろん、学生と話し合うことを公開したくはありません。また、一般的なチャットで質問するのが恥ずかしいこともあります。さらに、GSoCは国際的なプログラムであり、言語の壁がある場合もあります。私たちの学生の一人は、彼が英語でコミュニケーションするのは難しいと書いています。その結果、各生徒とコミュニケーションをとるために、メインとヘルプの2人のメンターが参加するプライベートチャットを作成しました。特定のプロジェクトに関する主なコミュニケーションは、これらのチャットで行われました。もちろん、プロジェクトに共通のコミュニケーションは、プロジェクトの共通の場所で行われました( テレグラムチャットまたは github)。
しかし、もちろん、プログラムの大部分は開発に焦点を合わせています。初期の段階では、学生はサードパーティのガイドラインに従う必要がありました。リポジトリのクローンが作成され、モジュールが開発され、PRが提供され、このPRがレビューされ、承認されてから、プロジェクトにマージされます。つまり、サードパーティの開発者は独自のリポジトリを使用します。変更を確認するには、このリポジトリに切り替える必要があります。これは、テストのみの場合は問題ありませんが、アドバイスの一部や複数の人が開発する単一のタスクの場合は、複雑さが増す可能性があります。これを回避するために、両方の学生がEmboxチームに追加され、メインリポジトリにブランチを作成できるようになりました。その結果、これは正しい決定であることが判明しました。プログラムの最終段階で、私たちは学生と非常に緊密に協力したからです。そして、学生たちはチーム開発の経験を積んだことがわかりました。
両方の学生がプログラムを無事に完了しました。 Erick は、 lsusbユーティリティを使用してコンピュータに接続されたSTM32の正しい表示を示しました。そして、Yuta はEmboxコマンドユーティリティを使用したLED制御のデモを行いました。もちろん、エリックはいくつかのデバイスの機能を追加したいと考えており、ECM-ACM(仮想comport)も開発しました。そして、Yutaは暗号化モジュールのサポートを追加したいと考えていました。しかし、これは提案された作業の複雑さを過小評価していました。システムプログラミングのような複雑な分野で3か月で得られた結果は印象的です。そして最も重要なことは、学生はチームワークの素晴らしい経験を積み、オープンソースの世界に精通し、技術的なスキルを大幅に向上させたことです。
PS Emboxは、12月19日に開催されるLinux Vacation / Eastern Europe FreeSoftwareの開発者とユーザーの国際会議のオンライン電撃セッションに参加 します-LVEE2020 Online Edition(Lightning)。