Share
Embed
OSSの歩き方 / Walking with OSS
社内のOSS研修で使用したスライドです。
OSS 活動を始めるまでのガイドとなることを目的としました。
2019/02/28: 研修時に上がった Q&A の項目を追加しました
Takayuki Matsubara
February 18, 2019
Transcript
60 slides
-
खʹ͍ͭͯ 4 ීஈ OSS ΛͬͯࣄΛ͍ͯ͠Δ͕ OSS ͷઐՈͰͳ ͍ 4 GitHub
Ͱࣗ࡞ͷϥΠϒϥϦΛ10ݸҎ্ެ։ 4 GitHub Ͱͷ OSS ʹର͢Δ Pull Request(PR)100 ݸ͘Β͍(ͷׂʹͦΜͳʹଟ͘ͳ͍Ͱ͢) -
ΦʔϓϯιʔειϑτΣΞ ΦʔϓϯιʔειϑτΣΞʢӳ: 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 -
ͳͥදࣔΛ͍ͯ͠Δͷ͔ 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/ -
දతͳϥΠηϯε ϥΠηϯε ݅ GNU AGPLv3/GPLv3/LGPLv3 ίʔυ։ؚࣔΉɺAGPL ωοτϫʔΫΛհ ͯ͠αʔϏεఏڙ͢Δ߹ର Apache License
2.0 ίʔυ։ࣔෆཁɺMITʹՃ͑ͯมߋ༰Λυ ΩϡϝϯτԽ͢Δඞཁ MIT License ίʔυ։ࣔෆཁɺϥΠηϯεදهͱஶ࡞ݖ ৄ͘͠ https://choosealicense.com/licenses/ Λࢀরɻ -
ϥΠηϯεʹ͍ͭͯͷϦιʔε 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ϥΠηϯεͷڭՊॻ ٕज़ධࣾ -
OSSͷผ OSS ͷґଘ 4 ผͷOSSͷґଘ͕ଟ͍ͱɺΞοϓσʔτͰࠔΔ͜ͱ͕ ͋Δ 4 ྫ͑ґଘ͍ͯ͠ΔϥΠϒϥϦͷҰ෦͕։ൃఀࢭͯ͠ Rails ͷΞοϓάϨʔυ͕Ͱ͖ͳ͍ͱ͔
4 ґଘ͢Δͷ͕ଟ͚ΕɺͦΕ͚ͩΛ͔͚͓ͯ͘ϥΠϒ ϥϦ͕૿͑Δ͜ͱʹͳΔ -
ར༻࣮ 4 ࡞ͬͨਓҎ֎ʹΘΕ͍ͯΔ͔ 4 OSS ք۾Ͱʹ͢Δاۀ͕͍ͬͯΔ͔ 4 ελʔɺμϯϩʔυͳͲ 4 GitHub
Ͱ Repository ʹରͯ͠ελʔ͕ଟ͍͔ 4 ϥΠϒϥϦͷμϯϩʔυΛ ruby Ͱ͋Ε rubygems.orgɺnpm Ͱμϯϩʔυ͕ݟΕΔ -
දʹͯ͠ൺֱͯ͠ΈΔ ϥΠϒϥϦA ϥΠϒϥϦB ϥΠϒϥϦC ϥΠηϯε ⭕ MIT ⭕ Apache2 ⭕
MIT υΩϡϝϯτ " ⭕ # ϥΠϒϥϦґଘ ⭕ 8 ⭕ 6 # 30 ςετίʔυ ⭕ ⭕ ⭕ μϯϩʔυ " 100ສ 10ສ # 10 ελʔ ⭕ 1500 " 3000 # 3 Issue/PR ์ஔ۩߹ # " # νʔϜϝϯόʔར༻࣮ 2 0 0 ... ... ... ... -
4 ͏ 4 ίʔυΛಡΉ 4 ελʔΛ͚ͭΔ 4 IssueΛ࡞Δ 4 Pull
RequestΛૹΔ 4 υΩϡϝϯτ࡞/༁ 4 ίϛολʔͱͯ͠ϝϯςφϯε͢Δ 4 ࣗͰίʔυΛެ։͢Δ -
4 ͏ 4 ίʔυΛಡΉ 4 ελʔΛ͚ͭΔ 4 IssueΛ࡞Δ 4 Pull
RequestΛૹΔ 4 υΩϡϝϯτ࡞/༁ 4 ίϛολʔͱͯ͠ϝϯςφϯε͢Δ 4 ࣗͰίʔυΛެ։͢Δ -
ͦͦͲ͜Ͱ͢Δͷ͔ 4 GitHub/BitBucket/GitLab 4 ଞʹϓϩδΣΫτ͝ͱʹҟͳΔ 4 Ruby όάใࠂ͕ Redmine Ͱɺίʔυ
SVN Ͱ ཧɺGitHub ʹϛϥʔ͋Δ͕ϝΠϯ·ͩ SVN ͷํ 4 Kotlin Issue ཧ͕ YouTrackɺGitHub Ͱ Issue λϒ͕ͳ͍ -
ߩݙํ๏ʹ͍ͭͯ 4 ϓϩδΣΫτ͝ͱʹϧʔϧ͕͋Δ 4 όάใࠂ͜͏Ͱɺύον͜͏ૹͬͯͱ͔ 4 CONTRIBUTING.md, README.md ͷهࡌΛΈͯै͏ 4
Pull Request Issue ΛૹΔલʹɺطଘͷͷΛ֬ೝͯ͠ งғؾΛѲ͓ͯ͘͠ 4 ͦΕΒͱେ͖͘ҟͳΔํ๏ΛऔΒͳ͚Εɺϝϯςφʔ ࠔΔ͜ͱগͳ͍ -
GitHub ͰͷҰൠతͳ Pull Request ํ๏ 4 fork 4 ϩʔΧϧͰ։ൃɺमਖ਼ 4
Pull Request ࡞Δ 4 ԠΛͭɺࢦఠ͕͋ΕରԠ͢Δ 4 ্ख͍͚͘ Merge ͞ΕΔ -
ࣄͰඞཁʹͳΔύλʔϯ2 4 Rails 5 beta Ͱ༧Ίಈ࡞֬ೝ͓ͯͭ͘͠ΓͰࢼͨ͠Βό άʹૺ۰ͨ͠ 4 Cookie ͔ΒऔಘͰ͖Δ͕Τεέʔϓ͞Ε͍ͯͳ͍ͷ
Ͱɺςετίʔυ͕ͦΕͳΓʹ͔ͬ͠Γॻ͔Ε͍ͯͨͷͰ ݟ͔ͭͬͨ(ςετେࣄ) 4 ӳޠྗʹࣗ৴͕ͳ͔ͬͨͷ͔αϯϓϧΞϓϦ·Ͱ࡞ͬͯͨ https://github.com/rails/rails/pull/22828 -
υΩϡϝϯτͷߩݙ 4 Kotlin Fest Ͱ shiraji ͞ΜͷηογϣϯΛฉ͖ɺKotlin αϯϓϧίʔυΛՃ͢Δ PR
Λ࣮ࢪ 4 ࢦఠΛड͚ͯमਖ਼ͨ͠ޙԠ͕Ұ୴్ઈ͚͑ͨͲɺ20΄ ͲͰແࣄϚʔδ·Ͱߦ͖·ͨ͠ 4 ϝϯςφʔͷํ͔ͬͨ͠Γ͢ΔͷͰɺׂͱԠͭ ͜ͱී௨ʹ͋Δ https://github.com/JetBrains/kotlin/pull/1828 -
ίʔυͷߩݙ 4 power_assert_ex Λ࡞͍ͬͯΔࡍʹ AST Λ traverse Ͱ͖ Δػೳ͕ඞཁʹͳΓɺElixir ݴޠଆʹ
mailing list ܦ༝Ͱ ఏҊͨ͠ https://github.com/elixir-lang/elixir/pull/3832 -
ͱ͍͍͖͑ͳΓߩݙ͢ΔͱݴΘΕͯɺͲ͏ͨ͠Β͍͍ͷ͔ ͱͳΔਓଟ͍ͣɻͰ͢ͷͰ OSS ։ൃΛ͡ΊΔͨΊͷώ ϯτΛूΊͯΈ·ͨ͠ɻ ࣗ࣌ͦ͏ͰɺͲ͏ͨ͠Β͍͍ͷ͔ਖ਼Α͘Θ͔Βͳ͍ ͷͷɺদా͞ΜͷʮιʔγϟϧίʔσΟϯάͷੈքʯ3Λಡ ΜͰܹΛड͚ͨΓɺasakusa.rb4ʹࢀՃ࣮ͯ͠ࡍʹOSS׆ಈ Λ͍ͯ͠ΔਓͨͪΛΈͯঃʑʹ؆୯ͳ͜ͱ͔ΒͰ͖ΔΑ͏ʹͳ Γ·ͨ͠ɻ
4 https://asakusarb.esa.io/ 3 https://speakerdeck.com/a_matsuda/social-coding -
ϑΝʔετεςοϓ؆୯ͳͷͰ 4 ελʔΛ͚ͭΔ 4 ྫ͑ fix typo 4 ͜ΕཱͳߩݙɺυΩϡϝϯτΛݟͯ typo
ͰΤϥʔʹ ձ͏ਓ͕ٹ͑Δ͔͠Εͳ͍ -
༨ஊ: ࣗͷ͖ͳϥΠϒϥϦʹελʔΛ ͚ͭΔ - ґଘؚؔΊͯ 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 -
ίϛϡχςΟࢀՃ ·ͣମݧͯ͠ΈΔͱ͍͏͜ͱͰίϛϡχςΟʹࢀՃͯ͠ΈΔ ͷͲ͏Ͱ͠ΐ͏͔ɻ͢Ͱʹ 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 ʹ͍ͭͯ͘͘͢ΔձΛ։͍ͯ·͢ -
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 γϟπΛΒ͑Δ -
ΩϟϦΞΛߟ͑ͯߩݙ͢Δ 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 -
ͦͷଞΑ͍Ϧιʔε 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 -
Takayuki Matsubara 4 Twitter: @ma2ge 4 GitHub: @ma2gedev 4 Like:
Ruby, Elixir and OSS 4 OSS ͘͘ձओ࠵ 4 M3, Inc. / ΤϜεϦʔגࣜձࣾ -
ωΠςΟϒΞϓϦͳͲͰ͍ͬͯΔϥΠϒϥϦͷϥΠη ϯεΛެ։͢ΔͨΊʹͲ͏͍ͯ͠Δͷ͔ 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 -
ۀ͚ʹϥΠηϯε͕ͳ͍ίʔυΛ͏͜ͱͰ͖ Δͷ͔ ͳΔ͘ͳΒར༻Λආ͚ͨํ͕ྑ͍Ͱ͠ΐ͏ɻGitHub Ͱϥ Πηϯε͕ͳ͍ίʔυ No License7 ͱͳΓஶ࡞ݖ͕ద༻͞ Ε·͢ɻ͜ΕୈࡾऀʹΑΔίʔυͷෳɾ࠶ɾվมΛڐ Մ͠ͳ͍͜ͱʹͳΔͨΊɺOSS
ͷఆ͔ٛΒ֎Εࣗ༝ʹར༻͢ Δ͜ͱ͕Ͱ͖·ͤΜɻ͠ར༻͢Δ߹ݸผʹஶऀͷํʹڐ ՄΛ͍ͨͩ͘ͳͲͷखஈ͕ඞཁʹͳΔͰ͠ΐ͏ɻ 7 No License | Choose a License https://choosealicense.com/no-permission/ -
ଞਓͷ PR ʹमਖ਼ΛࠞͥΔૹΓํ͋Δͷ͔ ҰԠͰ͖ΔͰ͖ΔΑ͏͕ͩ8ɺݩͷ PR ૹΓओͱີʹίϛϡ χέʔγϣϯ͕औΕͳ͍ݶΓ͋·Γ͠ͳ͍खஈͰ͢ɻ͠ࢲ ͕ͦΕΛ͍ͨ͠ঢ়گʹͳͬͨͱͨ͠Βɺผͷ PR Λ࡞Γɺ֘
ͷ PR ʹఏҊ͖ͰϦϯΫΛࡌͤΔ͘Β͍Λࢼ͢ͷͰͳ͍͔ ͱࢥ͍·͢ɻ 8 GitHubͰଞਓͷϓϧϦΫΤετʹର͠ίϯϑϦΫτղফՃͷमਖ਼Λߦ͍ͭͭϚʔδ͢Δ͏1ͭͷํ๏ https://www.ncaq.net/2017/10/16/ -
ձࣾͰ OSS ׆ಈΛ͢Δ͜ͱͰ͖Δͷ͔ ձࣾʹΑͬͯҟͳΓ·͢͠ɺҰ෦ͷاۀҎ֎·ͩ໌֬ʹܾ ·͍ͬͯͳ͍͜ͱଟ͍ͱࢥ͍·͢ͷͰɺ࣮ࡍʹձࣾͰฉ͍ͯ Έ·͠ΐ͏ɻࢀߟࢿྉʹ্͛ͨαΠϘζ͞ΜਐΜͰ͍ ͯɺϙϦγʔΛఆٛͯ͠ެ։͞Ε͍ͯ·͢9ɻࠓޙ͜͏͍ͬͨ اۀ͕૿͑ΔͱɺࣾͰͷ OSS ׆ಈ͘͢͠ͳ͍ͬͯ͘ͷ
ͩΖ͏ͳͱࢥ͍·͢ɻ 9 αΠϘζͷΦʔϓϯιʔειϑτΣΞϙϦγʔΛհ͠·͢ https://blog.cybozu.io/entry/oss-policy -
ࢀߟ1 4 OSSϥΠηϯεͷڭՊॻ 4 αΠϘζͷΦʔϓϯιʔειϑτΣΞϙϦγʔΛհ ͠·͢ https://blog.cybozu.io/entry/oss-policy 4 The Open
Source Initiative: Φʔϓϯιʔεͷఆٛ(ຊ ޠ) http://www.opensource.jp/osd/osd- japanese.html -
ࢀߟ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/