Google Summer of Code 2011

Selenium はユーザーにこのプログラムの利用を推奨しました。

このドキュメントは以前は wiki に掲載されていました

Google Summer of Code とは何ですか?

2005年以来、Google はオープンソース開発への学生の参加を奨励するために Google Summer of Code Program を運営しています。このプログラムにはいくつかの目標があります。

  • 若い開発者がオープンソース開発に参加するきっかけを与える
  • コンピュータサイエンスおよび関連分野の学生に、夏の間、学業に関連する仕事をする機会を提供する
  • 学生に、実際のソフトウェア開発シナリオ(分散開発、ソフトウェアライセンスの問題、メーリングリストのエチケットなど)に触れる機会を増やす
  • すべての人の利益のために、より多くのオープンソースコードを作成およびリリースする
  • オープンソースプロジェクトが新しい開発者やコミッターを特定し、参加させるのを支援する

Google は、採用された学生貢献者に 5000 米ドルの奨学金を支払い、3 か月間コーディングプロジェクトに集中できるようにします。応募締め切りは 2011年4月8日 です。

Selenium - Google Summer of Code プログラムに参加すると、テストと自動テストツールの構築は楽しく、高品質のソフトウェアを提供するための不可欠な部分であることを学ぶことができます。Selenium のコントリビューターとの共同作業は、何千人もの人々が使用するコンポーネントのセットを開発および文書化するための新しいツールセットを提供できます。キャリア開発に向けて貴重な専門的経験を積み、最終的にはあらゆる場所でより高品質の Web アプリケーションを推進するのに役立ちます。

質問は GSoC コーディネーター Adam Goucher まで メール でお願いします。

学生の資格

  • 2010年4月26日までに18歳以上であること
  • 現在、認定された教育機関(大学、大学院、修士課程、博士課程、学部課程など)に在籍していること
  • 米国法により商業取引が禁止されているイラン、シリア、キューバ、スーダン、北朝鮮、ミャンマー(ビルマ)以外の国の居住者および国民
  • Web アプリケーション開発、JavaScript、Python、Flash、iPhone / Android の一部または複数の強力なスキル
  • 自主性、機知に富む、責任感がある、コミュニケーション能力がある
  • 2010年5月24日から8月20日までフルタイムで働けること(SF ベイエリア在住の学生は、メンターの一部と随時オンサイトで働く機会がある場合があります)
  • 学生の資格に関する詳細については、こちら をご覧ください。

上記の要件を満たしている場合は、今年の Google Summer of Code に Selenium に応募してください。

次のステップと締め切り

  1. 期待 を読んで、あなたに期待されることを理解してください。
  2. 応募 を読んで、応募書類に何を書くかを確認してください。
  3. プロジェクトのアイデア をご覧ください。興味のあるものがあれば、提案者に詳細についてお気軽にお問い合わせください。また、開発者メーリングリスト または freenode の IRC #selenium で、独自のプロジェクトのアイデアについて話し合うこともできます。
  4. Google に直接応募書類を提出してください(2011年4月8日まで)。最初の提出後、メンターからのフィードバックに基づいて応募書類を修正できます。応募書類の最終版の締め切りは 2011年4月23日です。
  5. Selenium GSoC チームは、応募書類の審査を完了し、2011年4月23日までに学生とメンターをマッチングします。
  6. Google は、2011年4月26日に採用された学生を発表します。

質問は GSoC コーディネーター Adam Goucher まで メール でお願いします。

プロジェクトのアイデア

これらはメンターによって提案されたプロジェクトのアイデアです。興味のある方は 開発者メーリングリスト に投稿するか、GSoC コーディネーター Adam Goucher に メール でご連絡ください。

スクリプト可能なプロキシ

メンター Patrick Lightbody(?)

難易度

<不明>

説明 Selenium はブラウザ制御フレームワークですが、トラフィックの生成に関して何かをしたい場合があります。これを行う「正しい」方法は、プロキシを中間に入れて、その API を使用してトラフィック情報を取得/操作することです。このプロジェクトは、Selenium のユーザーが必要とする API を追加するために BrowserMob プロキシを拡張します。

タグ Se-RC、Se2

画像ベースのロケータ

メンター

<不明>

難易度

<不明>

説明 Sikuli は、画像に基づいてページ上の項目を操作する機能で注目を集めています。このプロジェクトでは、画像ベースのロケータを利用可能なロケータのリストに追加します。

