OSS開発者をn増やしたい!¶ ↑
: author
須藤功平
: institution
クリアコード
: content-source
Speee Cafe Meetup #02
: date
2016-09-01
: allotted-time
15m
: theme
clear-code
ここでいうOSS開発¶ ↑
* 1から独自で開発だけでなく * 既存OSSの開発も含む * 例:要望提案 * 例:バグレポート * 例:pull request
OSSを開発する動機¶ ↑
人それぞれ
動機例¶ ↑
* (('wait'))反応が欲しい・注目されたい * (('wait'))転職活動で使える材料が欲しい * (('wait'))技術力向上 * (('wait'))○○機能が欲しい * (('wait'))コミュニティーで活動したい * (('wait'))使ってばかりじゃ申し訳ない
OSSを開発する動機¶ ↑
* (('wait'))独りよがりがいい * 他人の損得は気にしなくていい * ((*自分*))が割に合うと思うか?がいい
利用OSSにバグがあった!¶ ↑
どうする?
昨日の実例:Vagrant¶ ↑
CentOS 5のVMにsshできない…
% vagrant up centos-5-i386 ... centos-5-i386: Key inserted! Disconnecting ... centos-5-i386: Warning: Authentication failure. Retrying... centos-5-i386: Warning: Authentication failure. Retrying... ...
(('note:PGroongaのRPMをビルドしようとしていた'))
利用OSSにバグがあった!¶ ↑
* どうする? (1) (('wait'))とりあえずツイート? (2) (('wait'))ググる? (3) (('wait'))最新バージョンを確認? (4) (('wait'))違うOSSに乗り換え?
私の場合¶ ↑
よく使っているOSSの場合は…
* 調べて * 直して * 報告
ググった¶ ↑
(('note:qiita.com/cock1doodledoo/items/b32382776f76fb2d627c'))
(('note:少し違う現象っぽいが'))↓で直ると書いている
# coderay ruby config.ssh.insert_key = false
(('wait')) (('tag:center')) 回避策っぽい…調べよう
調べて¶ ↑
パスワードではログインできた
% vagrant ssh centos-5-i386 vagrant@127.0.0.1's password: (vagrant) [vagrant@localhost ~]$
調べて…¶ ↑
ログを確認
[vagrant@localhost ~]$ sudo less /var/log/secure ... ... sshd[3750]: Authentication refused: bad ownership or modes for file /home/vagrant/.ssh/authorized_keys ...
調べて……¶ ↑
パーミッションを直すとn 公開鍵でログインできた
[vagrant@localhost ~]$ chmod go-rwx ~/.ssh/authorized_keys [vagrant@localhost ~]$ exit % vagrant ssh centos-5-i386 [vagrant@localhost ~]$
調べて………¶ ↑
authorized_keysでgrep
% grep authorized_keys /usr/share/vagrant .../plugins/guests/bsd/cap/public_key.rb:... ... .../plugins/guests/linux/cap/public_key.rb:... ... .../plugins/guests/solaris/... ... .../plugins/guests/solaris11/...
調べて…………¶ ↑
GNU/Linuxなので↓を確認
.../plugins/guests/linux/cap/public_key.rb
chmod忘れを発見
直して¶ ↑
# coderay diff --- .../linux/cap/public_key.rb.orig ... +++ .../linux/cap/public_key.rb ... @@ -54,6 +54,7 @@ if test -f ~/.ssh/authorized_keys; then grep ... > ~/.ssh/authorized_keys.tmp mv ~/.ssh/authorized_keys{.tmp,} + chmod 0600 ~/.ssh/authorized_keys fi rm -f '#{remote_path}'
報告¶ ↑
* masterを確認 * (('wait'))(('note:https://github.com/mitchellh/vagrant/blob/master/plugins/guests/linux/cap/public_key.rb#L57')) * (('wait'))同じchmodがすでにある! * (('wait'))手元で修正して元の作業を継続
ふりかえり¶ ↑
* 最初から最新バージョンを確認すればよかった? * (('wait'))今回は調べた方でよかったかも * (('wait'))10分位だしVagrantの事がわかったし\n (('note:(最新バージョンの用意は手間だった)')) * (('wait'))↑((*自分*))が割りに合ったか基準
なぜ報告するのか¶ ↑
* (('wait'))自分が何度も回避するのが面倒 * ↑((*自分*))が割に合うか基準 * よく使うOSSなら違うマシンでも遭遇しやすい
類似の事例¶ ↑
* mrubyがクラッシュするので修正 * #2732, #2867, #3087, #3090, #3129 * (('wait'))((*自分*))がパッチを管理するのが面倒 * PostgreSQL 9.6beta1の\n DROP ACCESS METHOD IF EXISTS\n が動かないので修正 * (('wait'))本体で直らないと((*自分*))の実装が手間
OSSを開発する動機¶ ↑
* 独りよがりがいい * ((*自分*))が割に合うならやるといい * (('wait'))OSSを開発する敷居が高いと\n なかなか割に合わない!
OSS Gate¶ ↑
OSS開発のn 敷居を下げるn 取り組み
Gate == 門¶ ↑
境界にあるもの
扱う境界¶ ↑
# image # src = images/oss-gate-border.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
ターゲット¶ ↑
# image # src = images/oss-gate-target.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
やりたいこと¶ ↑
# image # src = images/oss-gate-goal.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
未参加者→参加者¶ ↑
# image # src = images/oss-gate-workshop.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
ワークショップの内容¶ ↑
* (('wait'))未参加者の後押し * すでに興味はある! * (('wait'))どう後押せば…?
未参加の理由?¶ ↑
(1) (('wait'))やり方がわからない (2) (('wait'))なんとなく不安
ワークショップの内容¶ ↑
(1) (('wait'))やり方を1つ教える * やり方がわかると参加できる! (2) (('wait'))OSSの開発に実際に参加する * 不安なのは((*未経験*))だから * ワークショップで経験しよう!
門をくぐる¶ ↑
# image # src = images/oss-gate-pass-through.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
よりくぐりやすく¶ ↑
# image # src = images/oss-gate-support.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
募集中!¶ ↑
# image # src = images/oss-gate-join-us.svg # relative_width = 100
スライドプロパティー¶ ↑
: enable-title-on-image
false
OSS Gateワークショップ¶ ↑
* ターゲット:未参加者→参加者 * 奇数月の最終土曜に開催中! * 次回9/24 * 次々回11/26
(('tag:center')) oss-gate.doorkeeper.jp
組織としてOSS開発¶ ↑
* 個人 * 自分が割に合うと思うときに開発 * 組織 * (('wait'))「OSS開発する方針だからやろう」?
組織とOSS開発¶ ↑
(('note:多くの組織にとって'))n OSS開発はn 目的でなく手段
組織としてOSS開発する動機¶ ↑
OSSを開発する結果として…
* 技術力アップ * 開発効率アップ * 知名度アップ
(('wait'))↑こっちが目的
技術力アップ¶ ↑
* 既存OSSの開発 * 社外のコード・やり方から学ぶ * (('wait'))新規OSSの開発 * 1ソフトウェアのすべてを経験できる * 設計判断・告知・ユーザー対応… * 経験から得られるものはたくさん * 社内で不足している機会を提供
開発効率アップ¶ ↑
* 独自修正の管理より\n 開発元に修正を提供 * (('wait'))アップデートの難易度を下げる * (('wait'))メンテナンスするものを減らす
(('wait')) (('tag:center')) OSSを開発n (開発元に修正を提供)n する方が割に合う
知名度アップ¶ ↑
* 技術者に技術でアピールできる * 「あの○○さんがいる会社」 * 「○○が得意な会社」 * 求心力アップ・広告効果
組織としてOSS開発する動機¶ ↑
OSSを開発する結果として…
* 技術力アップ * 開発効率アップ * 知名度アップ
↑こっちが目的
組織としてOSS開発¶ ↑
* × * 「OSS開発する方針だからやろう!」 * ○ * 「このケースは○○だからOSS開発は((*あなた*))の割に合うんじゃない?」 * 例:Railsの独自修正を抱えるよりも開発元に提供した方が((*あなた*))が開発しやすくなるんじゃない?組織はそのための時間を確保するよ。
OSS開発支援¶ ↑
# image # src = images/oss-development-support.pdf # relative_height = 100 # align = right # relative_margin_right = -10
-
企業向けサポート
-
Speeeさんにもn 提供中
スライドプロパティー¶ ↑
: enable-title-on-image
false