ทำไม“ แยก GitHub” ออกมา? [ปิด]


50

ฉันเข้าใจว่าGitHubทำงานอย่างไร แต่สิ่งหนึ่งที่ฉันสับสนคือทำไมเกือบทุกโครงการOSSจึงมีลิงก์ "แยกฉันบน GitHub" ในหน้าแรกของพวกเขา ตัวอย่างเช่น,

http://jqtjs.com/ , http://www.daviddurman.com/flexi-color-picker/และอื่น ๆ

ทำไมสิ่งนี้จึงเป็นเรื่องธรรมดา พวกเขาต้องการ / ต้องการการตรวจสอบความถูกต้องรหัสตรวจสอบความปลอดภัย / ปรับปรุงประสิทธิภาพที่พวกเขาอาจไม่รู้วิธีการทำ?

มันหมายถึงการแสดงให้เห็นว่านี่เป็นโครงการความร่วมมือ - คุณยินดีที่จะเพิ่มการปรับปรุง?

พวกเขาทำงานให้กับ GitHub หรือต้องการส่งเสริมการบริการของพวกเขา? ผิดปกติฉันไม่คิดว่าจะเห็นโลโก้"Fork project on Bitbucket "

ปฏิกิริยาแรกของฉันต่อโลโก้นั้นคือโครงการอาจต้องมีการแก้ไข (แยก) เพื่อรวมเข้ากับสิ่งที่มีประโยชน์ - หรือว่าพวกเขากำลังสนับสนุน codebase ที่อยู่อย่างกระจัดกระจาย แต่ฉันไม่คิดว่าเป็นเจตนา


23
เพราะมันง่ายกว่าการเขียน "ถ้าคุณต้องการมีส่วนร่วมในโครงการนี้หรือตรวจสอบแหล่งที่มาให้ดูที่พื้นที่เก็บข้อมูลของเราที่ gitHub" ;-)
nietonfir

1
ฉันประหลาดใจเล็กน้อยที่ไม่มีใครพูดถึง ... มันคืออะไรปุน? เสียดสี? แต่ถ้อยคำเฉพาะนั้นจะไม่ทำงานกับ bitbucket; ไซต์ของพวกเขาให้ความรู้สึกเป็นมืออาชีพมากกว่า GitHub 'นั่นเป็นวิธีที่ฉันเข้าใจคำถามของคุณในการอ่านครั้งแรก - "ทำไม bitbucket จึงไม่มีสิ่งเหล่านี้"
Izkata

2
พวกเขาเป็นวิดเจ็ตทางสังคมเช่นเดียวกับที่ปรากฏพร้อมกับลิงก์ 'แชร์' ในคำถาม / คำตอบ SE: คุณจะได้รับวิดเจ็ตสำหรับ Google+, Facebook และ Twitter พวกมันพร้อมใช้งานสำหรับนักออกแบบเว็บไซต์จึงง่ายต่อการรวมเข้าด้วยกัน ฉันคิดว่าไม่มีสิ่งนั้นสำหรับ Bitbucket ดังนั้นจึงไม่มีอะไรให้สังเกต: ถ้าโครงการใดมีวิดเจ็ต 'fork me' ของตัวเองที่ทำเองที่บ้านพวกเขาจะไม่ดูเหมือนคนอื่น ๆ
Luc Danton

ฉันลงคะแนนให้ปิดคำถามนี้เป็นนอกหัวข้อเนื่องจากเป็นเรื่องเกี่ยวกับวัฒนธรรมซอฟต์แวร์โอเพนซอร์ส ปัจจุบันคำถามเกี่ยวกับวิธีการทำงานร่วมกันในชุมชนร่วมกันเพื่อผลิตแจกจ่ายตลาดและบางครั้งสร้างรายได้จากโครงการโอเพนซอร์สในหัวข้อเกี่ยวกับการเปิดแหล่ง Stack แลกเปลี่ยน
Thomas Owens

