Làm thế nào để bạn phát hiện ra mã nguồn của Google, gửi một bản vá lỗi sao cho nó thân thiện?


18

Trong các câu trả lời của câu trả lời kinh điển về "nguồn mở, hãy gửi một bản vá" là gì? , nhiều người lên tiếng cho rằng chỉ cần yêu cầu mọi người nộp bản vá là kiêu ngạo và thô lỗ.

Nhưng dường như với tư cách là một nhà phát triển trong bất kỳ dự án nguồn mở nào, bạn sẽ thấy nhiều yêu cầu tính năng hơn trong danh sách gửi thư hơn là bạn có thể thực hiện. Vì vậy, khi người dùng nói: "Tôi muốn xem tính năng X", sự thật của vấn đề thường là cơ hội để nó được triển khai là khá mong manh trừ khi họ tự gửi một bản vá. Ngoài ra, đôi khi một chút khích lệ có thể là tất cả những gì cần thiết để biến người dùng thành cộng tác viên.

Mặt khác, bạn không muốn làm mất đi những người đóng góp (tiềm năng) bằng cách tỏ ra thô lỗ.

Vì vậy, làm thế nào bạn sẽ nói "vui lòng gửi các bản vá thay vì yêu cầu các tính năng" một cách thân thiện?

Cập nhật: Cảm ơn tất cả các đề xuất! Tôi thấy hầu hết trong số họ yêu cầu giải thích khá dài. Nhưng vì tôi muốn tránh (a) giải thích điều tương tự mỗi ngày (chỉ mất quá nhiều thời gian) hoặc (b) sử dụng đoạn trích mà tôi dán vào email (nó thực sự nhanh chóng giả tạo), tôi tự hỏi: bất cứ ai đã viết điều này trong một tài liệu mà tôi có thể liên kết đến?

(Tất cả những thứ cụ thể theo dự án như cách viết bài kiểm tra, biên dịch mã và gửi bản vá vẫn cần phải được ghi lại, nhưng tôi nghĩ những vấn đề kỹ thuật đó nên được đưa vào CONTRIBUTING.txt.)


10
Rất quan trọng, nếu bạn không có ý định chấp nhận các bản vá thì đừng yêu cầu! Đó là, nếu bạn nói "Gửi một bản vá" thì bạn phải sẵn sàng chấp nhận một bản vá sạch sẽ, được viết tốt.
edA-qa mort-ora-y

1
@ EDA-qa - không nhất thiết mỗi sạch, cũng như các văn bản vá - nhưng nếu bạn có khả năng phủ quyết các tính năng mới, có lẽ bạn nên có một cách mọi người có thể đề xuất những tính năng để bạn cho một lẽ / có lẽ không trả lời trước khi họ đầu tư rất nhiều thời gian phát triển chúng.
Steve314

@Steve, tôi không có nghĩa là các bản vá không được yêu cầu , đó là một câu chuyện khác nhau. Ý tôi là cụ thể như trong câu hỏi, nếu bạn bảo ai đó gửi bản vá.
edA-qa mort-ora-y

Nó chỉ kiêu ngạo và thô lỗ khi bạn thực sự có nghĩa là "điều đó có thể hoặc không phải là một ý tưởng tốt, biến đi". Nếu bạn thành thật mà nói rằng đó là một ý tưởng tồi, hãy nói như vậy. Nếu bạn muốn nói rằng đó là một ý tưởng thực sự tốt mà bạn không có thời gian để thực hiện, hãy nói như vậy. Và chỉ ra rằng bạn sẽ sẵn sàng chấp nhận một bản vá thực hiện tính năng đó. (Theo cách đó, có thể ai đó thực sự sẽ gửi một bản vá.) Vấn đề chỉ bằng cách nói "gửi một bản vá" là điều đó mơ hồ và bác bỏ.
David Schwartz

Câu trả lời:


8

Bạn không.