タグ Se-RC、Se2、Se-IDE

Selenese Runner

メンター Adam Goucher

難易度

<不明>

説明 サーバーの -htmlSuite オプションを使用して、Se-IDE の外部で Selenese スクリプトを実行できます。これには、サーバーを常に起動/停止する必要があるなど、いくつかの欠点があります。このプロジェクトでは、Selenese スクリプトがサーバーと対話するためのスタンドアロンの「ランナー」を作成し、サーバーから関連コードを削除します。

タグ Se-RC、Se、Se-IDE

指導教員の候補

まだメンターに応募するには遅すぎません。興味のある方は、ここにプロジェクトのアイデアを追加し、Adam Goucher とロジスティクスについて話し合ってください。

期待

概要

このページでは、コミュニケーションに関する Google Summer of Code の学生への期待事項を詳細に説明しています。これは、期待事項を明文化していない Selenium プロジェクトに役立ちます。このドキュメントをそのまま参照して使用できます。

Google Summer of Code のコーディング期間は非常に短いです。さらに、多くの学生は以前に実際の開発/エンジニアリング作業をあまり行っていません。プログラムの主な目的の 1 つは、学生を F/OSS および実際の開発シナリオに紹介することです。さらに、ほとんどのメンターと学生は異なる場所にいるため、対面での時間は困難です。このため、すべての期待事項が 5 月 26 日に学生がコーディングを開始する前に指定されることが、GSoC プロジェクトの成功にとって非常に重要です。これは、学生とメンター間の頻繁なコミュニケーションの長いシリーズの最初のステップである必要があります。

このドキュメントでは、学生とメンターに対するさまざまな期待事項と、効果的なコミュニケーション方法について説明します。

週40時間の労働

学生は、GSoC プロジェクトに週に少なくとも 40 時間取り組むことが期待されています。これは基本的にフルタイムの仕事です。

GSoC プロジェクトの利点は非常に大きいです。

  • 長期的にプロジェクトコミュニティの一員になるチャンス - これは他のプロジェクト、ソーシャルネットワーク、良い友人、貴重なリソースなどへの関与につながる可能性があります...
  • 実際のプロジェクトで実際の開発者と協力するチャンス
  • 学生のプロジェクトの最終結果は、将来のすべての雇用主が見ることができる履歴書資料に使用できます。

最後の点は、開発を始めたばかりの開発者にとって重要な点です。雇用主は、潜在的な従業員を見るときに、参照可能な仕事の成果があることを非常に高く評価します。あなたのコードは、ホワイトボード上のアルゴリズムの量よりもあなたの能力について多くを語ります。

そしてもちろん、プログラムはあなたに 5000 米ドルの収入と本当にクールな Tシャツを提供します。

一部の GsoC 学生は、著名なテクノロジーブロガー、オープンソースプロジェクトのコミッター、会議の講演者、他の学生のメンターなどになっています...

自己動機と安定したスケジュール

学生は自己動機があることが期待されます。メンターは学生に優れた成果を上げるように促すかもしれませんが、学生が働く意欲がない場合、学生はおそらく参加からあまり得られないでしょう。学生は毎日プロジェクトに取り組む時間をスケジュールし、定期的なスケジュールを守る必要があります。何日もぶらぶらして、締め切り直前に徹夜するのは容認できません。それはあなたのコードに表れます。

定期的な週次ミーティングとメンターとの頻繁なコミュニケーション

メンターとの定期的な週次ミーティングは必須です。計画されたミーティングでは、以下について話し合う必要があります。

  • 現在取り組んでいること
  • どこまで進んだか
  • 実装方法
  • 次に取り組む予定のこと
  • 発生した問題
  • それらを回避するために何をしたか
  • 行き詰まっている場合に妨げているもの
  • コードレビュー(該当する場合)

メンターは、GSoC プロジェクトにとって最も貴重なリソースの 1 つです。メンターは、確かな開発者であり、確かなエンジニアです。メンターは、プロジェクトの意思決定の歴史、物事のアーキテクチャ、関係する他の人々、物事を行うプロセス、および学生が最も成功するのに役立つその他の文化的な知識を十分に知っているほど長くプロジェクトに取り組んでいる可能性があります。