คำตอบ:


20

นอกเหนือจากความร่วมมือด้านการสนับสนุนของปัญหาจากมุมมองทางธุรกิจมันจะปรับปรุงและเสริมสร้างความเข้มแข็งของปริมาณการใช้ฐานลูกค้าและตำแหน่งทางการตลาดของ GitHub ดังนั้นจึงมีกลยุทธ์ทางธุรกิจเล็กน้อยที่เกี่ยวข้องกับมันเช่นกัน

โดยส่วนตัวฉันไม่สนใจสิ่งนี้เพราะ GitHub ให้บริการที่มีคุณค่าแก่ชุมชนโอเพนซอร์ส


23
ทำไมคำตอบของคุณจากมุมมองของ GitHub ผู้คนไม่ได้ใส่โลโก้นั้นลงบนเว็บไซต์ของพวกเขาเพื่อเพิ่มความแข็งแกร่งให้กับปริมาณการใช้ฐานข้อมูลและสถานะทางการตลาดของ GitHub ที่อาจจะมีผลข้างเคียง แต่ที่ไม่ได้เป็นวัตถุประสงค์ นี่เป็น "กลยุทธ์ทางธุรกิจ" ของ GitHub อย่างไร GitHub จะไม่รับผิดชอบแม้แต่การวางโลโก้นี้ในเว็บไซต์ OSS (ผู้ดูแลไซต์ OSS)
Ben Lee

3
@Ben Lee ความคิดเห็นของคุณดีมาก แต่ฉันจะยืนยันว่ามีไม่ได้เป็นหนึ่งในวัตถุประสงค์ แต่หลาย ฉันไม่ได้ละทิ้งมุมมองที่ว่ามีวัตถุประสงค์เพื่อส่งเสริมความร่วมมือเพียงแค่ว่าเราต้องยอมรับว่า GitHub เป็นธุรกิจด้วย (อาจเป็นที่ถกเถียงกันอยู่ว่าพวกเขาเป็นผู้นำตลาดในอุตสาหกรรมนี้) และวัตถุประสงค์อีกประการของFork Me on GitHubเป็นข้อได้เปรียบเชิงกลยุทธ์ จริงอยู่ที่ว่านี่เป็นความสมัครใจ แต่ก็ยังมีประสิทธิภาพ มันทำให้ GitHub มองเห็นได้บนอินเทอร์เน็ตซึ่งเป็นส่วนสำคัญของกลยุทธ์ธุรกิจอินเทอร์เน็ตใด ๆ
AsymLabs

2
@BenLee เช่นเดียวกับ dmitri ที่ระบุไว้ Github มีหน้านี้: github.com/blog/273-github-ribbons Bitbucket หรือบริการอื่นใดมีลักษณะคล้ายกันหรือไม่
NoBugs

75

มันหมายถึงการแสดงให้เห็นว่านี่เป็นโครงการความร่วมมือ - คุณยินดีที่จะเพิ่มการปรับปรุง?

ใช่: คุณไม่มีสิทธิ์ที่จะส่งคำสั่งซื้อโดยตรงที่ repo
แต่คุณจะมีความเป็นไปได้ที่จะแยก repo ของพวกเขาซึ่งทำให้คุณ repo และผลักดันกระทำจากที่นั่นเตรียมร้องขอดึง

ส้อม


2
ฉันรู้ว่าคุณสามารถแยกแล้วดึงคำขอบน Github คำถามของฉันคือทำไมพวกเขาพูดว่า "แยกฉันใน Github"?
NoBugs

6
@Nobugs เพื่อให้แน่ใจว่าคุณรู้ว่าจะมีส่วนร่วมในโครงการของพวกเขาอย่างไร
VonC

19
ฉันคิดว่าการโฟกัสที่นี่อยู่ที่ "fork me" มากกว่าใน Github อาจเป็นเพราะ Github เป็นไซต์ยอดนิยมประเภทนี้ ฉันไม่คิดว่าใครจะมีปัญหาใหญ่หากคุณแยก Bitbucket ออก คำถามที่ดีอยู่แล้ว
JensG

