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

OSSの歩き方 / Walking with OSS

OSSの歩き方 / Walking with OSS

社内のOSS研修で使用したスライドです。
OSS 活動を始めるまでのガイドとなることを目的としました。

2019/02/28: 研修時に上がった Q&A の項目を追加しました

Takayuki Matsubara

February 18, 2019
Tweet

More Decks by Takayuki Matsubara

Other Decks in Programming

Transcript

  1. ࿩खʹ͍ͭͯ 4 ීஈ OSS Λ࢖ͬͯ࢓ࣄΛ͍ͯ͠Δ͕ OSS ͷઐ໳ՈͰ͸ͳ ͍ 4 GitHub

    Ͱࣗ࡞ͷϥΠϒϥϦΛ10ݸҎ্ެ։ 4 GitHub Ͱͷ OSS ʹର͢Δ Pull Request(PR)਺͸໿100 ݸ͘Β͍(೥਺ͷׂʹ͸ͦΜͳʹଟ͘ͳ͍Ͱ͢)
  2. Φʔϓϯιʔειϑτ΢ΣΞ Φʔϓϯιʔειϑτ΢ΣΞʢӳ: Open Source Softwareɺ ུশ: OSSʣͱ͸ɺར༻ऀͷ໨తΛ໰ΘͣιʔείʔυΛ࢖ ༻ɺௐࠪɺ࠶ར༻ɺमਖ਼ɺ֦ுɺ࠶഑෍͕Մೳͳιϑτ΢ΣΞ ͷ૯শͰ͋Δɻ —

    Wikipedia1 1 https://ja.wikipedia.org/wiki/ %E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%BD% E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2
  3. ͳͥදࣔΛ͍ͯ͠Δͷ͔ MIT License Copyright (c) [year] [fullname] Permission is hereby

    granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. https://choosealicense.com/licenses/mit/
  4. ୅දతͳϥΠηϯε ϥΠηϯε ৚݅ GNU AGPLv3/GPLv3/LGPLv3 ίʔυ։ؚࣔΉɺAGPL ͸ωοτϫʔΫΛհ ͯ͠αʔϏεఏڙ͢Δ৔߹΋ର৅ Apache License

    2.0 ίʔυ։ࣔෆཁɺMITʹՃ͑ͯมߋ಺༰Λυ ΩϡϝϯτԽ͢Δඞཁ MIT License ίʔυ։ࣔෆཁɺϥΠηϯεදهͱஶ࡞ݖ ৄ͘͠͸ https://choosealicense.com/licenses/ Λࢀরɻ
  5. ϥΠηϯεʹ͍ͭͯͷϦιʔε 4 Choose an open source license | Choose a

    License https://choosealicense.com/ 4 GithubʹΑΔɺΦʔϓϯιʔεϥΠηϯεͷબͼํ https://www.catch.jp/oss-license/2013/09/10/ github/ 4 OSSϥΠηϯεͷڭՊॻ ٕज़ධ࿦ࣾ
  6. ར༻࣮੷ 4 ࡞ͬͨਓҎ֎ʹ΋࢖ΘΕ͍ͯΔ͔ 4 OSS ք۾Ͱ΋໨ʹ͢Δاۀ͕࢖͍ͬͯΔ͔ 4 ελʔ਺ɺμ΢ϯϩʔυ਺ͳͲ 4 GitHub

    Ͱ Repository ʹରͯ͠ελʔ਺͕ଟ͍͔ 4 ϥΠϒϥϦͷμ΢ϯϩʔυ਺Λ ruby Ͱ͋Ε͹ rubygems.orgɺnpm Ͱ΋μ΢ϯϩʔυ਺͕ݟΕΔ
  7. දʹͯ͠ൺֱͯ͠ΈΔ ϥΠϒϥϦA ϥΠϒϥϦB ϥΠϒϥϦC ϥΠηϯε ⭕ MIT ⭕ Apache2 ⭕

    MIT υΩϡϝϯτ " ⭕ # ϥΠϒϥϦґଘ਺ ⭕ 8 ⭕ 6 # 30 ςετίʔυ ⭕ ⭕ ⭕ μ΢ϯϩʔυ਺ " 100ສ 10ສ # 10 ελʔ਺ ⭕ 1500 " 3000 # 3 Issue/PR ์ஔ۩߹ # " # νʔϜϝϯόʔར༻࣮੷ 2 0 0 ... ... ... ...
  8. 4 ࢖͏ 4 ίʔυΛಡΉ 4 ελʔΛ͚ͭΔ 4 IssueΛ࡞Δ 4 Pull

    RequestΛૹΔ 4 υΩϡϝϯτ࡞੒/຋༁ 4 ίϛολʔͱͯ͠ϝϯςφϯε͢Δ 4 ࣗ෼ͰίʔυΛެ։͢Δ
  9. 4 ࢖͏ 4 ίʔυΛಡΉ 4 ελʔΛ͚ͭΔ 4 IssueΛ࡞Δ 4 Pull

    RequestΛૹΔ 4 υΩϡϝϯτ࡞੒/຋༁ 4 ίϛολʔͱͯ͠ϝϯςφϯε͢Δ 4 ࣗ෼ͰίʔυΛެ։͢Δ
  10. ͦ΋ͦ΋Ͳ͜Ͱ͢Δͷ͔ 4 GitHub/BitBucket/GitLab 4 ଞʹ΋ϓϩδΣΫτ͝ͱʹҟͳΔ 4 Ruby ͸όάใࠂ͕ Redmine Ͱɺίʔυ͸

    SVN Ͱ؅ ཧɺGitHub ʹϛϥʔ΋͋Δ͕ϝΠϯ͸·ͩ SVN ͷํ 4 Kotlin ͸ Issue ؅ཧ͕ YouTrackɺGitHub Ͱ͸ Issue λϒ͕ͳ͍
  11. ߩݙํ๏ʹ͍ͭͯ 4 ϓϩδΣΫτ͝ͱʹϧʔϧ͕͋Δ 4 όάใࠂ͸͜͏Ͱɺύον͸͜͏ૹͬͯͱ͔ 4 CONTRIBUTING.md, README.md ౳ͷهࡌΛΈͯै͏ 4

    Pull Request ΍ Issue ΛૹΔલʹɺطଘͷ΋ͷΛ֬ೝͯ͠ งғؾΛ೺Ѳ͓ͯ͘͠ 4 ͦΕΒͱେ͖͘ҟͳΔํ๏ΛऔΒͳ͚Ε͹ɺϝϯςφʔ ΋ࠔΔ͜ͱ͸গͳ͍
  12. GitHub ͰͷҰൠతͳ Pull Request ํ๏ 4 fork 4 ϩʔΧϧͰ։ൃɺमਖ਼ 4

    Pull Request ࡞Δ 4 ൓ԠΛ଴ͭɺࢦఠ͕͋Ε͹ରԠ͢Δ 4 ্ख͍͚͘͹ Merge ͞ΕΔ
  13. ࢓ࣄͰඞཁʹͳΔύλʔϯ2 4 Rails 5 beta Ͱ༧Ίಈ࡞֬ೝ͓ͯͭ͘͠΋ΓͰࢼͨ͠Βό άʹૺ۰ͨ͠ 4 Cookie ͔ΒऔಘͰ͖Δ஋͕Τεέʔϓ͞Ε͍ͯͳ͍΋ͷ

    Ͱɺςετίʔυ͕ͦΕͳΓʹ͔ͬ͠Γॻ͔Ε͍ͯͨͷͰ ݟ͔ͭͬͨ(ςετେࣄ) 4 ӳޠྗʹࣗ৴͕ͳ͔ͬͨͷ͔αϯϓϧΞϓϦ·Ͱ࡞ͬͯͨ https://github.com/rails/rails/pull/22828
  14. υΩϡϝϯτ΁ͷߩݙ 4 Kotlin Fest Ͱ shiraji ͞ΜͷηογϣϯΛฉ͖ɺKotlin ΁ αϯϓϧίʔυΛ௥Ճ͢Δ PR

    Λ࣮ࢪ 4 ࢦఠΛड͚ͯमਖ਼ͨ͠ޙ൓Ԡ͕Ұ୴్ઈ͚͑ͨͲɺ20೔΄ ͲͰແࣄϚʔδ·Ͱߦ͖·ͨ͠ 4 ϝϯςφʔͷํ͸๩͔ͬͨ͠Γ͢ΔͷͰɺׂͱ൓Ԡ଴ͭ ͜ͱ͸ී௨ʹ͋Δ https://github.com/JetBrains/kotlin/pull/1828
  15. ίʔυ΁ͷߩݙ 4 power_assert_ex Λ࡞͍ͬͯΔࡍʹ AST Λ traverse Ͱ͖ Δػೳ͕ඞཁʹͳΓɺElixir ݴޠଆʹ΋

    mailing list ܦ༝Ͱ ఏҊͨ͠ https://github.com/elixir-lang/elixir/pull/3832
  16. ༨ஊ: ࣗ෼ͷ޷͖ͳϥΠϒϥϦʹελʔΛ ͚ͭΔ - ґଘؔ܎ؚΊͯ 4 bundle-star(Ruby), mix-star(Elixir) Λ࡞ͬͨͷͰྑ͚ Ε͹࢖ͬͯΈͯ

    4 https://github.com/ma2gedev/{bundle-star,mix- star} 4 ΠϯεύΠΞ͞Εͯ cheeaun ͞Μ͕࡞ͬͨ npm- star(JavaScript) ΋͋Γ·͢ 4 https://github.com/cheeaun/npm-star
  17. ίϛϡχςΟ΁ࢀՃ ·ͣ͸ମݧͯ͠ΈΔͱ͍͏͜ͱͰίϛϡχςΟʹࢀՃͯ͠ΈΔ ͷ͸Ͳ͏Ͱ͠ΐ͏͔ɻ͢Ͱʹ OSS ։ൃ͍ͯ͠Δਓͷ੠Λฉ͘ ͜ͱ͸ޙԡ͠ʹͳΔͰ͠ΐ͏ɻ - OSS Gate -

    https://oss-gate.github.io/ - OSS։ൃʹࢀՃ͢ΔʮೖΓޱʯΛఏڙ͢ΔऔΓ૊Έ - OSS Days - https://tech.speee.jp/entry/2018/10/09/140500 - Speee ͞ΜͰߦΘΕ͍ͯΔऔΓ૊Έɺ୭Ͱ΋ࣗ༝ࢀՃͰ͖Δͦ͏Ͱ͢ - OSS ΋͘΋͘ձ - https://github.com/m3dev/oss-mokumoku - ΤϜεϦʔʹձ৔ఏڙΛͯ͠΋Β͍ɺຖि OSS ʹ͍ͭͯ΋͘΋͘͢ΔձΛ։͍ͯ·͢
  18. OSS ΛԠԉ͢ΔΠϕϯ τ 4 24 Pull Requests - https:// 24pullrequests.com/

    4 Advent Calendar ͷ PR ൛ɺ΍ Γ͕͍͸͋Δ 4 Hacktoberfest - https:// hacktoberfest.digitalocean.co m/ 4 ຖ೥10݄ʹ։࠵ɺOSS ʹ5ݸ PR ΛૹΔͱ T γϟπΛ΋Β͑Δ
  19. ΩϟϦΞΛߟ͑ͯߩݙ͢Δ 4 ྫ͑͹ࣗ෼ͷ৔߹͸ Rails ΤϯδχΞͩͬͨ౰࣌͸ɺRails ͷϥΠϒϥϦΛ࡞ͬͨΓɺRails ΁ PR ͍ͯͨ͠ɻElixir Λ

    ΍ΔΑ͏ʹͳ͔ͬͯΒ͸ͦͪΒ΁γϑτͨ͠Γɻ 4 2013೥ʹ։ൃͨ͠ bundle-star ͱ͍͏πʔϧΛωλʹγ ϯΨϙʔϧͰൃද͢Δ͜ͱʹͳͬͨΓ5 5 https://medium.com/@ma2ge/reddotrubyconf-2017-%E3%81%AB%E5%8F%82%E5%8A%A0- %E8%8B%B1%E8%AA%9E%E3%81%A7%E7%99%BA%E8%A1%A8%E3%81%97%E3%81%A6%E3%81%8D%E3 %81%BE%E3%81%97%E3%81%9F-ca3a97fa1f65
  20. ͦͷଞΑ͍Ϧιʔε 4 ߩݙͰ͖ΔOSSͷݟ͚ͭํ -׬݁ฤ- / How to find "Good First

    Issues" Final - https://speakerdeck.com/ ohbarye/how-to-find-good-first-issues-final 4 OSSೖ໳ ੈքʹࢀՃ͢Δ࠷ॳͷͻͱԡ͠ / OSS first step - https://speakerdeck.com/vvakame/oss-first-step 4 2019-01-24 ۀ຿ͰͷOSSͱͷؔΘΓํ - https:// speakerdeck.com/kamijin_fanta/2019-01-24-ye-wu- defalseosstofalseguan-warifang
  21. Takayuki Matsubara 4 Twitter: @ma2ge 4 GitHub: @ma2gedev 4 Like:

    Ruby, Elixir and OSS 4 OSS ΋͘΋͘ձओ࠵ 4 M3, Inc. / ΤϜεϦʔגࣜձࣾ
  22. Q&A

  23. ωΠςΟϒΞϓϦͳͲͰ࢖͍ͬͯΔϥΠϒϥϦͷϥΠη ϯεΛެ։͢ΔͨΊʹͲ͏͍ͯ͠Δͷ͔ 4 ྫ͑͹ Android ͩͱ Android License Tools Plugin

    6 ͕ ͋Δ 4 ͦͷଞʹ΋ϥΠηϯεදࣔͷͨΊͷϥΠϒϥϦ͕͋Δͷ Ͱɺͦ͏͍ͬͨ΋ͷΛ࢖͏ͱखܰʹදࣔͰ͖ɺҙਤͤͣϥ Πηϯεදه͕࿙Εͯ͠·͏͜ͱ΋ආ͚ΒΕΔ 6 cookpad/license-tools-plugin: Gradle plugin to check library licenses and generate license pages. https://github.com/cookpad/license-tools-plugin
  24. ۀ຿޲͚ʹϥΠηϯε͕ͳ͍ίʔυΛ࢖͏͜ͱ͸Ͱ͖ Δͷ͔ ͳΔ΂͘ͳΒར༻Λආ͚ͨํ͕ྑ͍Ͱ͠ΐ͏ɻGitHub Ͱ͸ϥ Πηϯε͕ͳ͍ίʔυ͸ No License7 ͱͳΓஶ࡞ݖ͕ద༻͞ Ε·͢ɻ͜Ε͸ୈࡾऀʹΑΔίʔυͷෳ੡ɾ࠶഑෍ɾվมΛڐ Մ͠ͳ͍͜ͱʹͳΔͨΊɺOSS

    ͷఆ͔ٛΒ֎Εࣗ༝ʹར༻͢ Δ͜ͱ͕Ͱ͖·ͤΜɻ΋͠ར༻͢Δ৔߹͸ݸผʹஶऀͷํʹڐ ՄΛ͍ͨͩ͘ͳͲͷखஈ͕ඞཁʹͳΔͰ͠ΐ͏ɻ 7 No License | Choose a License https://choosealicense.com/no-permission/
  25. ଞਓͷ PR ʹमਖ਼ΛࠞͥΔૹΓํ͸͋Δͷ͔ ҰԠͰ͖Δ͸Ͱ͖ΔΑ͏͕ͩ8ɺݩͷ PR ૹΓओͱີʹίϛϡ χέʔγϣϯ͕औΕͳ͍ݶΓ͸͋·Γ͠ͳ͍खஈͰ͢ɻ΋͠ࢲ ͕ͦΕΛ͍ͨ͠ঢ়گʹͳͬͨͱͨ͠Βɺผͷ PR Λ࡞Γɺ֘౰

    ͷ PR ʹఏҊ෇͖ͰϦϯΫΛࡌͤΔ͘Β͍Λࢼ͢ͷͰ͸ͳ͍͔ ͱࢥ͍·͢ɻ 8 GitHubͰଞਓͷϓϧϦΫΤετʹର͠ίϯϑϦΫτղফ΍௥Ճͷमਖ਼Λߦ͍ͭͭϚʔδ͢Δ΋͏1ͭͷํ๏ https://www.ncaq.net/2017/10/16/
  26. ࢀߟ1 4 OSSϥΠηϯεͷڭՊॻ 4 αΠϘ΢ζͷΦʔϓϯιʔειϑτ΢ΣΞϙϦγʔΛ঺հ ͠·͢ https://blog.cybozu.io/entry/oss-policy 4 The Open

    Source Initiative: Φʔϓϯιʔεͷఆٛ(೔ຊ ޠ) http://www.opensource.jp/osd/osd- japanese.html
  27. ࢀߟ2 4 GithubʹΑΔɺΦʔϓϯιʔεϥΠηϯεͷબͼํ https://www.catch.jp/oss-license/2013/09/10/ github/ 4 Choose an open source

    license | Choose a License https://choosealicense.com/ 4 Open Source Guides | Learn how to launch and grow your project. https://opensource.guide/