https://camphor.connpass.com/event/104719/
OpenSourceSoftware⼊入⾨門世界に参加する最初のひと押しわかめ まさひろ
View Slide
わかめ まさひろ @v vakameMasahiro WakameDefinitelyTypedtsfmt技術書典
今⽇日話すこと•OSSって何?•OSSってどうやって回ってるの?•問題の⾒つけ⽅•どうすると⼊っていきやすいか
Welcome!•ようこそʙʙ!•質問あったら話を遮って⼿をあげる •いっぱい質問があったら嬉しい•時間が⾜りなくなっても気にしない旅(⼈人に対して)の恥はかき捨て…!
OSSって何?Open Source Software
Open Source Software?•ソースが公開されている•修正を送ると取り込んでくれる(かも)•ライセンスの元、好きに使えるオープンソースの定義
どうやって回っているの?•⼤⼈数が⽬にするので⾼品質…!?•ほんの⼀握り…•ぶっちゃけ直接⾦にはならない•だってオープンだから
OSSは⾼高品質なの?•いろいろな要素に左右される•オーナーの気質や⼒量やモチベ•ユーザがたくさんいるか•リリースサイクルの⾧さ
つまり?•⼤多数はショボい•→課題がいろいろある!•→やっていく余地が多い!ショボい問題ほど直しやすい!
はたして⾦金金になるの?•我々の近場のOSSは基本⾦になりません•様々なメリットがあるのでやります•パッチ来ると嬉しいな とか
会社がオーナーの場合•サポートを売ったりする•サービスホストしてレンタルしたり•商⽤利⽤する場合フィーを取るとかOSSにしとくと退職した後も使える(⼩小声
個⼈人がオーナーの場合•趣味(儲からない)•パトロン系サービスの利⽤(儲かる?)•どこかに雇われて仕事としてやる•クックパッド→Rubyコミッタ•メルペイ→僕仕事の100%ではないです
何故⾃自分がやるのか•世界を⾃分好みの⽅向に誘導したい!•⾃分の持つ技術を世界に共有したい!池に⽯石投げると楽しいみたいな話
どこでやるか•GitHub ←調べた時の情報が多い•それ以外 ←僕はよくわからん•Linux, Android, WebKit etc…•ゆえに主にGitHubの話をします
問題の⾒見見つけ⽅方⾒見見つけたら直せる
開発やっていますか?•やっている •やってない やりましょう
やると困ることがある•機能たりない•バグってる•こんな機能ほしい•→やっていく必要があるやらずに困れることはほぼないです
どうする?→改善•コードを書いて送る•パッチを送る•Pull Requestを送る•取り込まれる→リリースされる→使える•嬉しい!!✌
以上!脳筋感がありますね
⼊入っていきましょう誰もが初回は初めて
プロトコル•これバグじゃね?と報告する•原因分析に協⼒する•原因を特定する•直し⽅相談する•直す!実施すると偉いライン報告すらしないと偉くない
プロトコル•これバグじゃね?と報告する•原因分析に協⼒する•原因を特定する•直し⽅相談する•直す! いきなりここに⾏行行くと⾟辛い話になる時がある
前段階•いきなり報告するの怖い…!•どこかで質問して確かめる•⾃分のやり⽅が悪い?それともバグ?•StackOverflowとか•コミュニティや所属組織のチャット
その他の⽅方法•Good first issue 探す•TypeScriptの例 bit.ly/2PGmKao•友達がƅ ƅ´ωAƅƅŇűƅŖ したのを助ける•ようするに代わりに直す
機能追加の話•バグ報告よりちょっとむずかしい•まず提案する•○○ができると我々はより幸せになれる!•PR送ってみていい?って聞く慣れたらいきなり送っても⾟辛くない
英語•みんな使ってる•わりとみんな下⼿ ≒ ⾮ネイティブ多い•英語ヘタやな!って⾔われたことない•わかる努⼒をしてくれる(すき•こっちもわかる努⼒する
英語•みんなの1st⾔語⇔英語 翻訳機はまぁある•Google翻訳を使い倒していこうな!•英語→⽇本語よく使う•変な⽇本語出てきたら英を⼿直しする⽇日→英→⽇日 も使う
⻄西海海岸語•cool →ただの相槌•good →ヤバい指摘をする前の枕詞•部分ではなく⽂全体を解釈する必要あり僕が勝⼿手に⾔言ってます
PRやパッチを送る捨てて書き直す覚悟
コードを送る意味•だいたい以下の意味を含む•俺のコードこそ最強!•お前に俺のコードあげるから•あとのメンテは全部よろしく!•↑なかなかすごいこと⾔ってる
納得が必要•じゃないと引き取ってくれないよね•基本的な姿勢•我々は味⽅同⼠である•我々はコードを改善したいこれを会話の⼟土台に使う
上⼿手に議論する•コード⾒せてわかりあえる時もある•そうじゃない場合やっていく必要がある•喧嘩(決裂)に突⼊すると旨味なし•アホには近寄らない多少慣れが必要です(最初はみんな下⼿手)
議論とは?•合意できる部分を確かめ合う作業•討論とは全く異なる(討論は合意しない)•相⼿の真の意⾒を引き出す必要がある•こともある•オーナーの意⾒を取り込むほうが早い譲れるところは最⼤大限譲るのが楽
脇道:⾯面⽩白い読み物•d.hatena.ne.jp/hyoshiok/20090704•TOMOYO Linuxに学ぶ説得術•パッチ送る⼈ともらう⼈の観点の差
Tips•前書いた記事 bit.ly/2CYFPNV•主語をIやYouではなくWeにする•Weにして破綻しない⽂章を書く•We are stupid! Fxxk we! とは書けない
オーナーの気持ち•みんなに便利に使ってほしい•モチベは維持したい•みんなが困ることはあまりしたくない•あわよくば⼈のリソースで楽したい
便便利利に使ってほしい•⾃分が便利ならみんなもきっと便利•コードが広く使われて検証されてほしい•バグが⾒つかるから ついでにパッチくれ•できれば⾦も欲しい•↑難しい
モチベ維持したい•OSSで最も重要かつ貴重なリソースは?•オーナーのやる気•やりたくないことやってほしい•僕の場合ドキュメントとか英語書くとか
みんなを困らせたくない•バグ埋め込みたくない•バグりやすいコードmergeしたくない•Breaking Changeしたくない•≒気軽にBCするライブラリ使いたくない•↑ものすごく⼤事 すごく⼤事 とても
やりとりの実例例•最近の活動 bit.ly/2zpGpRo•mergeされずにcloseされたPRもちらほら•#327→#353→#388→#392(→#404)•紆余曲折を経て⽬的を果たしたヤツ達成⽬目標伝える→オーナーを尊重した修正
与太話時間余ってる?どう?
ライセンス•ちゃんと確認する•⼀番厄介なライセンスは?•ライセンス無し•↑ライセンス何?と聞けば概ね解決する
⾃自分がオーナー•やりたくないことはやらなくていい•ライセンス違反の指摘とかは除く•とりあえず公開することに慣れる•反応0がデフォなので過度な期待はしない•README.mdだけはちゃんと書く
⾃自分とは•有象無象の⼀部である•多少雑でもわりとすぐ忘れられる•きちんと説明できないと話が進まない良くも悪くも
CONTRIBUTING.mdとか•GitHubのテンプレ的構造がある•bit.ly/2JzOWWP•TypeScriptの場合 bit.ly/1o2weYt⾒見見てみよう!
質問コーナー