ฉันไม่คิดว่าใครจะมีปัญหาใหญ่ถ้าคุณใช้gitorious.orgเช่นกัน มันเป็นสิ่งที่แทบจะไม่มีใครทำ ...
Michael Paulukonis

37

ตรา "Fork me on Github" มีวัตถุประสงค์เพื่อแสดงว่าโครงการที่คุณได้รับสิทธิ์ในการมีส่วนร่วมในโครงการหรือใช้เป็นจุดเริ่มต้นสำหรับโครงการของคุณเอง

มันแสดงให้เห็นว่า "เป็นโครงการความร่วมมือและคุณยินดีที่จะเพิ่มการปรับปรุง"

ช่วยให้คุณสามารถเล่นกับรหัสหรือแยกออกจากโครงการเดียวกันโดยไม่กระทบกับต้นฉบับ

https://help.github.com/articles/fork-a-repo

หลักการเดียวกันนี้ใช้กับโฮสต์ git อื่น ๆ ทั้งหมด

ประเด็นหลักในการให้สิทธิ์ในการแยกโครงการคือ

  • ส่งเสริมการทำงานร่วมกันโดยอนุญาตให้ผู้คนทำงานร่วมกันในการปรับปรุงโครงการ
  • เพิ่มความรู้โดยอนุญาตให้ผู้คนศึกษาโค้ดของคุณ

บางโครงการที่คุณอาจพบเจออาจเป็นเพราะพนักงานของ Github สำหรับความต้องการส่วนตัว พวกเขาไม่ต้องการส่งเสริม GitHub คุณสามารถค้นหาโครงการโดย github ที่นี่: https://github.com/github

เหตุผลที่คุณไม่เห็นป้ายจากโฮสต์อื่น ๆ เป็นเพราะ Github เป็นแพลตฟอร์มการโฮสต์และการทำงานร่วมกันที่ได้รับความนิยมมากที่สุด


เผง เวิร์กโฟลว์ DVCS หมายความว่าฉันสามารถเผยแพร่ผลลัพธ์ของฉันได้โดยไม่กระทบต่อผู้อื่น ทางแยกหมายถึงไม่ต้องขออนุญาตแบ่งปันสิ่งที่คุณต้องการแบ่งปัน หากอินเทอร์เน็ตชอบการเปลี่ยนแปลงของคุณพวกเขาจะดูดซับไว้
Warren P

15

ลองนึกภาพคุณใช้โปรแกรมแก้ไขข้อความที่คุณโปรดปรานและหลังจากนั้นไม่นานคุณก็จะพบว่าคุณชอบที่จะใช้คุณสมบัติบางอย่าง (เช่นตัวเลือกบันทึกไฟล์ที่ไม่มีการบล็อก)

หลังจากคิดว่าเป็นครั้งที่สิบเอ็ดคุณตัดสินใจที่จะเขียนด้วยตัวเอง หลังจากที่คุณพบหน้า GitHub ของโครงการนี้คุณมีสองตัวเลือก:

  1. ดาวน์โหลดซอร์สโค้ดแก้ไขและเก็บรักษาด้วยตัวคุณเอง
  2. แยกโครงการบน GitHub และทำงานบนส้อมของคุณ

หากคุณเลือกตัวเลือกที่สองหลังจากสร้างฟีเจอร์ของคุณเป็นอย่างดีและผ่านการทดสอบอย่างดีคุณสามารถเตรียมคำขอแบบดึงแล้วโครงการทั้งหมดจะได้รับประโยชน์จากคุณ

