Tại sao lại chọn Fork trên GitHub? [đóng cửa]


50

Tôi hiểu cách GitHub hoạt động, nhưng một điều tôi đã nhầm lẫn là, tại sao gần như mọi dự án OSS gần đây đều có liên kết "Fork me on GitHub" trên trang chủ của họ. Ví dụ,

http://jqtjs.com/ , http://www.daviddurman.com/flexi-color-picker/ và những người khác.

Tại sao điều này rất phổ biến? Có phải họ muốn / cần xác thực mã, kiểm tra các cải tiến về bảo mật / hiệu suất mà họ có thể không biết phải làm thế nào không?

Có phải nó có nghĩa là cho thấy đây là một dự án hợp tác - bạn được chào đón để thêm các cải tiến?

Họ làm việc cho GitHub, hay muốn quảng bá dịch vụ của họ? Thật kỳ lạ, tôi không nghĩ rằng tôi đã thấy một logo " Dự án Fork trên Bitbucket " gần đây.

Phản ứng đầu tiên của tôi đối với logo đó là dự án có thể cần phải được sửa đổi (rẽ nhánh) để tích hợp nó với bất cứ điều gì hữu ích - hoặc họ đang khuyến khích codebase phân mảnh, khuyến khích mọi người tự tạo ra ngã ba của dự án. Nhưng tôi không nghĩ đó là ý định.


23
Bởi vì nó dễ hơn viết "nếu bạn muốn đóng góp cho dự án này hoặc kiểm tra nguồn, hãy xem kho lưu trữ của chúng tôi tại github". ;-)
nietonfir

1
Tôi hơi ngạc nhiên khi không ai nhắc đến ... Cái gì vậy, một cách chơi chữ? Vô tội? Nhưng từ ngữ cụ thể đó sẽ không hoạt động với bitbucket; trang web của họ thể hiện sự chuyên nghiệp hơn github. Vì đó là cách tôi hiểu câu hỏi của bạn trong lần đọc đầu tiên - "tại sao bitbucket không có những thứ này?"
Izkata

2
Chúng là các tiện ích xã hội , giống như các tiện ích xuất hiện với liên kết 'chia sẻ' trên câu hỏi / câu trả lời SE: bạn có các tiện ích cho Google+, Facebook và Twitter. Chúng sẵn sàng để sử dụng cho các nhà thiết kế trang web, vì vậy dễ tích hợp. Tôi nghĩ rằng không có thứ gì như vậy, ví dụ như Bitbucket, vì vậy không có gì phải chú ý: nếu bất kỳ dự án nào có tiện ích 'fork me' của riêng họ, có lẽ chúng sẽ không giống bất kỳ dự án nào khác, có lẽ.
Luc Danton

Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì đó là về văn hóa phần mềm nguồn mở. Hiện tại, các câu hỏi về cách các cộng đồng cộng tác với nhau để sản xuất, phân phối, tiếp thị và đôi khi kiếm tiền từ các dự án nguồn mở là chủ đề trên Sàn giao dịch ngăn xếp nguồn mở .
Thomas Owens

Câu trả lời:


20

Ngoài khía cạnh hợp tác thúc đẩy của vấn đề, từ góc độ kinh doanh, nó sẽ tăng cường và củng cố lưu lượng truy cập, cơ sở người dùng và vị trí thị trường của GitHub. Vì vậy, có một chút chiến lược kinh doanh liên quan đến nó quá.

Cá nhân tôi không bận tâm điều này vì GitHub cung cấp một dịch vụ có giá trị cho cộng đồng nguồn mở.


23
Tại sao câu trả lời của bạn từ quan điểm của GitHub? Mọi người không đặt logo đó trên trang web của họ để tăng cường lưu lượng truy cập, cơ sở người dùng và vị trí thị trường của GitHub. Đó có thể là một tác dụng phụ, nhưng đó không phải là mục đích . Làm thế nào đây là một "chiến lược kinh doanh" GitHub? GitHub thậm chí không chịu trách nhiệm đưa logo này lên các trang OSS (những người duy trì trang OSS).
Ben Lee

3
@Ben Lee Nhận xét của bạn được thực hiện tốt. Nhưng tôi sẽ khẳng định rằng không có một mục đích, mà là nhiều mục đích . Tôi đã không bác bỏ quan điểm rằng một mục đích là để thúc đẩy sự hợp tác, đơn giản là chúng ta cũng phải thừa nhận rằng GitHub cũng là một doanh nghiệp (có thể tranh luận rằng họ là công ty dẫn đầu thị trường trong ngành này) và một mục đích khác của Fork Me trên GitHub là cho lợi thế chiến lược. Cho rằng điều này là tự nguyện, nhưng dù sao nó cũng có hiệu quả. Nó làm cho GitHub hiển thị rõ hơn trên internet, một phần quan trọng của bất kỳ chiến lược kinh doanh internet nào.
AsymLabs

