$30 off During Our Annual Pro Sale. View Details »

OSS入門 世界に参加する最初のひと押し / OSS first step

OSS入門 世界に参加する最初のひと押し / OSS first step

Masahiro Wakame

November 03, 2018
Tweet

More Decks by Masahiro Wakame

Other Decks in Programming

Transcript

  1. OpenSourceSoftware⼊入⾨門
    世界に参加する最初のひと押し
    わかめ まさひろ

    View Slide

  2. わかめ まさひろ @v vakame
    Masahiro Wakame
    DefinitelyTyped
    tsfmt
    技術書典

    View Slide

  3. 今⽇日話すこと
    •OSSって何?
    •OSSってどうやって回ってるの?
    •問題の⾒つけ⽅
    •どうすると⼊っていきやすいか

    View Slide

  4. Welcome!
    •ようこそʙʙ!
    •質問あったら話を遮って⼿をあげる
    •いっぱい質問があったら嬉しい
    •時間が⾜りなくなっても気にしない
    旅(⼈人に対して)の恥はかき捨て…!

    View Slide

  5. OSSって何?
    Open Source Software

    View Slide

  6. Open Source Software?
    •ソースが公開されている
    •修正を送ると取り込んでくれる(かも)
    •ライセンスの元、好きに使える
    オープンソースの定義

    View Slide

  7. どうやって回っているの?
    •⼤⼈数が⽬にするので⾼品質…!?
    •ほんの⼀握り…
    •ぶっちゃけ直接⾦にはならない
    •だってオープンだから

    View Slide

  8. OSSは⾼高品質なの?
    •いろいろな要素に左右される
    •オーナーの気質や⼒量やモチベ
    •ユーザがたくさんいるか
    •リリースサイクルの⾧さ

    View Slide

  9. つまり?
    •⼤多数はショボい
    •→課題がいろいろある!
    •→やっていく余地が多い!
    ショボい問題ほど直しやすい!

    View Slide

  10. はたして⾦金金になるの?
    •我々の近場のOSSは基本⾦になりません
    •様々なメリットがあるのでやります
    •パッチ来ると嬉しいな とか

    View Slide

  11. 会社がオーナーの場合
    •サポートを売ったりする
    •サービスホストしてレンタルしたり
    •商⽤利⽤する場合フィーを取るとか
    OSSにしとくと退職した後も使える(⼩小声

    View Slide

  12. 個⼈人がオーナーの場合
    •趣味(儲からない)
    •パトロン系サービスの利⽤(儲かる?)
    •どこかに雇われて仕事としてやる
    •クックパッド→Rubyコミッタ
    •メルペイ→僕
    仕事の100%ではないです

    View Slide

  13. 何故⾃自分がやるのか
    •世界を⾃分好みの⽅向に誘導したい!
    •⾃分の持つ技術を世界に共有したい!
    池に⽯石投げると楽しいみたいな話

    View Slide

  14. どこでやるか
    •GitHub ←調べた時の情報が多い
    •それ以外 ←僕はよくわからん
    •Linux, Android, WebKit etc…
    •ゆえに主にGitHubの話をします

    View Slide

  15. 問題の⾒見見つけ⽅方
    ⾒見見つけたら直せる

    View Slide

  16. 開発やっていますか?
    •やっている
    •やってない
    やりましょう

    View Slide

  17. やると困ることがある
    •機能たりない
    •バグってる
    •こんな機能ほしい
    •→やっていく必要がある
    やらずに困れることはほぼないです

    View Slide

  18. どうする?→改善
    •コードを書いて送る
    •パッチを送る
    •Pull Requestを送る
    •取り込まれる→リリースされる→使える
    •嬉しい!!✌

    View Slide

  19. 以上!
    脳筋感がありますね

    View Slide

  20. ⼊入っていきましょう
    誰もが初回は初めて

    View Slide

  21. プロトコル
    •これバグじゃね?と報告する
    •原因分析に協⼒する
    •原因を特定する
    •直し⽅相談する
    •直す!
    実施すると偉いライン
    報告すらしないと偉くない

    View Slide

  22. プロトコル
    •これバグじゃね?と報告する
    •原因分析に協⼒する
    •原因を特定する
    •直し⽅相談する
    •直す! いきなりここに⾏行行くと⾟辛い話になる時がある

    View Slide

  23. 前段階
    •いきなり報告するの怖い…!
    •どこかで質問して確かめる
    •⾃分のやり⽅が悪い?それともバグ?
    •StackOverflowとか
    •コミュニティや所属組織のチャット

    View Slide

  24. その他の⽅方法
    •Good first issue 探す
    •TypeScriptの例 bit.ly/2PGmKao
    •友達がƅ ƅ´ωAƅ
    ƅŇűƅŖ したのを助ける
    •ようするに代わりに直す

    View Slide

  25. 機能追加の話
    •バグ報告よりちょっとむずかしい
    •まず提案する
    •○○ができると我々はより幸せになれる!
    •PR送ってみていい?って聞く
    慣れたらいきなり送っても⾟辛くない

    View Slide

  26. 英語
    •みんな使ってる
    •わりとみんな下⼿ ≒ ⾮ネイティブ多い
    •英語ヘタやな!って⾔われたことない
    •わかる努⼒をしてくれる(すき
    •こっちもわかる努⼒する

    View Slide

  27. 英語
    •みんなの1st⾔語⇔英語 翻訳機はまぁある
    •Google翻訳を使い倒していこうな!
    •英語→⽇本語よく使う
    •変な⽇本語出てきたら英を⼿直しする
    ⽇日→英→⽇日 も使う

    View Slide

  28. ⻄西海海岸語
    •cool →ただの相槌
    •good →ヤバい指摘をする前の枕詞
    •部分ではなく⽂全体を解釈する必要あり
    僕が勝⼿手に⾔言ってます

    View Slide

  29. PRやパッチを送る
    捨てて書き直す覚悟

    View Slide

  30. コードを送る意味
    •だいたい以下の意味を含む
    •俺のコードこそ最強!
    •お前に俺のコードあげるから
    •あとのメンテは全部よろしく!
    •↑なかなかすごいこと⾔ってる

    View Slide

  31. 納得が必要
    •じゃないと引き取ってくれないよね
    •基本的な姿勢
    •我々は味⽅同⼠である
    •我々はコードを改善したい
    これを会話の⼟土台に使う

    View Slide

  32. 上⼿手に議論する
    •コード⾒せてわかりあえる時もある
    •そうじゃない場合やっていく必要がある
    •喧嘩(決裂)に突⼊すると旨味なし
    •アホには近寄らない
    多少慣れが必要です(最初はみんな下⼿手)

    View Slide

  33. 議論とは?
    •合意できる部分を確かめ合う作業
    •討論とは全く異なる(討論は合意しない)
    •相⼿の真の意⾒を引き出す必要がある
    •こともある
    •オーナーの意⾒を取り込むほうが早い
    譲れるところは最⼤大限譲るのが楽

    View Slide

  34. 脇道:⾯面⽩白い読み物
    •d.hatena.ne.jp/hyoshiok/20090704
    •TOMOYO Linuxに学ぶ説得術
    •パッチ送る⼈ともらう⼈の観点の差

    View Slide

  35. Tips
    •前書いた記事 bit.ly/2CYFPNV
    •主語をIやYouではなくWeにする
    •Weにして破綻しない⽂章を書く
    •We are stupid! Fxxk we! とは書けない

    View Slide

  36. オーナーの気持ち
    •みんなに便利に使ってほしい
    •モチベは維持したい
    •みんなが困ることはあまりしたくない
    •あわよくば⼈のリソースで楽したい

    View Slide

  37. 便便利利に使ってほしい
    •⾃分が便利ならみんなもきっと便利
    •コードが広く使われて検証されてほしい
    •バグが⾒つかるから ついでにパッチくれ
    •できれば⾦も欲しい
    •↑難しい

    View Slide

  38. モチベ維持したい
    •OSSで最も重要かつ貴重なリソースは?
    •オーナーのやる気
    •やりたくないことやってほしい
    •僕の場合ドキュメントとか英語書くとか

    View Slide

  39. みんなを困らせたくない
    •バグ埋め込みたくない
    •バグりやすいコードmergeしたくない
    •Breaking Changeしたくない
    •≒気軽にBCするライブラリ使いたくない
    •↑ものすごく⼤事 すごく⼤事 とても

    View Slide

  40. やりとりの実例例
    •最近の活動 bit.ly/2zpGpRo
    •mergeされずにcloseされたPRもちらほら
    •#327→#353→#388→#392(→#404)
    •紆余曲折を経て⽬的を果たしたヤツ
    達成⽬目標伝える→オーナーを尊重した修正

    View Slide

  41. 与太話
    時間余ってる?どう?

    View Slide

  42. ライセンス
    •ちゃんと確認する
    •⼀番厄介なライセンスは?
    •ライセンス無し
    •↑ライセンス何?と聞けば概ね解決する

    View Slide

  43. ⾃自分がオーナー
    •やりたくないことはやらなくていい
    •ライセンス違反の指摘とかは除く
    •とりあえず公開することに慣れる
    •反応0がデフォなので過度な期待はしない
    •README.mdだけはちゃんと書く

    View Slide

  44. ⾃自分とは
    •有象無象の⼀部である
    •多少雑でもわりとすぐ忘れられる
    •きちんと説明できないと話が進まない
    良くも悪くも

    View Slide

  45. CONTRIBUTING.mdとか
    •GitHubのテンプレ的構造がある
    •bit.ly/2JzOWWP
    •TypeScriptの場合 bit.ly/1o2weYt
    ⾒見見てみよう!

    View Slide

  46. 質問コーナー

    View Slide