Cho đến nay tôi đã trải nghiệm điều đó, những người đóng góp ứng cử viên là những người thích mày mò và sẽ không gửi yêu cầu tính năng bằng cách chỉ yêu cầu nó. Họ thường sẽ yêu cầu nó với một số mức độ tham gia:

  • Sẽ không ngọt ngào nếu [...]? Có thể làm A, B và C. (Đó là mồi cho: Tôi không có thời gian nhưng đây là một ý tưởng cụ thể trong trường hợp bạn làm.)
  • Đây là một bản vá để làm / đây là một bản sửa lỗi cho [...].
  • Tôi đang nghĩ đến việc viết một bản vá để làm [...] và có thể sử dụng phản hồi / có ai muốn giúp đỡ không.
  • Vân vân.

Các lập trình viên gửi yêu cầu tính năng hoàn toàn thường làm như vậy vì một lý do. Một số trong số chúng bao gồm (và tôi biết thực tế là hai điều cuối cùng xảy ra trong WordPress chẳng hạn):

  • Họ cổ sâu trong các dự án nguồn mở khác, tức là không có thời gian.
  • Họ là những người tự do và có ý định giữ mọi thứ theo cách đó.
  • Nó vượt quá trình độ kỹ năng của họ / được viết bằng ngôn ngữ mà họ không biết gì.
  • Họ sử dụng phần mềm do thiếu một lựa chọn tốt hơn và không muốn phải đối phó với một đống mã batsh * t ^ \ b.
  • Họ không còn có thể bị làm phiền bởi vì các bản vá trước đó của họ đã bị bỏ qua / từ chối, tức là nghĩ rằng họ sẽ lãng phí thời gian của họ.

Thông thường hơn, các yêu cầu tính năng sẽ đến từ người dùng cuối, những người không thể đóng góp bản vá ngay cả khi họ muốn. Đặc biệt là khi nộp bên ngoài hệ thống bán vé.


Tôi nghĩ ưu tiên quan trọng nhất của bạn là không nên từ bỏ những người đóng góp tiềm năng / hiện có, thay vào đó là cố gắng tích cực tuyển dụng những người mới. Nó cực kỳ quan trọng, và tôi nói điều này từ kinh nghiệm. Tôi có một cách kỳ lạ là chọn một cơ sở mã mới, bao gồm việc đọc mã một cách khó hiểu để hiểu được mức độ của nó, nhảy vào hệ thống bán vé và sửa các lỗi dễ nhìn để tìm hiểu sâu về nội bộ (và nộp đơn những cái mới khi tôi kiểm tra). Trong những năm qua, tôi đã làm ngập một vài dự án với hàng tá vé và bản vá. Nhiều lần những vé này sẽ nhận được rất ít hoặc không có sự chú ý kịp thời (thậm chí không phải là một xác nhận, ví dụ như giữ nó!) - bao gồm cả khi chúng đi kèm với các bước chẩn đoán được ghi lại và các bài kiểm tra đơn vị được đính kèm.


1
Tôi không thể đồng ý nhiều hơn. Dường như có một tình cảm chung giữa các dự án F / OSS rằng bất kỳ ai gửi yêu cầu tính năng đều lười biếng và có thể gửi một bản vá / sửa đổi cài đặt của riêng họ nếu họ thực sự muốn tính năng đó. Điều này cực kỳ gây khó chịu cho những ai chỉ đơn giản là không biết cách lập trình hoặc không có thời gian vì họ tham gia vào các dự án khác. Đó không phải là từ "gửi một bản vá" đó là thô lỗ, nhưng giả định rằng người dùng không có gì khác trên đĩa của họ.
Shauna

9

Nói tóm lại, bạn giải thích rằng bạn không có thời gian không giới hạn để thực hiện công việc của họ miễn phí. (Bạn có thể bỏ qua bit 'miễn phí') và họ có thể đóng góp bất cứ lúc nào họ thích, đó không phải là "dự án" của bạn, dự án của mọi người.