2
@BenLee Giống như dmitri đã lưu ý, Github có trang này: github.com/blog/273-github-ribbons Bitbucket hoặc bất kỳ dịch vụ nào khác có tương tự không?
NoBugs

75

Có phải nó có nghĩa là cho thấy đây là một dự án hợp tác - bạn được chào đón để thêm các cải tiến?

Có: bạn không có quyền đưa ra một cam kết trực tiếp tại repo của họ.
Nhưng bạn có khả năng rẽ nhánh repo của họ , điều này làm cho repo của bạn và đẩy cam kết từ đó, chuẩn bị các yêu cầu kéo .

cái nĩa


2
Tôi biết bạn có thể rẽ nhánh, sau đó kéo yêu cầu trên Github, câu hỏi của tôi là tại sao họ nói "fork me on Github"?
NoBugs

6
@NoBugs để đảm bảo bạn biết cách đóng góp lại cho dự án của họ.
VonC

19
Tôi nghĩ, trọng tâm ở đây nằm ở "ngã ba" hơn là trên Github. Có lẽ đơn giản là vì Github là trang web phổ biến nhất của loại hình này. Tôi không nghĩ có ai gặp vấn đề lớn nếu bạn sử dụng Bitbucket. Câu hỏi hay nào.
JensG

Tôi cũng không nghĩ có ai gặp vấn đề lớn nếu bạn chọn ngã ba trên gitorious.org . Chỉ là hầu như không ai làm ...
Michael Paulukonis

37

Huy hiệu "Fork me on Github" có nghĩa là cho thấy đó là dự án mà bạn được cấp quyền đóng góp cho dự án hoặc sử dụng nó làm điểm khởi đầu cho dự án của riêng bạn.

Điều đó cho thấy rằng "đó là một dự án hợp tác và bạn hoan nghênh thêm các cải tiến."

Nó cho phép bạn chơi xung quanh với mã hoặc tạo ra một dự án giống nhau mà không ảnh hưởng đến nguồn ban đầu.

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

Nguyên tắc tương tự áp dụng cho tất cả các máy chủ git khác.

Những điểm chính (trong số nhiều thứ khác) của việc trao quyền cho một dự án là

  • thúc đẩy sự hợp tác - bằng cách cho phép mọi người cùng nhau cải thiện dự án.
  • thêm vào kiến ​​thức - bằng cách cho phép mọi người nghiên cứu mã của bạn.

Một số dự án bạn có thể gặp phải có thể là bởi nhân viên Github cho nhu cầu riêng tư của họ. Họ không muốn quảng bá github. Bạn có thể tìm thấy các dự án của github tại đây: https://github.com/github

Về lý do tại sao bạn không thấy huy hiệu từ các máy chủ khác là vì Github là nền tảng cộng tác và lưu trữ git phổ biến nhất.


Chính xác. Quy trình công việc DVCS có nghĩa là tôi có thể công bố kết quả của mình mà không gây ảnh hưởng đến người khác. Ngã ba có nghĩa là không phải xin phép để chia sẻ bất cứ điều gì bạn muốn chia sẻ. Nếu Internet thích những thay đổi của bạn, họ sẽ tiếp thu chúng.
Warren P

15

Hãy tưởng tượng bạn sử dụng trình soạn thảo văn bản yêu thích của mình và sau một thời gian bạn thấy rằng bạn sẽ thực sự yêu thích một số tính năng sẽ được triển khai (như tùy chọn Lưu tệp không chặn).

Sau khi nghĩ rằng lần thứ mười một, bạn quyết định viết một mình. Sau khi bạn tìm thấy trang github của dự án này, bạn có hai tùy chọn:

  1. Tải về mã nguồn, sửa đổi nó và giữ nó cho riêng bạn.
  2. Ngã ba dự án trên một github và làm việc trên ngã ba của bạn.

Nếu bạn chọn tùy chọn thứ hai, sau khi làm cho tính năng của bạn được viết tốt và được kiểm tra tốt, bạn có thể chuẩn bị yêu cầu kéo và sau đó toàn bộ dự án sẽ được hưởng lợi từ bạn.