แต่ถ้าคุณเลือกเส้นทางแรกเป็นมากโอกาสที่คุณก็จะลืมเกี่ยวกับการปรับเปลี่ยนและไม่มีใครของคุณยกเว้นคุณจะได้รับประโยชน์จากมัน (ใช่คุณอาจจะใช้รหัสด้วยตนเอง แต่บาง coder อื่น ๆ ได้อย่างง่ายดายสามารถลืมว่า. ใช้ GitHub กำลังบังคับให้คุณรับการเข้าสังคมมากขึ้นกับงานของผู้อื่น)

การพูดว่า 'เจ้าของโครงการ' ส้อมฉันบน github 'เพียงต้องการให้แน่ใจว่าคุณเลือกFork on githubดาวน์โหลดโค้ดและเผยแพร่ในโฮมไดเร็กตอรี่ของคุณแทน


7

มีเพียงเพื่อแสดงให้เห็นว่านี่เป็นโครงการโอเพ่นซอร์สและคุณแยกมันหากคุณต้องการด้วยเหตุผลอะไรก็ตาม นอกจากนี้ให้ตรวจสอบโพสต์บล็อกนี้ใน GitHub: https://github.com/blog/273-github-ribbons

อัปเดต: โดยส่วนตัวแล้วฉันเพิ่มริบบิ้น GitHub เหล่านี้เพื่อให้ผู้คนสามารถค้นหาฉันใน GitHub และติดดาวโครงการของฉัน;)


6

มันหมายความว่าพวกเขาอยู่ใน GitHub ที่ฟอร์กราคาถูกและพวกเขาต้องการที่จะสนับสนุนการมีส่วนร่วมในการปรับปรุงซอฟต์แวร์และชุมชนของพวกเขา


5

Github พยายามที่จะขยายฐานผู้ใช้ของพวกเขาเพื่อรวมการทำงานร่วมกันใด ๆ ไม่เพียง แต่ซอร์สโค้ดโฮสติ้ง; และทำให้พวกเขาจะผลักดันส้อมและส่งคำขอดึงวิธี การสร้างแพตช์และส่งพวกเขาทางอีเมลจะไม่เป็นที่สนใจของคนส่วนใหญ่อื่น ๆ สิทธิ์ในการพุชไม่ได้มีความสำคัญที่นี่เพราะในที่สุดผู้ใช้คอมไพล์ (หรือผู้มีความรู้ดีผู้สนใจหรืออะไรก็ตาม) ที่มีความรู้จำนวนมากเกี่ยวกับเครื่องมือและขั้นตอนการพัฒนาจะสามารถส่งอีเมลพร้อมแพทช์ได้

นอกจากนี้ Github ยังให้ความสำคัญกับเครือข่ายสังคมมากกว่าการโฮสต์รหัส: โปรไฟล์, repos และการเปลี่ยนแปลงของคุณทำให้ตัวตนของคุณในฐานะนักพัฒนาซอฟต์แวร์เช่นเดียวกับทวีตของคุณและ +1 ริบบิ้นและปุ่มเหล่านั้นทั้งหมดและเหมือนกันถูกใช้เป็นวิธีการตรวจสอบตนเองเส้นทางไปยังโปรไฟล์ของบุคคลที่โครงการเป็นของ ทุกวันนี้การมีโปรไฟล์ Github ที่เหมาะสมเป็นสิ่งแรกที่คาดหวังจากนักพัฒนา แม้ว่าฉันจะใช้ Mercurial เพื่ออะไรก็ตามฉันก็รีบไปที่ Github ผ่าน hg-git ด้วยเหตุผลเหล่านี้

ในที่สุดริบบิ้น "Fork me on Github" นั้นแตกต่างกันเล็กน้อยจากจุดประสงค์ของ "ทวีตบทความนี้" หรือปุ่ม "แบ่งปันสิ่งนี้บน G +" (การมีพื้นที่เก็บข้อมูลแยกต่างหากในรายการ repos ของคุณหมายถึง "ฉันเป็นผู้ใช้สิ่งนี้" มีหลายพันส้อม Linux บน github แม้ว่า Linus Torvalds จะไม่ยอมรับคำขอดึง)


