Làm thế nào để tiến hành khi một lỗi trong các thư viện nguồn mở bị nghi ngờ?


8

Chúng tôi đang sử dụng một số thư viện nguồn mở trong các dự án của chúng tôi. Đôi khi có một số vấn đề được tìm thấy trong một số trong số chúng (rất có thể là lỗi thư viện, nhưng nó cũng có thể là việc sử dụng sai từ phía chúng tôi, đặc biệt là khi đôi khi tài liệu không hoàn thành chính xác 100%). Vì các thư viện thường khá phức tạp, việc gỡ lỗi chúng để xác định nguồn gốc của vấn đề đôi khi khá khó khăn. Bạn có thể giúp tôi tóm tắt những lựa chọn khác đang có và làm thế nào để tiến hành chính xác với chúng?

Gần đây tôi đã gặp một số vấn đề lạ khi sử dụng TCMalloc (bộ cấp phát bộ nhớ có thể mở rộng của Google) trên Windows, vì vậy tôi rất hoan nghênh các câu trả lời sẽ áp dụng cho thư viện cụ thể này, nhưng câu trả lời chung chung cũng tốt.

1) Yêu cầu người bảo trì / chủ dự án hỗ trợ. Điều này có thể giải quyết như thế nào?

2) Thuê một ai đó để xác định và khắc phục vấn đề. làm như thế nào? Làm thế nào tôi có thể tìm thấy một người có đủ chuyên môn trong một số thư viện cụ thể?

... còn lựa chọn nào khác không?


1
Tôi rất muốn giới thiệu tùy chọn (1), tất cả các trang web dự án nguồn mở đều có chỗ để gửi lỗi hoặc cố gắng liên hệ với các nhà phát triển thông qua danh sách gửi thư của họ. Bạn sẽ có thể nhận được câu trả lời sớm hơn nếu xem xét dự án vẫn còn sống.

1
@NinjaCoder: sử dụng một dự án đã chết với tài liệu kém có thể là một quyết định tồi, hoạt động trong dự án nên được xem xét khi bầu chọn nó.
Matthieu M.

@Matthieu - Tôi hoàn toàn đồng ý với bạn.

Hỏi dự án, không phải người cụ thể về dự án. IE, bình luận diễn đàn hoặc tương đương. Bạn không thực sự cần phải lo lắng về việc gỡ lỗi mã (trừ khi bạn muốn phát triển), bạn chỉ cần cung cấp một phương tiện cho các nhà phát triển để tạo lại các lỗi. Nhà phát triển nhận được cập nhật email thường xuyên có chứa bài đăng từ các trang dev. Làm tốt công việc định hình vấn đề và các nhà phát triển sẽ tìm thấy bạn. Ngoài ra, đừng mong đợi một sửa chữa ngay lập tức vì rất có thể nó sẽ được bao gồm trong phiên bản tiếp theo.
Evan Plaice

Câu trả lời:


15

Tôi thường thử các cách sau, theo thứ tự:

1) Kiểm tra danh sách gửi thư hoặc diễn đàn để xem lỗi của tôi là mới, nó đã có trên trình theo dõi hay đã được sửa trong phiên bản mới hơn / SVN / bất cứ điều gì

2) Nếu lỗi không được biết, hãy hỏi về nó trong danh sách gửi thư. Đây là khi bạn được thông báo đó là một tính năng, không phải là lỗi và / hoặc RTFM;)

3) Nếu lỗi thực sự là một lỗi và nó là một lỗi mới, bạn có thể đợi cho đến khi ai đó sửa nó (bạn có thể giúp đỡ bằng cách cung cấp thêm thông tin, kiểm tra hoặc gỡ lỗi) hoặc tự sửa lỗi và gửi một bản vá

Nếu bạn cần sửa lỗi khẩn cấp, cách tốt nhất của bạn là thực hiện các bước 2 và 3 cùng nhau (báo cáo lỗi và đề xuất một bản vá). Nếu không, lỗi của bạn có thể hoặc không thể được sửa chữa kịp thời, tùy thuộc vào việc người khác có thấy nó đáng để sửa hay không. Tôi đoán bạn có thể "mua chuộc" các nhà phát triển hoặc các thành viên khác trong cộng đồng để khắc phục lỗi của bạn, mặc dù tôi chưa bao giờ thử cái đó.


+1 để kiểm tra danh sách gửi thư. Tôi quên đề cập đến.
Matt Ellen

Ngoài ra, trong bước # 2, một trường hợp thử nghiệm ngắn có thể thực sự có ích. (Cách tiếp cận này áp dụng như nhau cho các thư viện / thành phần không mở / ...: bạn càng dễ dàng nhìn thấy lỗi, càng dễ sửa.)
Richard