Tuy nhiên, nếu bạn chọn đường dẫn đầu tiên, rất có thể bạn sẽ quên đi sửa đổi của mình và không ai ngoại trừ bạn sẽ được hưởng lợi từ nó (vâng, bạn có thể chia sẻ mã theo cách thủ công, nhưng một số lập trình viên khác có thể dễ dàng quên điều đó. Sử dụng github được buộc bạn phải nhận được nhiều hơn xã hội hóa với công việc của người kia).

Nói rằng 'fork tôi trên chủ sở hữu dự án của github' chỉ muốn đảm bảo rằng bạn đã chọn Fork on githubthay vì tải xuống mã và xuất bản nó vào thư mục chính của bạn.


7

Nó chỉ ở đó để chỉ ra rằng đây là một dự án nguồn mở và bạn rẽ nhánh nó nếu bạn muốn, bất kể lý do là gì. Ngoài ra, hãy xem bài đăng trên blog này trên GitHub: https://github.com/blog/273-github-ribbons

Cập nhật: Cá nhân, tôi thêm các dải băng GitHub này để mọi người có thể tìm thấy tôi trên GitHub và gắn dấu sao cho các dự án của tôi;)


6

Điều đó có nghĩa là họ đang ở trên github, nơi mà giá rẻ là rẻ và họ muốn khuyến khích những đóng góp để cải thiện phần mềm và cộng đồng của họ.


5

Github đang cố gắng mở rộng cơ sở người dùng của họ để bao gồm bất kỳ công việc hợp tác nào, không chỉ lưu trữ mã nguồn; và do đó, họ đẩy ngã ba và gửi một phương thức yêu cầu kéo . Tạo các bản vá và gửi chúng qua email sẽ không hấp dẫn đối với hầu hết mọi người, không phải là lập trình viên. Quyền truy cập không thực sự quan trọng ở đây, vì cuối cùng hầu hết người dùng git (hoặc đồng bóng, darcs hoặc bất cứ ai) có lượng kiến ​​thức đáng kể về công cụ và quy trình phát triển sẽ có thể gửi email với một bản vá được đính kèm bằng cách nào đó.

Ngoài ra, Github thiên về mạng xã hội hơn là lưu trữ mã: hồ sơ, repos và thay đổi của bạn tạo nên danh tính của bạn với tư cách là nhà phát triển phần mềm, giống như tweet của bạn và '+1. Tất cả những dải ruy băng và nút và giống nhau được sử dụng như một phương tiện tự hành, một đường dẫn đến hồ sơ của người mà dự án thuộc về. Ngày nay, có một hồ sơ Github đàng hoàng là điều đầu tiên được mong đợi từ một nhà phát triển. Mặc dù tôi sử dụng đồng bóng cho bất cứ điều gì, tôi vẫn đẩy Github qua hg-git vì những lý do này.

Cuối cùng, dải băng "Fork me on Github" chỉ khác một chút về mục đích so với nút "Tweet bài viết này" hoặc nút "Chia sẻ điều này trên G +". .


2

đó là một cách khác để nói "bản vá được chào đón".

thay vì gửi mong muốn và yêu cầu tính năng, mọi người có thể gửi yêu cầu kéo trong đó tác giả gốc xem xét, xác thực và hợp nhất yêu cầu kéo.

forking về mặt lịch sử là một hành động thù địch được thực hiện bởi nhóm mâu thuẫn với việc quản lý dự án ban đầu, ví dụ Sun của OpenOffice đã từ chối plugin C / C ++ SVG nhanh vì nó thích plugin dựa trên Java bị hỏng chậm vì lý do chính trị.

Trong hầu hết các trường hợp, dĩa là xấu, và được mang theo bởi những người ghen tị hoặc những người từ các công ty ích kỷ, những người có kế hoạch không chia sẻ với cộng đồng ban đầu và không phù hợp với nó (ví dụ: Canonical ) và ví dụ về điều này là libav / avconv (là một nhánh của FFMPEG), trong những trường hợp đó, cộng đồng ban đầu có chất lượng, bảo mật cao hơn và họ hoan nghênh các bản vá phù hợp với các kế hoạch cộng đồng.

Dan Walsh lưu ý định nghĩa cũ về ngã ba

Tôi đã ở trong nguồn mở trong một thời gian dài và định nghĩa của tôi về một "ngã ba" có thể được đề ngày. Tôi nghĩ rằng một "ngã ba" là một hành động thù địch được thực hiện bởi một nhóm để khiến những người khác sử dụng và đóng góp cho phiên bản dự án ngược dòng của họ và bỏ qua phiên bản "gốc". Ví dụ: LibreScript đã loại bỏ OpenOffice hoặc quay trở lại Xorg, loại bỏ Xfree86.