GSoC プロジェクトが開始される前に、メンターと学生は次の質問への回答を明確にする必要があります。

  1. 定期的なスケジュールされたコミュニケーションはいつですか?毎週?2日ごと?月曜日、水曜日、金曜日?
  2. 定期的なスケジュールされたコミュニケーションに最適なメディアは何ですか?VOIP?電話?対面?
  3. スケジュールされていないコミュニケーションに最適なメディアは何ですか?メール?インスタントメッセンジャー?

実行すること

  • あなたの時間とメンターの時間を考慮し、定期的なミーティングを計画する
    • 解決策、コードレビュー、次のマイルストーンの計画を生産的に行うために、上記のアジェンダへの回答を事前にメールすることを検討してください。
  • 計画されたミーティング以外でも、メンターやメーリングリスト/IRC の開発者と頻繁に話す
    • あなたのメンターはあなたを助け、軌道に乗せるのに役立つ唯一の人ではありません。Selenium には素晴らしいコミュニティがあり、他の人々からも多くのことを学ぶことができます。
  • あなたのスケジュールをメンターに知らせる
    • あなたは休暇に行きますか、引っ越しますか、クラスの論文を書いていますか?あなたのメンターがあなたがどこにいるのか、またはあなたの生産性の遅れを期待すべきかを知らない場合、あなたのメンターはあなたがコースを修正したり、それに応じて計画したりするのを助けることができません。

避けること

  • メンターと1週間以上連絡を取らないこと
    • プロジェクトのタイムラインでは、コミュニケーションの計画外の中断は許容されません。

バージョン管理

学生はプロジェクトにバージョン管理を使用する必要があります。

実行すること

  • 頻繁にコミットする
    • これにより、問題を迅速にキャッチし、締め切り前の恐ろしい大規模コミットを防ぐことができます。
  • 質の高いコミットメッセージを使用する

悪い例:バグを修正しました。微調整。

良い例:thingamajig が親 doohicky が解放された後に解放されなかったメモリリークを修正しました。重複削除に使用される比較を変更して、バグ #902 (Google Code) を修正しました。レンダリングが完了した後にバッファをスワップインする別のバッファでレンダリングするという Joe の良いアイデアを実装しました。テーブルを簡素化して HTML を改善しました。

  • 特定のバグ番号、リンク、および問題をできるだけ多く参照する
  • バージョン管理の履歴は、何が起こったのか、なぜ起こったのか、誰がそれを行ったのかの最高のタイムラインログであることがよくあります。

避けること

  • 複数の無関係な変更を 1 つの大きなコミットでチェックインする
    • 変更の 1 つに問題があり、誰かがロールバックする必要がある場合、ロールバックがより困難になります。
  • テストされていない変更をチェックインする

プロジェクトとのコミュニケーション

ほとんどの F/OSS プロジェクトには、プロジェクトメンバーとコミュニティ用のメーリングリストがあり、IRC チャネルを使用してコミュニケーションを取っています。これらのコミュニケーションチャネルにより、学生は他のプロジェクトメンバーと連絡を取り合うことができ、非常に貴重なリソースになります。プロジェクトの他のメンバーは、プロジェクトのさまざまな部分に精通している可能性があり、メンターが利用できない場合のフォールバックを提供したり、機能の特定の動作を理解するための適切な相談相手になったりする可能性があります。あなたはメンターを割り当てられますが、コミュニティ全体があなたが学ぶのを助けるためにそこにいます。あなたの処分にあるすべてのリソースを利用してください。

内気は、オープンソース開発に不慣れな学生によくある問題です。プロジェクトの開始時に、学生は「こんにちは!私は...です。そして、...の GSoC プロジェクトに取り組んでおり、これが提案へのリンクです。」というメールをプロジェクトのメーリングリストに送信し、IRC にログインして「こんにちは」と言うことが推奨されます。早めに打ち解けてください。プロジェクトの残りの部分が簡単になります。自己紹介する場所がわからない場合は、メンターに尋ねてください。

プロジェクトメーリングリスト

メーリングリストは、機能仕様と期待される動作を検討するのに最適な方法です。

多くの場合、メーリングリストはアーカイブされ、アーカイブは以前の議論、決定、および技術的な正誤表に関する豊富な情報源になります。