@Matt: Cảm ơn. Để công bằng, không phải mọi dự án đều có một danh sách gửi thư hoạt động hoặc diễn đàn đằng sau nó. May mắn thay, các dự án tôi đã hack nhiều nhất (không quá nhiều) là SDL và Ogre, những cộng đồng rất tích cực.
ggambett

5
Bạn đã quên ... Nếu bạn muốn người khác nhìn vào lỗi, hãy trình bày các điều kiện cần thiết để tái tạo chính xác lỗi. Người dùng bấm chuông và nói 'mã của bạn đã bị hỏng' sẽ bị bỏ qua trong khi đó, người dùng có trách nhiệm cung cấp hồ sơ tốt về lỗi đã kích hoạt thường sẽ nhận được trợ giúp nhanh nhất (miễn là có người bảo trì tích cực). Sửa lỗi ảnh hưởng trực tiếp đến người dùng thường sẽ là ưu tiên hàng đầu. Chỉ cần, đừng giảm giá rằng thời gian của các nhà phát triển là có giá trị (và họ có thể đã được sử dụng với sự phát triển của chính họ trong dự án).
Evan Plaice

5

Điều tuyệt vời về OSS là bạn có mã nguồn!

Vì vậy, bạn có thể tự khắc phục hoặc thuê ai đó thực hiện.

Điều quan trọng là trả lại cho cộng đồng và kiểm tra sửa chữa của bạn!


4

Cách hợp lý nhất mà tôi đã tìm thấy, khi bạn gặp vấn đề với thư viện và bạn không có kỹ năng tự tìm ra vấn đề, là liên hệ với những người bảo trì. Họ biết mã và sẽ rất biết ơn khi tìm hiểu về các lỗi, nếu đó là gì, hoặc sẽ chỉ cho bạn hướng sử dụng thư viện một cách chính xác.

Ví dụ: tôi gặp sự cố không thể giải quyết khi phát triển trang web sử dụng Web SVG . Tôi không có bất kỳ kỹ năng viết kịch bản hành động nào, vì vậy tôi đã bắt đầu một chủ đề hỏi về vấn đề này và tôi được yêu cầu ghi lại một lỗi với một trường hợp thử nghiệm tối thiểu, vì vậy tôi đã làm. Hóa ra vấn đề là ở trình duyệt, vì vậy tôi phải tăng gấp đôi mã của mình.

Nếu bạn đủ thông minh để tự sửa nó, đừng quên trả lại những gì bạn đã học.


2

Nếu bạn có một ý tưởng tốt về cách tái tạo lỗi, thì viết một bài kiểm tra đơn vị phơi bày lỗi sẽ là điểm khởi đầu tốt. (Thông thường, các dự án nguồn mở đã có các bộ thử nghiệm lớn).

Kiểm tra đơn vị thất bại là một cách tốt để truyền đạt "lỗi" đến người bảo trì dự án. Nếu đó không phải là một lỗi mà chỉ đơn giản là bạn đang sử dụng nó không chính xác, thì người bảo trì sẽ chỉ ra rằng đây là do thiết kế, và thường là với lý do tại sao.


1
Thật không may là repro duy nhất cho đến nay tôi yêu cầu vài GB dữ liệu, ứng dụng của chúng tôi và vài giờ để chạy. Tôi sẽ cố gắng giảm điều này bằng cách nào đó như bước đầu tiên của tôi, vì tôi hiểu rằng repro sẽ rất quan trọng đối với cả người bảo trì hoặc bất kỳ ai bên ngoài có thể đang xem xét vấn đề.
Suma

1

Viết một trường hợp kiểm tra sạch, sau đó gửi nó vào danh sách gửi thư.

IME thường xuyên hơn không bạn tìm thấy một lỗi trong mã của riêng bạn trong khi viết trường hợp thử nghiệm.


1

Chỉ vì nó chưa được đề cập, hãy đọc " Cách đặt câu hỏi theo cách thông minh ". Nó có rất nhiều lời khuyên vô giá về cách tiếp cận đặt câu hỏi và yêu cầu trợ giúp từ một cộng đồng phát triển. Rất nhiều trong số đó tập trung vào: hiểu cách cộng đồng làm việc và đảm bảo bạn chơi đúng luật. Nếu bạn tôn trọng, hãy hỏi một câu hỏi thông minh bằng cách cung cấp tất cả các chi tiết cần thiết (và công thức tái tạo nếu đó là một lỗi có thể xảy ra), bạn có thể sẽ nhận được phản hồi hợp lý.

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.