Sau đó, ông so sánh nó với ngã ba của github

Ngày nay, GitHub đã thay đổi ý nghĩa. Khi kho lưu trữ phần mềm tồn tại trên GitHub hoặc một nền tảng tương tự, mọi người muốn đóng góp đều phải nhấn nút "ngã ba" và bắt đầu xây dựng các bản vá của họ. Theo văn bản này, Docker trên GitHub có 9.860 dĩa, bao gồm cả của chúng tôi. Tuy nhiên, theo định nghĩa này, tất cả các gói phân phối bao gồm các bản vá đều là dĩa. Red Hat vận chuyển hạt nhân Linux và tôi chưa nghe thấy điều này được gọi là một ngã ba. Nhưng nó sẽ được coi là một "ngã ba" nếu bạn đang xem xét bất kỳ dự án thượng nguồn nào được vận chuyển với các bản vá một ngã ba.


1

Tất cả các câu trả lời nói rằng đây là hợp tác, hãy đặt câu hỏi: tại sao không nói " Sao chép tôi trên GitHib" hoặc "Tải xuống .zip từ GitHub"?

Trên GitHub, bạn có thể thấy số lượng dĩa. Nhưng, theo hiểu biết của tôi, không phải là số lượng bản sao hoặc tải xuống zip.

Vì vậy, tôi muốn nói rằng đó là một phần để khuyến khích sự hợp tác, một phần để nhận phản hồi và xác nhận rằng mọi người đang sử dụng mã của bạn.

PS Tôi khá mới đối với GitHub vì vậy nếu điều này hoàn toàn sai về cơ sở, vui lòng cho tôi biết.


Sẽ không đơn giản hơn nhiều khi chỉ nói, "đó là cách kiểm soát phiên bản phân tán hoạt động, bằng các yêu cầu kéo, tất nhiên yêu cầu tôi trước tiên rẽ nhánh repo của bạn, sau đó cam kết với ngã ba của tôi, sau đó đưa ra yêu cầu kéo nếu tôi xây dựng một thứ đáng chia sẻ với dự án ban đầu "
Warren P

1
Phải thừa nhận rằng tôi thực sự không "nhận" git. Tại sao không sao chép hoặc lấy tệp zip và nếu tôi thực hiện thay đổi, hãy thiết lập bất kỳ VCS nào tôi muốn? Trong những trường hợp hiếm hoi tôi thực hiện những thay đổi hữu ích về lợi ích cho tất cả mọi người, tôi có thể dùng đến email hoặc làm ngã ba sau đó.
dùng949300

Câu trả lời này là tự mâu thuẫn. Bạn đúng đề nghị rằng họ đang cố gắng khuyến khích sự hợp tác. Điểm của một liên kết như vậy là không cung cấp cho mọi người một nơi để tải xuống dự án của bạn, vấn đề là để họ tham gia vào việc phát triển nó. Họ có thể tải xuống một bản zip hoặc sao chép nó nếu họ chỉ muốn một bản sao cho chính họ, nhưng nếu họ muốn bản sao của họ có đường dẫn được thiết lập để đóng góp lại cho dự án ngược dòng được thực hiện thông qua một ngã ba mà thượng nguồn có thể kéo các đóng góp của bạn vào từ.
Caleb

@ user949300, bạn vẫn có thể chỉ cần sử dụng git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.gitvà sau đó git format-patch mastergửi qua Email hoặc tương tự
Sebastian Godelet

0

forking trên github làm cho âm thanh thực sự dễ dàng để nói như theo tôi trên twitter. Tôi không mang một chút xã hội hóa vào thế giới phát triển từ chính bản thân của mình cũng làm cho nó rõ ràng là nguồn mở và có sẵn để sửa đổi. Tôi cũng nghĩ đó là một khái niệm hay với biểu ngữ "fork me on github" ở một đầu của bạn trang web dự án


Ừm. Không. Đối với điều đó, có 'ngôi sao' và 'chiếc đồng hồ' cho repos cũng như 'theo dõi' cho người dùng. Quan điểm của dĩa là khuyến khích một loại hành động cụ thể Đóng góp ngược dòng ngược dòng không chỉ làm cho nó trở nên xã hội.
Caleb

0

Có lẽ bạn tốt nhất chỉ nên lấy câu trả lời đơn giản nhất: họ muốn bạn biết mã có sẵn miễn phí trên GitHub. Tôi nghĩ rằng các giả thuyết của bạn là một chút suy nghĩ.


Đây là câu trả lời đơn giản nhất thực sự có ý nghĩa.
Woland
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.