実行すること

  • リストで質問する前に、アーカイブを検索して回答を探す
  • 常に礼儀正しくする
  • 具体的にする
    • 技術的なことについて議論するときは、データ、参考文献を引用し、リンクを使用してください。
  • 我慢強くする
    • 数分または数時間以内に回答を期待しないでください。人々は多くの場合、1日に1回メーリングリストのメッセージを読みます。

避けること

  • 失礼な態度を取ること
    • ほとんどのメーリングリストはアーカイブまたは記録されているため、あなたが言うことはすべて永遠に誰でも見ることができる可能性があります。人生のあらゆる側面で良いマナーを心がけてください。
  • すべて大文字と過度の句読点を使ってものを言うこと
    • これは叫んでいると認識されます。
  • 激しい議論に巻き込まれること
    • 誰かがあなたを侮辱した場合、無視するのが最善です。

IRC

ほとんどの F/OSS プロジェクトには IRC チャネルがあり、複数のチャネルがあるプロジェクトもあります。プロジェクトとそのコミュニティの人々は、これらのチャネルで「たむろ」し、さまざまなことについて話し合います。一部のプロジェクトでは、プロジェクトのステータス、開発の進捗状況、主要な障害となっているバグのステータス、将来の計画などをカバーするために定期的なミーティングを開催しています...

プロジェクトに IRC チャネルがある場合、そこにたむろするのは良い考えです。これにより、学生はコミュニティと交流することができ、問題を解決したり、アイデアをリアルタイムで検討したりするためのフォーラムにもなります。

実行すること

  • プロジェクトに取り組んでいるときは、プロジェクト IRC チャネルにたむろする
  • IRC チャネルにいる人と交流する時間を取る これはコミュニティを構築し、あなたを知らない人よりもあなたに精通している人から助けを得るのが簡単になります。

避けること

  • すべて大文字と過度の句読点を使ってものを言うこと これは叫んでいると認識されます。
  • 文法が悪い 他の人があなたが言おうとしていることを理解するのが難しくなります。
  • 失礼な態度を取ること

私たちは皆、感情を持った現実の人々であり、あなたが失礼な場合、人々はあなたと交流したり、あなたを助けたりする可能性が低くなります。また、IRC の履歴が記録され、永遠に誰でも見ることができるようになることも珍しくありません。

参照

設計ドキュメント

学生が GSoC プロジェクトのコース中に設計ドキュメントを維持するのは良い考えです。これらの設計ドキュメントには、以下を含める必要があります。

  1. プロジェクト計画。元のプログラムアプリケーションを肉付けするための追加の詳細を含む
  2. プロジェクト計画からの逸脱と、元の設計計画がどのように、そしてなぜ変更されたか
  3. 解決または克服できなかった問題
  4. 考えられる将来の方向性
  5. 使用されたリソースまたは関連する仕様

学生とメンターは、GSoC のコース中に維持する必要がある設計ドキュメントについて検討する必要があります。

注意すべきことの 1 つは、学生が設計ドキュメントの作成にすべての時間を費やすべきではないということです。設計を追跡することは重要ですが、コードを作成することも重要です。メンターは、学生がこれら 2 つの目標のバランスを取るのを支援できるはずです。

ブログ

学生は、少なくとも2週間に1回、自分の仕事についてブログを書く習慣を身につける必要があります。歴史的に、そうする学生ははるかに速く学び、より生産的になり、コミュニティとのつながりをより強くします。一部はコントリビューターになり、一部は会議で講演/プレゼンテーションを行っています。あなたのキャリアをどのように成長させたいですか?

応募

評価基準

私たちは、学生が学習中に Selenium に触れる機会が非常に少ないことを認識しており、したがって、あなたの能力に基づいて評価します。

  • 思考力、学習力、推論力
  • 才能(これまでに何を達成したか、プログラミングおよびその他の面で)
  • 態度、コミュニケーション能力、コミュニティとメンターとうまく協力する能力
  • GSoC で成功するための可用性とコミットメント、およびコミュニティとの継続的な関与の可能性
  • 要するに、あなたをプロジェクトイニシアチブを主導するのに適した人物にするものは何ですか :-)

4月9日までに申請書を提出すれば、4月18日までメンターと一緒に提案書を微調整することができます。

提案書の準備

開始するのに役立つ質問をいくつか示します。これに従う必要はなく、申請書は引き続き検討されますが、開始するのに適した場所です。