vì vậy bạn nói "Chúng tôi thực sự xin lỗi, đó là một ý tưởng tuyệt vời nhưng chúng tôi quá bận rộn với tất cả các công việc khác đang diễn ra, chúng tôi sẽ thêm nó vào danh sách, nhưng nếu bạn thực sự muốn đưa nó vào, và bạn muốn giúp chúng tôi bằng cách đóng góp cho dự án thì thật tuyệt vời. Chúng tôi có một số tài liệu để giúp mọi người thay đổi dự án, họ sẽ ở đây, vì vậy nếu bạn có kỹ năng và thời gian và muốn giúp chúng tôi, sau đó xin vui lòng gửi cho chúng tôi bản vá với các thay đổi của bạn. Chúng tôi có thể phải thực hiện một số sửa đổi khi chúng tôi nhận được để phù hợp với tiêu chuẩn của dự án, nhưng bạn sẽ thực hiện cho chúng tôi rất ưu ái bằng cách ít nhất là cho chúng tôi hỗ trợ cho công việc này và chúng tôi sẽ yêu bạn vì đã giúp chúng tôi ".

Tất nhiên, một khi bạn bắt đầu yêu cầu các bản vá, bạn không bao giờ có thể để chúng nằm trên hệ thống vé của bạn quá lâu, nếu bạn nhận được nhiều, bạn sẽ tích hợp chúng nhiều hơn là làm công việc bạn từng làm. Bạn có thể không thích điều đó, nhưng nó cần thiết nếu bạn muốn các bản vá tiếp tục đến.


Tôi thích điều này. Có lẽ đây thực sự là một cái gì đó tốt nhất được đưa vào tài liệu để bạn không sao chép và dán nó mỗi khi bạn cần giải thích điều này. Và sau đó bạn chỉ cần nói "Bạn có muốn đóng góp một bản vá không? Http: //.../#contribution"
Jo Liss

@JoLiss: Bạn đã chỉ trích câu trả lời của tôi vì nghe có vẻ không hợp lý; Làm thế nào để bạn tìm ra rằng sao chép và dán một siêu liên kết đến Câu hỏi thường gặp là tốt hơn? Nếu bạn sẽ sử dụng phản hồi đóng hộp, thì hãy sử dụng phản hồi thể hiện sự đồng cảm hoặc âm thanh chuyên nghiệp (hoặc cả hai). Ý tưởng cho một phím tắt là không; trong thực tế, đó chính xác là loại thô lỗ mà câu hỏi ban đầu đã phàn nàn.
Aaronaught

Hừ, thú vị. Tôi đã không nhận ra rằng mọi người nhất thiết sẽ thấy nó thô lỗ nếu bạn đăng một liên kết. Mặt khác, tôi thấy rằng các phản ứng đóng hộp được đưa ra là rất không khách quan. Vì vậy, có lẽ tốt nhất là chỉ nên gõ những loại giải thích này khi chúng xuất hiện.
Jo Liss

6

Giữ lịch sự, và giải thích tình hình rõ ràng. Điều gì về một cái gì đó như:

Cảm ơn phản hôi của bạn. Chúng tôi thấy tính năng của bạn rất thú vị, nhưng mặc dù đã nỗ lực triển khai hầu hết các tính năng được yêu cầu trong sản phẩm của mình, chúng tôi không có đủ thời gian để thực hiện tất cả. Nếu bạn là nhà phát triển, bạn có thể tham gia với chúng tôi bằng cách đóng góp cho dự án, vì đó là nguồn mở.

Hãy xem, bạn không thể chỉ nói "Tại sao bạn làm phiền tôi với các yêu cầu của bạn? Tôi không ở đây để làm việc miễn phí cho bạn; nếu bạn muốn tính năng này, hãy tự mình thực hiện". Người có thể không phải là nhà phát triển, có thể không biết ngôn ngữ được sử dụng để phát triển sản phẩm, v.v.

Vì vậy, thay vì thô lỗ, bạn có thể đề nghị tham gia dự án và cũng giải thích lý do tại sao bạn không thể tự thực hiện tính năng này.


