Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSSの開発や貢献時に役立つRFC

 OSSの開発や貢献時に役立つRFC

2024-05-11 PHPカンファレンス香川2024 スポンサーLT資料
https://fortee.jp/phpconkagawa-2024

Atsushi Matsuo

May 11, 2024
Tweet

More Decks by Atsushi Matsuo

Other Decks in Programming

Transcript

  1. 2 Copyright © Cybozu • 松尾 篤(まつお あつし) • PHP使用歴:約19年

    • PHPを使った開発歴は約16年 • 2023年4月にGaroon開発チームに加入 • Garoonのセキュリティを維持するYukimiチームの紹介 https://blog.cybozu.io/entry/2023/10/04/101916 自己紹介
  2. 3 Garoonとは 3 中堅・大規模組織向けのグループウェア • 社内の様々な情報を整理・統合表示するためのポータル機能 • きめ細やかなアクセス権限設定や管理機能 • 多言語対応やAPIによる他システムと連携する拡張性など

    スケジュール 掲示板 メッセージ スペース ファイル管理 ワークフロー ポータル 組織ロール 多言語 タイムゾーン 他システム 連携 情報共有・コミュニケーションに 必要なアプリケーション 中堅・大規模組織の運営に 必要な管理機能
  3. 4 Copyright © Cybozu • サイボウズの存在意義(Purpose)は「チームワークあふれる 社会を創る」 • 製品の安定提供にはPHP自体の発展や継続が必要不可欠 •

    PHPとPHPコミュニティへの支援もできる限り行っていきたい • サイボウズは事業成長のフィードバックとしてOSSへ寄付をしています • サイボウズからThe PHP Foundationに毎年寄付をしています サイボウズ GaroonはPHPベースの製品
  4. 5 Copyright © Cybozu • サイボウズのOSSポリシーで他者が開発したOSSの不具合を見 つけた場合には報告する努力義務がある • 不具合の報告だけでなく修正や改善も行いたい場合もある •

    単にプルリクエストを送ってもマージされるとは限らない ↓ 変更の背景や根拠となる情報も一緒に伝えるとプルリクエストが マージされやすくなる PHP以外のさまざまなOSSも利用
  5. 6 Copyright © Cybozu • https://blog.cybozu.io/entry/oss-policy • 多くの企業で活用いただけるよう2018年にCC0(いかなる権利も保有しない、 いわゆるパブリックドメイン)で公開 •

    https://cybozu-oss-policy.readthedocs.io/ja/ • 社員がOSS関連活動を過大な負担なく行えるよう支援 • オープンソースコミュニティにおける良き一員であるために必要なことを規定 サイボウズのOSSポリシー
  6. 7 Copyright © Cybozu • 次の活動もコントリビュートに該当 • 不具合の報告 • プルリクエストによる修正提案

    • 背景や根拠となる情報も伝えると問題を正確に認識してもらい やすくなる ↓ 最近の状況や変更の根拠となる情報をRFCで確認すると良い OSSへのコントリビュート(貢献)
  7. 8 Copyright © Cybozu • Request(s) for Comments(「コメント募集」の意)の略 • RFCsと表記されることもある

    • 今回紹介したいRFCはPHPのRFCではなくIETF(Internet Engineering Task Force)のRFC • 技術仕様が記載されている文書群 • 内容については特に制限がなく冗談を含む内容のものもある RFC
  8. 9 Copyright © Cybozu https://www.ietf.org/process/rfcs/ より “The IETF publishes its

    technical documentation as RFCs, an acronym for their historical title *Requests for Comments*. They define the Internet's technical foundations, such as addressing, routing and transport technologies. They recommend operational best practice and specify application protocols that are used to deliver services used by billions of people every day. RFCs are freely available and software developers, hardware manufacturers, and network operators around the world voluntarily implement and adopt the technical specifications described by RFCs.” About RFCs
  9. 10 Copyright © Cybozu • ホスト名の最初もしくは最後に_(アンダースコア)が含まれる 場合があることが考慮されていなかったOSSに遭遇 • ホスト名にアンダースコアを許可するオプションが用意されているライブラリ 例1:foo_.example.com

    例2:_bar.example.com • ホスト名にアンダースコアを許可するオプションを使用してい る場合にはホスト名の最初もしくは最後にアンダースコアがあ ることを考慮するプルリクエストを送付してマージしてもらう • プルリクエストを送付した際、RFCに記載されている内容や最近見かける例 も記載した コントリビュート例の紹介
  10. 11 Copyright © Cybozu • プルリクエスト送付時に次のコメントを簡潔に添えた • RFC 3986におけるアンダースコアの扱いや記述を紹介 •

    アンダースコアは古いRFCでは許可されていなかったが、RFC 3986で はURIで使用が許可されている文字(Unreserved Characters)のうち の1つであることが明記されている • 最近見かける事例も紹介 • ホスト名にアンダースコアが含まれる例:_dmarc.example.com コントリビュート例の紹介
  11. 12 Copyright © Cybozu https://datatracker.ietf.org/doc/html/rfc2396 より hostname = *( domainlabel

    "." ) toplabel [ "." ] domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum toplabel = alpha | alpha *( alphanum | "-" ) alphanum alphanum = alpha | digit alpha = lowalpha | upalpha lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" upalpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" RFC 2396におけるアンダースコアの扱い
  12. 13 Copyright © Cybozu https://datatracker.ietf.org/doc/html/rfc3986 より “Characters that are allowed

    in a URI but do not have a reserved purpose are called unreserved. These include uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde.” unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" RFC 3986におけるアンダースコアの扱い