dbt-coreにおけるOSS活動ことはじめその1 ~ CLAの話 ~

# 本記事が目指すこと
- dbt-coreにおけるOSS活動を始めるにあたってやるべきこと、学びになったことを紹介する
    - 複数回に渡り連載する予定

# 注意
- 投稿時点(2023/5/12)での情報に基づくため、本記事で紹介した手順が今後も利用できる保証はありません。また、本記事の内容を継続的にメンテナンスする予定も今のところは無いです
- なお、本記事は筆者が所属する会社と関係なく、個人の記事であることをご了承ください

# 背景
- 筆者は、[ちゅらデータ株式会社](https://churadata.okinawa/)に務める会社員であるが、就業時間中に職務としてのdbt-coreのOSS活動を始めた（OSS活動自体が初めての経験）
    - なぜ職務としてのOSS活動が許可されたかについての詳細は、別記事に記載予定
- CONTRIBUTING.mdを読むと、CLAに署名する必要があるのだが、色々とつまづいたので記事にまとめることにした

# 用語
まずは用語を整理する
- OSS
    - Open Source Softwareの略。「OSS」とは、著作権者が提示する利用条件（以下「OSSライセンス」という。）に従うことを条件として、個別にその許諾を得ることなく、また、著作権者に対して対価を支払うことなく、改変、頒布などの利用を行うことができるソフトウェアをいう
        - 参考資料
            - READYFORのOSSポリシー
                - https://github.com/readyfor/oss-policy/blob/main/OSS-POLICY.md
- OSS活動
    - 「OSS活動」とは、OSSの開発に関与する活動の総称をいい、既存のOSSに対して機能を追加・改善を行うことや、新規のソフトウェアをOSSとして公開することを含む。
         - 参考資料
             - READYFORのOSSポリシー
                - https://github.com/readyfor/oss-policy/blob/main/OSS-POLICY.md
- dbt-core
    - 「[dbt Labs, Inc.](https://www.getdbt.com/dbt-labs/about-us/)」が管理しているOSS。本記事ではGitで公開されているリポジトリ「[dbt-labs / dbt-core](https://github.com/dbt-labs/dbt-core)」を指す
    - 参考資料
         - dbt製品のライフサイクル
            - https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-core
- CLA
    - Contributor License Agreementの略。オープンソース プロジェクトの主体と、コードを提供する個人開発者あるいは企業との間で締結される契約を意味する。個人向けCLAと企業向けCLAが存在する
        - 参考資料
            - The Linux Foundation Japanの記事
                - https://prtimes.jp/main/html/rd/p/000000052.000042042.html#:~:text=CLA%20%E3%81%A8%E3%81%AF%3F,%E5%A5%91%E7%B4%84%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

# 本編
ストーリー仕立てで紹介。

dbt-coreのOSS活動を始めるにあたって、まずは「[dbt-core/CONTRIBUTING.md](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md)」を確認。
- 筆者の気持ち
    - よーし！さくっと読んで環境構築してコード読んでささっとPR出して貢献するでござる！

- 結論
    - 甘かった

上から読み進めていくと、ある行でつまづく。

> CLA: Please note that anyone contributing code to dbt-core must sign the Contributor License Agreement. If you are unable to sign the CLA, the dbt-core maintainers will unfortunately be unable to merge any of your Pull Requests. We welcome you to participate in discussions, open issues, and comment on existing ones.

- 筆者の気持ち
    - なるほど。dbc-coreにPRをマージしてもらうには、CLA(ライセンス契約)に署名する必要があるのか
    - では、「[Contributor License Agreements](https://docs.getdbt.com/community/resources/contributor-license-agreements)」の内容を確認してみるでござる

> For all code contributions to dbt, we ask that contributors complete and sign a Contributor License Agreement. We have two different CLAs, depending on whether you are contributing to dbt in a personal or professional capacity:

- 筆者の気持ち
    - 個人としてdbtに貢献しているか、仕事としてdbtに貢献しているかに応じて、2つの異なるCLAがあるとな
    - 以下、前者を個人向けCLA、後者を企業向けCLAと呼ぼう

それ以上詳しくドキュメントには書いてないため、直接CLA([個人向けCLA](https://docs.google.com/forms/d/e/1FAIpQLScfOV7K4enYRHozrDRP6BBIXjOij-JDGca6WBTHyP_ANXSqlg/viewform)と[企業向けCLA](https://docs.google.com/forms/d/e/1FAIpQLScDSTwGIlVyGWCMMvmszaXSE5IhIIRyeLQkgWf1-CSC2RnLww/viewform))を読んだ結果、以下のように解釈した。

```
- 会社(雇用主)が知的財産を持ち続ける場合
    - 企業CLAのみ署名が必要
- 会社(雇用主)が知的財産を持っているが、権利を放棄する場合
    - 企業CLA + 個人CLAの署名が必要
- 会社(雇用主)が知的財産を有しておらず、個人(筆者)に知的財産の権利がある場合
    - 個人CLAのみ署名が必要
```

ここまでは順調に整理できた。
さて、ここからがミソである。

執筆時には、筆者が所属する会社にOSSポリシーやOSSガイドラインが存在しておらず、就業規則のみ存在していた。

そのため就業規則から判断するしかなく、原則として社員の知的財産は会社が保有することから、企業CLAのみ署名が必要であるが、その申請フローもまた整備されていなかったのである。

- 筆者の気持ち
    - あれ。そういえば、CLAのGoogleフォームって**誰が記入すれば良い**のだろうか。**誰に許可取れば良い**のだろうか。申請のフローが分からないで候

そこで、他社事例を調査すると、就業規則とは別にOSSポリシーやOSSガイドラインを定めている取り組みが紹介されていた。
- 参考資料
  - サイボウズのオープンソースソフトウェアポリシーを紹介します
      - https://blog.cybozu.io/entry/oss-policy
  - ZOZOテクノロジーズのオープンソースソフトウェアポリシーを策定しました
     - https://techblog.zozo.com/entry/oss-policy
  - READYFORのOSSポリシーを公開しました
     - https://tech.readyfor.jp/entry/2022/09/01/120000

例えば、
ZOZOテクノロジーズの例だと、

> - ガイドラインおよびポリシーに準拠している限りは、OSS公開時に許可を得る必要はありません
> - ガイドラインおよびポリシーに準拠している限りは、OSSコントリビューション時に許可を得る必要はありません
> - CLA (Contribution License Agreement) 同意を求められた場合も、許可を得ずに当社を代表して署名できます

とあり、エンジニア自身が許可を得ずにCLAに署名することができるポリシーとガイドラインを制定しているのである。

- 筆者の気持ち
    - 弊社でも絶対に導入したいで候！！！相談してみるでござる

こうして、弊社では、社長とCTO、法務の方々を巻き込んで現在OSS活動を円滑に行うための取り組みとしてOSSポリシーやOSSガイドライン等を策定する動きが発生し、迅速なスピードでたたき台が作成された（相談後、他社事例を参考に1~2日のうちにたたき台が作成された）。
なお、争点としては、エンジニアの権利を守りつつ、会社としてのリスクマネジメントをどう線引きしていくかである。今後、施行された場合、外部向けに公開される可能性もあるので、そのときに改めて公開できる範囲で記事を書く予定で候。


- 筆者の気持ち
    - 関係者の御方。誠に有難しでござる


# 学び

- **「CONTRIBUTING.md」をしっかり読もう**
    - さっと読み進められるものではない。特にOSS活動が初めてである御方や、組織として初めての活動である場合は、予定外の調整が発生する可能性がある。エンジニアの仕事はコードを書くだけではないと改めて痛感した
- **CLAは勝手に自分で署名してはならぬ**
    - 当たり前であるが、就業時間中であれば職務に当たるため、自社の就業規則やOSSポリシーやOSSガイドライン等の存在を確認し、存在する場合は遵守する義務がある。自分で判断がつかない場合は上長や経験者に相談するでござる
- **エンジニアに理解のある会社は、OSSポリシーやOSSガイドラインを策定してくれる**
    - 弊社の場合、筆者が初めて職務としてのOSS活動を経験したため、筆者が感じた不便さや曖昧さを相談したところ、OSSポリシーを策定するために動いてくれた。エンジニアライクな会社だと相談に乗ってくれることもあるため、相談してみると良いでござる


# 終わりに
ちゅらデータでは、クレイジーな仲間を募集しているでござる
データエンジニア、もしくはSE系からデータエンジニアになりたい方がいればぜひ、御仁の力量に応じたグレード（ジュニア/ミドル/シニア）にて、応募するでござる

https://herp.careers/v1/churadata/T6Oag1FxE34V