重要だと思うものは何でも含めてください。1行の回答は考慮されない可能性があります。それまでの間、コミュニティに自己紹介し、開発者メーリングリストに書き込むことでプロジェクト提案についてお気軽にご相談ください。

一般的な質問:

  1. あなた自身について簡単に紹介してください。
  2. あなたに連絡できるメールアドレスと電話番号。
  3. 何を勉強していますか?2010年9月には何年生になりますか?
  4. 今年の夏は Summer of Code にどれくらいの時間を費やすことができますか?今年の夏は何をしていますか?

あなたの経験:

  1. プログラミングを始めたきっかけは何ですか?どれくらい続けていますか?なぜそれが好きですか?見せてくれる個人的なプロジェクトはありますか?コーディングコンテストに参加したり、他の学生を教えたり、指導したりしたことはありますか?
  2. あなたのプログラミングの興味は何ですか?あなたは C 言語が好きですか - linux カーネルを深く掘り下げたいですか?あなたはあなたの仲間よりも Java についてもっと知っていますか?それともあなたは python/ruby の人ですか?JavaScript はどうですか?つまり、あなたのスタイルは何ですか?
  3. 以前にプログラマーとしてソフトウェア会社で働いたことがありますか?
  4. 以前にオープンソースプロジェクトに参加したことがありますか?どのプロジェクトですか?あなたの参加について説明してください。
  5. ブログはありますか?履歴書はありますか?
  6. 何があなたを Google Summer of Code に適した人物にしますか?そこから何を得たいですか?

プロジェクトに関する質問:

  1. どのアイデアを選びましたか?
  2. アイデアについて詳しく説明し、夏に達成したいことを説明してください。この質問は、リストから選択する代わりに独自のアイデアを持っている場合に特に重要です。アイデアを前進させるお手伝いをできるように、提案内容をよく理解したいからです。
  3. 達成したいことのプロジェクトの簡単なタイムラインを示してください。作業スケジュールに考える時間(「調査」)を含めてもかまいません。作業には以下を含める必要があります。
    • 調査
    • プログラミング
    • ドキュメント
    • 普及
  4. コードをどのようにテストする予定ですか?どのバージョン管理システムとビルドシステムを使用する予定ですか?
  5. あなたのプロジェクトが非常に成功した場合、Google Summer of Code が完了した後もさらに貢献したいですか?

提案書のサンプルアウトライン

良い提案には、次のコンポーネントが含まれます。

  • 名前と連絡先情報。メール、電話、IM、Skype などを含めます。
  • タイトル。プロジェクトの目標に関する一言。
  • 概要。短い要約。プロジェクトは何をしますか?
  • コミュニティへのメリット。なぜ Google と Selenium はこの作品をスポンサーすることを誇りに思うのでしょうか?オープンソースまたは社会全体はどのように利益を得ますか?
  • 成果物。計画があり、夏の終わりに何かが届けられることを知りたいと思っています。:-) マイルストーンと締め切りを含む簡潔で明確な作業分解構造を示してください。成果物をオプションまたは必須としてラベル付けしてください。ホワイトペーパーを作成したり、従来のソフトウェアエンジニアリングスタイルでプロジェクトを計画したりすることから始めることができます。作業スケジュールに考える時間(「調査」)を含めてもかまいません。作業には以下を含める必要があります。
    • 調査
    • プログラミング
    • ドキュメント
    • 普及
  • 説明。プロジェクトの詳細の短いリスト。メンターがガイダンスを提供できますが、あなたが考えていることを最初に教えてください:-)
    • 大まかなアーキテクチャ
    • あなたが洞察を得ることができる並行プロジェクトへのリンク
    • どのバージョン管理システムとビルドシステムを使用する予定ですか
    • どのようにテストする予定ですか
    • コードを受け入れてもらうためのベストプラクティスなど
  • 略歴。あなたは誰ですか?何があなたをこのプロジェクトに取り組むのに最適な人物にしますか?
    • あなたの教育、仕事、オープンソースの経験を要約してください。
    • あなたのスキルをリストアップし、あなたの資格の証拠を提示してください。あなたが仕事ができることを私たちに納得させてください。
    • 公開された論文、成功したオープンソースプロジェクトなどはありますか?教えてください!
    • 夏の間の Summer of Code 以外の計画、特に雇用とクラスの受講をリストアップしてください。スケジュールと時間の制約について具体的に述べてください。