Một cách khác để không thô lỗ là không phải nói bất cứ điều gì. Nếu bạn có một trang web nơi người dùng ứng dụng của bạn có thể đề xuất các tính năng mới và báo cáo lỗi, bạn có thể muốn sắp xếp các mục theo mức độ ưu tiên của họ: ví dụ: nếu một tính năng được yêu cầu bởi 10 000 người dùng và một yêu cầu khác chỉ có 10 , có những cơ hội mà cái đầu tiên sẽ được thực hiện trước.

Trên trang web như vậy, bạn luôn có thể đưa ra đề xuất "tự thực hiện" cho các tính năng mà sau vài ngày hoặc vài tuần, bạn vẫn chưa nhận được đủ số lượt ủng hộ từ những người dùng khác.


5

Cảm ơn vì yêu cầu của bạn. Chúng tôi đã thêm nó vào dự án tồn đọng của chúng tôi và sẽ sớm xem xét nó.

Xin lưu ý rằng do khối lượng yêu cầu, chúng tôi không thể đảm bảo rằng mọi yêu cầu sẽ được thực hiện. Chúng tôi dựa vào các tình nguyện viên, vì vậy nếu bạn là một nhà phát triển, vui lòng xem xét quyên góp một số thời gian của bạn và gửi một bản vá . Nếu không, xin vui lòng biết rằng tất cả chúng ta đang làm việc chăm chỉ để vượt qua tồn đọng và sẽ nhận được yêu cầu của bạn càng sớm càng tốt.

Thực sự, điều đó có khó không?


+1 xuất sắc; Đẹp, đáp ứng chuyên nghiệp. @Jo Liss: hãy nhớ rằng hầu hết mọi người chỉ đơn giản muốn sử dụng phần mềm, chứ không phải cống hiến cuộc đời của họ cho nó.
Steven A. Lowe

Tôi thích bản chất của nó, nhưng cá nhân tôi nghĩ rằng giai điệu là một chút quá cá nhân. Bạn thường không phải là một công ty làm dịch vụ khách hàng, bạn chỉ là một nhà phát triển nói chuyện với một người ngang hàng. Ngay cả những người ở độ tuổi 37 cũng tránh loại ngôn ngữ này .
Jo Liss

@JoLiss Bạn đang làm dịch vụ khách hàng, cho dù bạn có muốn tin hay không. Và bạn đã không nói bất cứ điều gì về "đồng nghiệp". Có thể người bạn đang nói chuyện là một nhà phát triển, nhưng trừ khi bạn biết rằng thực tế, tôi không nghĩ đó là một giả định thích hợp để thực hiện (trừ khi bạn làm việc trên các công cụ dành cho nhà phát triển, nhưng bạn không chỉ định trong câu hỏi) Cuối cùng, những kẻ ở 37 tín hiệu nói về những gì cấu thành nhảm nhí là ... mỉa mai, để nói rằng ít nhất.
Aaronaught

Hừm. Tôi không chắc chắn tôi muốn tạo ấn tượng rằng tôi đang làm dịch vụ khách hàng ... Quan điểm của bạn rằng người dùng không nhất thiết phải là đồng nghiệp được thực hiện tốt. Re 37signals, đây là một bài đăng trên blog khác nói về giai điệu - Tôi nghĩ rằng vấn đề không phải là quá nhiều mà bạn không nên nhảm nhí, nhưng bạn không nên rời khỏi như một công ty vô danh. Theo quan điểm của tôi đây là một chiến lược tốt và nó thậm chí còn đúng hơn đối với các dự án nguồn mở.
Jo Liss

2
@JoLiss: Nếu bạn muốn trở thành nhiều cá nhân hơn thế này, tuyệt vời, tất cả sức mạnh để ya - đây, với tôi, là tối thiểu tiêu chuẩn bạn sẽ có cuộc họp về lịch sự. Đừng chỉ nói "gửi một bản vá" - giải thích rằng bạn bận rộn, không lười biếng hoặc không quan tâm; thừa nhận rằng họ thực sự có thể không thể gửi một bản vá, và ngay cả khi họ có, họ vẫn sẽ giúp bạn bằng cách bắt buộc.
Aaronaught

