脱お客様

pull req の送り方

or how I learned to stop worrying about bad English and love open source.

コップ本:

Scala という名前は「スケーラブルな言語」を意味する。

The name Scala stands for “Scalable language.“

拡張性の高い言語

  • 中置記法、implicit など

infix, implicit, etc enables natural extension.

ライブラリで何でもできる

you can do anything with libraries.

Java, C#, C++

  • アメリカの本社が標準ライブラリを作ってる
  • 「本家」vs 「分家」

std libs written by the hq in the US.

Scala

  • ML, twitter, github

both the lang and libs are developed openly.

Scala

  • 必要なものがあればコミュニティで作る文化。

community-driven culture.

コミュニティ

  • 英語圏が主流。もっと絡んでいこう。

the mainstream is English based.

普段使ってるライブラリ

  • バグを見つけた

suppose you found a bug in a library.

を示す

show your love.

とは

  • 信頼関係
  • お互いが成功して欲しいと思っている

trust, and wishing for each other’s success.

伝わることが大事

  • twitter で「使ってます。awesome!」
  • blog 記事で「皆も使おう。awesome!」
  • ML も参加する。

say it out loud.

どこにバグを報告するか

  1. ガイドラインを読む
  2. ML (google groups)
  3. github issue

where to report bugs.

物的証拠を積み上げる

  • 事実と意見を分ける

prepare evidence. separate facts from opinion.

バグ報告の3項目

  1. repro steps (再現手順)
  2. problems (問題)
  3. expectation (期待されるふるまい)
  4. notes (僕の考えたバグが起こっている理由)

steps (再現手順)

  • 開発者自身のコンピュータ上で問題を再現する手順
  • スタックトレースのみとか無理
  • markdown でフォーマットする (```scala)

steps to reproduce on dev’s machine.

problems (問題)

  • 観測可能な事実を詳しく
  • 意図的な動作かもしれない

what you think is the problem.

expectation (期待)

  • 検証可能な期待される振る舞い
  • 明らかな場合は “it works” もアリ

acceptance criteria.

notes (備考)

  • RFC など根拠となるもの
  • バグが発生理由の解析 (普通は必要無い)

justifications and analysis.

バグ報告の例

level 2: 再現データ

  • github 上にバグを自動的に再現するプロジェクトを作る
  • 開発者の手間が省ける

a github project with repro data.

level 3: pull req

  • 問題を修正するコードを送る

sending fix code.

pull req

  1. プロジェクトの作法を尊重する
  2. トピックブランチを立てる
  3. テストを書く

a few tips on sending a pull req.

プロジェクトの作法を尊重する

  • ML は必ず参加
  • 開発状況を把握する
  • コミットコメントの形式

respect the project.

トピックブランチを立てる

  • ブランチごと取り込まれるので必ず立てる

make a topic branch.

テストを書く

  • バグを再現するテストを書く
  • 当然テストは全て実行する

repro the bug using tests.

実装の注意

  • 互換性に注意する。ライブラリの場合、勝手にシグネチャを変更しない
  • 命名規則に合わせる
  • タブ文字/空白文字インデントなど
  • pull req 後レビューが入ることがある

compatibility, naming, and formatting.

level 4: 機能の追加

  • background (背景)
  • what this changes (変更点の説明)
  • ドキュメントも更新する
  • 既存のコードに手を入れる場合は ML に打診する

feature enhancements.

pull req の例

yea, these subtitles.

ご清聴ありがとうございました

thanks!