2

เป็นอีกวิธีที่จะพูดว่า "ยินดีต้อนรับแพตช์"

แทนที่จะส่งความปรารถนาและคำขอคุณสมบัติผู้ใช้สามารถส่งคำขอดึงที่ผู้เขียนต้นฉบับตรวจสอบตรวจสอบและรวมคำขอดึง

ฟอร์กกิ้งในอดีตเป็นการกระทำที่เป็นปฏิปักษ์ที่กระทำโดยกลุ่มที่ขัดแย้งกับการจัดการของโครงการดั้งเดิมตัวอย่างเช่น OpenOffice ของ Sun ที่ใช้ในการปฏิเสธปลั๊กอิน SVG C / C ++ ที่รวดเร็วเพราะต้องการปลั๊กอิน Java-based ที่เสียช้า

ในกรณีส่วนใหญ่ส้อมจะไม่ดีและดำเนินการโดยคนที่อิจฉาหรือคนจาก บริษัท เห็นแก่ตัวที่มีแผนว่าจะไม่แบ่งปันกับชุมชนดั้งเดิมและไม่สอดคล้องกับมัน (เช่นCanonical ) และตัวอย่างของสิ่งนี้คือ libav / avconv (ซึ่งเป็นส่วนหนึ่งของ FFMPEG) ในกรณีเหล่านั้นชุมชนดั้งเดิมจะมีคุณภาพความปลอดภัยสูงกว่าและยินดีต้อนรับแพตช์ที่สอดคล้องกับแผนชุมชน

Dan Walsh กล่าวถึงนิยามเก่า ๆ ของ fork

ฉันอยู่ในโอเพนซอร์สมาเป็นเวลานานและคำจำกัดความของ "ส้อม" อาจเป็นวันที่ ฉันคิดว่า "ทางแยก" เป็นการกระทำที่เป็นศัตรูของกลุ่มหนึ่งเพื่อให้ผู้อื่นใช้และสนับสนุนโครงการต้นน้ำของพวกเขาและไม่สนใจรุ่น "ดั้งเดิม" ตัวอย่างเช่น LibreOffice เลิกใช้งาน OpenOffice หรือย้อนกลับไป Xorg โดยการเลิกใช้ Xfree86

จากนั้นเขาก็เปรียบเทียบมันกับส้อมของ gitub

ทุกวันนี้ GitHub ได้เปลี่ยนความหมาย เมื่อที่เก็บซอฟต์แวร์มีอยู่ใน GitHub หรือแพลตฟอร์มที่คล้ายกันทุกคนที่ต้องการมีส่วนร่วมจะต้องกดปุ่ม "fork" และเริ่มสร้างแพตช์ จากการเขียนนี้นักเทียบท่าบน GitHub มีส้อม 9,860 รวมถึงของเรา อย่างไรก็ตามตามคำนิยามนี้แพ็คเกจทั้งหมดที่มีการจัดส่งที่มีแพตช์เป็นส้อม Red Hat จัดส่งเคอร์เนล Linux และฉันไม่เคยได้ยินชื่อที่เรียกว่า fork แต่มันจะถูกพิจารณาว่าเป็น "ทางแยก" หากคุณกำลังพิจารณาโครงการต้นน้ำใด ๆ ที่จัดส่งมาพร้อมกับทางแยก


1

คำตอบทั้งหมดที่บอกว่านี่เป็นการร่วมมือกันถามคำถาม: ทำไมไม่พูดว่า " Clone me on GitHib" หรือ "ดาวน์โหลด. zip จาก GitHub"

บน GitHub คุณสามารถเห็นจำนวนของส้อม แต่เพื่อความรู้ของฉันไม่นับจำนวนของการโคลนหรือการดาวน์โหลด zip

ดังนั้นฉันจะบอกว่ามันเป็นส่วนหนึ่งในการสนับสนุนการทำงานร่วมกันส่วนหนึ่งเพื่อรับข้อเสนอแนะและการตรวจสอบความถูกต้องที่ผู้คนใช้รหัสของคุณ