4

Chà, thay vì chỉ nói "gửi một bản vá", bạn nên giải thích thêm một chút.

  • Hãy nói rõ rằng bạn không có thời gian cho nó ngay bây giờ hoặc trong tương lai gần, vì vậy nếu những người khác muốn nó sớm được thực hiện, không có cách nào khác ngoài việc cung cấp một bản vá.
  • Dành thời gian để đánh giá tính năng. Nếu bạn chân thành thích nó, sẽ không có hại khi nói điều đó. Khuyến khích mọi người. Hoặc nếu bạn nghĩ rằng tính năng này thực sự xấu, thì hãy dành thời gian để giải thích điều đó.
  • Cung cấp một số trợ giúp bắt đầu. Không ai biết cơ sở mã như bạn làm. Bạn không có thời gian để làm điều đó, nhưng bạn có thể biết chính xác cách bạn làm nó và nơi bạn bắt đầu. Trong vòng 5-10 phút, bạn có thể chia sẻ kiến ​​thức mà người khác sẽ cần hàng giờ để tìm ra. Ngoài ra điều này giúp bức tranh lớn của bạn chiếm ưu thế. Thay vì có các tính năng của người ngoài hành tinh bắt đầu cho dự án của bạn, bạn có thể hướng dẫn những người đóng góp để tích hợp tốt.

Tôi đồng ý với điều này, nhưng tôi sẽ nói thêm rằng bạn cần những hướng dẫn rất rõ ràng về những gì bạn mong đợi từ một bản vá. (ví dụ, tuân thủ các tiêu chuẩn mã, đơn vị được thử nghiệm, được ghi lại). Điều này rất quan trọng, vì rất có khả năng bạn sẽ là người phải hỗ trợ tính năng này - những người gửi bản vá rất hiếm khi ở lại để sửa lỗi của họ hoặc cung cấp hỗ trợ cho những người dùng khác trong thư viện của bạn.
Mark Heath

3

Đây là những gì tôi thường nói ...

"Đó là một gợi ý thú vị và sẽ rất tuyệt nếu FooBarLib có thể làm điều đó. Thật không may, FooBarLib chỉ là một dự án thời gian rảnh rỗi đối với tôi nên không chắc là tôi sẽ làm tròn điều đó trong tương lai gần. Tôi hoan nghênh đệ trình lên FooBarLib, vì vậy nếu bạn có thể tự thực hiện việc này, thì hãy gửi bản vá (trước tiên hãy đảm bảo bạn đọc "cách đóng góp cho FooBarLib" của chúng tôi). "


2

Ngoài những cách hay để nói "Gửi bản vá", cũng cung cấp tài liệu hướng tới nhà phát triển để những người khác tại sao thực sự muốn tính năng có thể tăng tốc độ dễ dàng cho dự án của bạn. Nhiều dự án không thân thiện với nhà phát triển và yêu cầu tối thiểu hàng ngày để đọc hàng ngàn dòng mã và hàng tấn trường hợp thử nghiệm nhỏ chọc vào các phần khác nhau của hệ thống để có được quyền.

Nếu bạn cung cấp trợ giúp cho các nhà phát triển có thể, họ sẽ sẵn sàng cung cấp trợ giúp. Điều này có nghĩa là tài liệu mã tốt, các trang wiki tốt giải thích dòng chảy (hoặc sơ đồ UML / bảng trắng tốt) và một cách dễ dàng để có được các bản vá được chấp nhận.


-2

Tôi thực sự thích cách github khuyến khích người khác thực hiện dự án. Nhiều phiên bản của cùng một dự án có thể tồn tại dưới các tài khoản người dùng khác nhau. Nếu bạn không thích hướng tôi đang thực hiện dự án hơn xin vui lòng rẽ nhánh. Bạn có thể dễ dàng gửi yêu cầu kéo nhưng không bị kẹt chờ tôi chấp nhận.

Vì vậy, câu trả lời của tôi là thường xuyên, chỉ cần ngã ba nó.

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.