Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はじめてのOSSコントリビュート
Search
てきめん tekimen
PRO
February 09, 2024
Programming
11
4.5k
はじめてのOSSコントリビュート
PHPカンファレンス関西2024で話す内容です。
てきめん tekimen
PRO
February 09, 2024
Tweet
Share
More Decks by てきめん tekimen
See All by てきめん tekimen
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
150
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
100
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
78
PHP Internals わいわい #1 の資料
youkidearitai
PRO
1
1.4k
mb_trim関数を作りました
youkidearitai
PRO
1
1.1k
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
870
文字とはなにか - PHPの文字コード処理について - PHP Lovers Meetup #5
youkidearitai
PRO
1
310
文字とはなにか - PHPの文字コード処理について -
youkidearitai
PRO
0
1.3k
現在のmbstringの立ち位置 これからどうなっていくのか
youkidearitai
PRO
0
470
Other Decks in Programming
See All in Programming
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
880
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
Advance Your Career with Open Source
ivargrimstad
0
200
CSC305 Lecture 03
javiergs
PRO
0
220
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
630
議事録の要点整理を自動化! サーバレス Bot 構築術
penpeen
3
1.6k
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
980
Swiftビルド弾丸ツアー - Swift Buildが作る新しいエコシステム
giginet
PRO
0
1.5k
defer f()とdefer fの挙動を 誤解していた話
kogamochiduki
2
160
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
820
Let's Write a Train Tracking Algorithm
twocentstudios
0
220
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.2k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Statistics for Hackers
jakevdp
799
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
A Tale of Four Properties
chriscoyier
160
23k
Automating Front-end Workflow
addyosmani
1371
200k
Site-Speed That Sticks
csswizardry
11
870
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Embracing the Ebb and Flow
colly
88
4.8k
The Cult of Friendly URLs
andyhume
79
6.6k
Transcript
はじめてのOSSコントリ ビュート
自己紹介 てきめん • https://tekitoh-memdhoi.info • X: @youkidearitai • https://github.com/youkideari tai
• https://speakerdeck.com/you kidearitai • サイボウズ株式会社にいます • PHP 8.4でmb_trim関数を作りま した オレ
オープンソース、使ってますか?
オープンソースに コントリビュートしてますか?
オープンソースとは • ざっくりいうと誰でもソースコードを取得でき、自己責任で使え、誰 でも改善の提案ができる – 定義について https://opensource.org/definition-annotated/ • Wikipediaも参考になると思う Wikipediaの記述:オープンソースの定義
• 国境がない、用途の制限がない • 技術でのみ会話する • 開発者に責任はない • オープンソースだけで1冊教科書ができる
自由なライセンス • オープンソース以外にも、自由に 改変してもいいとするライセンス がある • 文章や画像データなどに対応して いる自由なライセンス – Creative
Commons(BY、BY-SA) • 例:Arduino、PHPのマニュアル • 著作権を放棄している、パブリック ドメインというものもある – 例:SQLite Arduino Uno(CC BY-SA)
オープンソースとフリーはちょっと違う 自由なライセンス (フリー) オープンソース ※てきめんの解釈なので注意
コントリビュートとは・メリット • 日本語では貢献という意味 • メリット – 世界が少しだけ良くなる – 自分も恩恵を受けられる •
自分で見つけたバグが治ったバージョンを使える! • スキルアップを望める • 手本として業務に役に立つ – 就職・転職・昇格に有利だったりする可能性がちょっとはあるかも • わたしはphp-srcにコントリビュートしまくったらサイボウズに入った、こういうの続いてほ しい • コントリビュートは技術力のアピールになるはず
コントリビュートとは・デメリット • 報酬は一般的にない・手弁当すらありうる • ミスや間違えを全世界に公開することになる – だけどこれは「自分が恥をかく」だけならそのほうがマシなんです – オープンソースのほうが間違っているならそっちのほうがヤバいと思ってください –
オープンソースの精神として「開発者に責任はない」ので、沢山間違えてください • そもそも分野問わずエンジニアなら学びってそういうものですよね? – 「Sorry」よりも「Thanks」を使いましょう • 「間違えました、すみません」を「見つけてくれてありがとう!」と言い換えましょう • 間違いを謝りがちですが、ビジネスではありませんから • これで疲れたと思ったら離れていいです – 「しなければならない」などという気持ちになったら離れましょう
PHP本体でされてうれしい貢献 簡単な順
使う • それはそう – コントリビュートするにも使うのが一歩なので – 使うことも貢献と意識するのとしないのとでは違うと思う • 何はともあれ、使ってもらってなんぼ •
ユーザーでコミュニティを作るもよし – カンファレンスの開催も貢献の一歩
The PHP Foundationへの寄付 • 最近10人に増えたPHP Foundationへの寄付 – 高町咲衣(さきち)さんが加入しました! • 寄付の意義が強くなりましたね?
• Zend Engineに詳しい人や、広く見てくれる人、PHP 8.3のリリース マネージャーなどがいます • ぜひ!寄付の検討をしてほしいです! – 毎月寄付すれば何も考えなくて良いからいい • https://thephp.foundation
typoの修正 • ソースコード上のいわゆる打ち間違い • Fix typoというプルリクエストは嬉しい – コア開発者がコアの開発に集中できるから – 予想以上に嬉しいのでやってください
– コントリビュートする側もしやすい • Good first issueだと思う!
ドキュメントの修正 • php/doc-enリポジトリにてマニュアル が管理されてる – こちらの修正や追加も提案できる – Good first issueラベルが貼られてる
のでやってみよう • php/doc-jaリポジトリが日本語のマ ニュアル – これの文の修正とかでも助かる – 大体は@mumumuさんによって管理 されてる • とはいえ助けてあげてほしい doc/enのIssue
phptファイルの修正 • phptファイルという、PHP自体 のテストがある – PHPでできている – これにプルリクエストを送る • フォーマットは
http://qa.php.net/write-test. php • これを修正したり、テストケース の追加をしたりするとよい
Issue • PHP本体にバグを見つけたらphp/php-srcにIssueとして 報告してくれると嬉しい – テンプレート通りタイトルとActual、Expectedをしっかり記入す れば伝わる – 今ならGoogle翻訳やDeepL使えば伝わる –
故にしない理由がない • 何がムズいかといえば、PHP本体のバグの切り分け
警告を取り除く • php-srcをコンパイルする際に発生する警告 (warning)を取り除くプルリクエスト – これも助かる – PHPのコンパイルができないとわからないけども – OS・CPUアーキテクチャ・コンパイルオプションなどで
ぜんぜん違うので色々な環境でコンパイルを試してほ しい
Feature request • 「〇〇という機能・関数を追加してくれないか」 • これも助かる – なお、mb_trim関数はここから作られています – mb_ucfirst関数もここから作っています
• 何がムズいかといえば現代のPHPはかなり完成されて るので提案に予め高度な知識が必要なところ
RFC • PHPに大幅な変更・機能追加を行う • PHP Internalsメーリングリストで議論して、RFCにより投票 を行う • https://wiki.php.net/rfc/howto •
これは激むずだけど頑張ればできる – PHP Internalsメーリングリストは読んでるから助けますよ!
簡単な順に並べてみましたが、 それでも難しそうですかね?
ハードルが高いことは もちろんわかっています
PHP本体にバグを見つけるだけで大変だった • 2019年に初めてバグを見 つけたときのスライド • 当時の発表をみると、すご くはしゃいでたなーと思い ます。 • つまり、ぼくも何も最初から
すごい人な訳ではない PHPerKaigi 2019のスライド https://speakerdeck.com/youkidearitai/ phpfalsemaniyuaruninaikotowositephp- srchebagubao-gao-wosita
PHP本体だとハードルが高いので 低くしましょう
「コントリビュート」に話を戻す • 興味のあるオープンソースプロジェクトの動向を探ってみ る – PHPerならばPHPのプロジェクトでもいいですね • フレームワークでもCMSでも読めるものでいい – プロジェクトごとに雰囲気は全然違う
• マニュアルにない挙動をIssueで報告する • バグを直してPull Requestを送ってみる
コントリビュートに不安がある? • OSS Gateがあります! – オープンソースへの入り口を体 験できるワークショップです – オンラインで行われています •
https://oss-gate.doorkeeper.j p/events/upcoming • 3月は9日に行われます – 過去では各地で行われていまし た • 勝手にやってもいい(CC BY-SA 4.0)
そして明日
PHP Lovers Meetup + OSS Gate • 関西が明日ある – 締め切られてるかな?
• カンファレンスに合わせて各地で 行われる – 北海道 – 関西 – あとやる? • 身近で使ってるOSSにコントリ ビュートしよう!
コントリビュートしよう • 思ったよりも難しくはないです – 使うのもコントリビュートです!だけど… – 不具合を見つけたらとりあえず本家に報告しましょう • オープンソースが間違っているのがみんな困るのであって、自分が間 違っている分には全然いいことと割り切れるかどうかでしょうか
– オープンソースは「開発者に責任はない」世界ですから、のびの び失敗しましょう – 何にせよやらないとわからんので、やるところからはじめましょう
ご清聴ありがとうございました おおきに