ป.ล. ฉันค่อนข้างใหม่สำหรับ GitHub ดังนั้นหากนี่ผิดฐานไปโดยสิ้นเชิงกรุณาแจ้งให้เราทราบ


มันง่ายกว่าหรือที่จะพูดว่า "นั่นคือวิธีการควบคุมเวอร์ชันแบบกระจายโดยการร้องขอแบบดึงซึ่งแน่นอนว่าฉันต้องแยก repo ของคุณก่อนจากนั้นส่งไปยัง fork ของฉันจากนั้นส่งคำขอแบบดึงถ้าฉันสร้างสิ่งที่คุ้มค่า กับโครงการเดิม "
Warren P

1
ต้องยอมรับว่าฉันไม่ได้ "รับ" คอมไพล์ ทำไมไม่โคลนหรือรับไฟล์ zip และถ้าฉันทำการเปลี่ยนแปลงให้ตั้งค่า VCS ที่ฉันต้องการ ในบางกรณีที่หายากฉันทำการเปลี่ยนแปลงที่เป็นประโยชน์ของผลประโยชน์ให้กับทุกคนฉันสามารถหันไปใช้อีเมลหรือทำส้อมแล้ว
user949300

คำตอบนี้ขัดแย้งกันเอง คุณแนะนำอย่างถูกต้องว่าพวกเขากำลังพยายามสนับสนุนการทำงานร่วมกัน จุดเชื่อมโยงดังกล่าวไม่ใช่เพื่อให้ผู้คนมีสถานที่สำหรับดาวน์โหลดโครงการของคุณจุดคือให้พวกเขามีส่วนร่วมในการพัฒนา พวกเขาสามารถดาวน์โหลด zip หรือโคลนหากพวกเขาต้องการสำเนาสำหรับตัวเอง แต่ถ้าพวกเขาต้องการให้สำเนาของพวกเขามีเส้นทางที่จัดตั้งขึ้นเพื่อสนับสนุนกลับไปที่โครงการต้นน้ำที่ทำผ่านการแยกทางที่ upstream สามารถดึงการมีส่วนร่วมของคุณ จาก.
Caleb

@ user949300 คุณยังสามารถใช้git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.gitแล้วgit format-patch masterส่งผ่านอีเมลหรือสิ่งที่ต้องการ
Sebastian Godelet

0

การฟาดฟันบน GitHub ทำให้มันง่ายที่จะพูดเช่นติดตามฉันบน Twitter ฉันนำการขัดเกลาทางสังคมเล็ก ๆ น้อย ๆ มาสู่โลกแห่งการพัฒนาจากคำสอนของฉันเองและยังทำให้เห็นได้ชัดว่าเป็นโอเพ่นซอร์สและพร้อมสำหรับการดัดแปลงฉันยังคิดว่ามันเป็นแนวคิดที่ดีด้วยแบนเนอร์ "แยกฉันบน GitHub" เว็บไซต์โครงการ


หนอ ไม่เพราะมี 'star' และ 'watch' สำหรับ repos รวมถึง 'follow' สำหรับผู้ใช้ ประเด็นสำคัญคือการกระตุ้นให้เกิดการกระทำที่เฉพาะเจาะจง - การส่งเงินบริจาคต้นน้ำ - ไม่ใช่แค่ทำให้เป็นสังคม
Caleb

0

คุณอาจจะดีที่สุดเพียงแค่ตอบคำถามที่ง่ายที่สุด: พวกเขาต้องการให้คุณรู้ว่าโค้ดนั้นสามารถใช้ได้อย่างอิสระใน GitHub ฉันคิดว่าสมมุติฐานของคุณค่อนข้างจะสมเหตุสมผล


นี่เป็นคำตอบที่ง่ายที่สุดที่เข้าใจได้จริง
Woland
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.