Làm thế nào để các dự án nguồn mở có thể thành công mà không cần tài liệu về thiết kế hoặc kiến ​​trúc của chúng?


11

Tôi muốn cải thiện kỹ năng lập trình của mình bằng cách nghiên cứu các dự án nguồn mở nổi tiếng, nhưng tôi thấy rất dễ bị lạc khi chỉ cần nhảy vào mã nguồn của họ.

Vì vậy, tôi quyết định đọc tài liệu của họ về thiết kế hoặc kiến ​​trúc của họ (như sơ đồ UML) để có ý tưởng chung về tổ chức mã của họ trước tiên. Tuy nhiên, thật ngạc nhiên, tôi không thể tìm thấy bất kỳ tài liệu kiến ​​trúc nào cho các dự án nguồn mở lớn như Hibernate, Spring, ASP.NET MVC, Rails, v.v.

Vì vậy, tôi đã bắt đầu tự hỏi: Làm thế nào một dự án nguồn mở có thể thành công nếu các nhà phát triển mới không có tài liệu kiến ​​trúc / thiết kế để đọc hoặc nếu người quản lý dự án chỉ mở mã nguồn nhưng đóng tài liệu của nó?


3
"phần lớn"? Bạn có thể sao lưu này với số liệu thống kê cụ thể? Bạn đã đọc bao nhiêu Có bao nhiêu cái Có bao nhiêu thiếu tài liệu phù hợp? Nếu bạn không có số, vui lòng xóa các từ như "nhất" và thay thế chúng bằng các sự kiện thực tế dựa trên những gì bạn thực sự tìm thấy. Ngoài ra, vui lòng viết hoa chữ "I" khi đề cập đến chính bạn.
S.Lott

@ S.Lott Xin lỗi vì sự "chủ quan" chủ quan. Tôi là một người mới trong ngành công nghiệp phần mềm. Tôi cố gắng tìm kiếm các tài liệu mà tôi đã nghe nói trong thời gian học đại học (như Sơ đồ UML, Biểu đồ dòng chảy, Tài liệu thiết kế ngắn gọn, Tài liệu thiết kế bị phát hiện, v.v.) cho các dự án được đề cập cả ở trang web dự án hoặc kho lưu trữ mã của họ nhưng không gặp may, chỉ để tìm một số tài liệu hướng dẫn sử dụng. Bạn có thể vui lòng dạy tôi một số cách phổ biến để tìm kiếm tài liệu gốc / kiến ​​trúc của họ không?
TomCaps

1
Vui lòng xóa "Nhiều". Điều đó không chính xác như hầu hết. vui lòng cập nhật câu hỏi để liệt kê cụ thể các dự án nguồn mở cụ thể thiếu tài liệu cụ thể mà bạn muốn xem. Hãy chính xác và cụ thể. Xin đừng chủ quan và mơ hồ.
S.Lott

Tôi nghi ngờ rằng lý do ASP.NET MVC không bao gồm các sơ đồ UML là vì Visual Studio có thể tạo chúng từ mã nguồn.
dùng16764

5
Bạn đang hoạt động theo giả định sai lầm rằng "enterprisy" là một điều tốt. Những gì bạn học được ở trường đại học về thiết kế là tất cả những lời nói dối: UML hoàn toàn không có giá trị. Khi tạo một dự án, tất cả những gì bạn cần là một ý tưởng chung về những gì nó nên làm và sẵn sàng vứt bỏ nó nếu bạn làm sai lần đầu tiên. Đối với một dự án hiện có, chỉ cần lướt qua tiêu đề chính thường là đủ để có được một ý tưởng tốt về bố cục dự án.
o11c

Câu trả lời:


10

tại sao một dự án nguồn mở có thể trở nên thành công nếu nhà phát triển new comer không có tài liệu kiến ​​trúc / thiết kế để đọc?

Giả định luôn luôn được đưa ra rằng bạn biết những gì bạn đang làm và có một sự hiểu biết khá mật thiết về những gì bạn sẽ (và mong đợi) sẽ thấy.

Ví dụ, nếu bạn nhìn vào mã PHP của khung công tác Symfony, bạn sẽ biết về việc tiêm phụ thuộc, các sự kiện, mô hình / khung nhìn / mẫu điều khiển, v.v.

Tương tự như vậy, nếu bạn đi sâu vào mã C của hạt nhân linux, giả định là bạn sẽ thực sự có năng lực về mô đun, tín hiệu, quy trình, luồng và những gì không. Bạn cũng sẽ có sở trường là ăn thập lục phân cả ngày và đào qua các bãi rác lõi bằng một cái xẻng khổng lồ.

Các nhà bảo trì sẽ không gặp phải rắc rối khi làm tài liệu kiến ​​trúc bởi vì đó thực sự là công cụ. Thỉnh thoảng, bạn sẽ tìm thấy một phác thảo về những gì nằm ở đâu trong cây nguồn. Thông thường hơn, cách tổ chức cây nguồn làm cho mọi thứ tự giải thích.

Nói tóm lại, nếu bạn thiếu bất kỳ kỹ năng nào mà các nhà bảo trì sẽ mong đợi bạn biết vào thời điểm bạn xem mã của họ, có lẽ bạn đang đào sâu vào những thứ vượt quá mức lương của bạn. Làm quen với các khái niệm trước tiên - Mô hình MVC là gì? Tiêm phụ thuộc là gì? V.v ... Sau đó lặn xuống.


1
Mặc dù nếu bạn nhìn vào danh sách gửi thư, hạt nhân Linux sẽ thảo luận rộng rãi về kiến ​​trúc bất cứ khi nào ai đó gặp vấn đề hoặc muốn thay đổi điều gì đó. Cũng có khá nhiều tài liệu viết về nó - mặc dù không có trong cây nguồn kernel.
edA-qa mort-ora-y

17

Hầu hết các dự án nguồn mở thành công đều trở nên thành công bởi vì trước hết, chương trình này rất ấn tượng hoặc đã làm một điều gì đó mà không chương trình nào có thể làm vào thời điểm đó. Điều đó không nhất thiết có nghĩa là nguồn được ghi chép tốt, vì các lập trình viên bắt đầu dự án bắt đầu biết mã đủ rõ để không cần nó. Đó là một thực tế đáng tiếc rằng các dự án nguồn mở không cần phải được ghi chép đầy đủ. Nó phải là một chương trình tốt hoặc là một chương trình tầm thường nhưng được ghi chép đầy đủ để các lập trình viên thể hiện sự quan tâm đến nó.


Trong công ty của tôi, đây là một quy trình yêu cầu mà các nhà phát triển phải cung cấp Tài liệu thiết kế chi tiết trước khi được phê duyệt viết bất kỳ mã nào trên một dự án. Là thủ tục này bất thường cho dự án nguồn mở?
TomCaps

5
@TomCaps Tôi nghĩ lý do lớn nhất mà rất ít dự án FOSS có tài liệu mở rộng khá đơn giản: nếu bạn viết một chương trình nhỏ để giải quyết nhu cầu mà bạn có, thì có khả năng là do nhà phát triển của bạn mà bạn cũng không cần tài liệu, bạn sẽ muốn dành thời gian của bạn để cải thiện chương trình thay vì viết tài liệu không được đảm bảo thậm chí hữu ích cho bất kỳ ai (nếu dự án không bao giờ được sử dụng bởi bất kỳ ai trừ nhà phát triển?). Đó không phải là cách thực hành tốt nhất, nhưng nhiều dự án FOSS không có thời gian dành cho nhà phát triển.
Jeff Welling

5
@TomCaps: Quy trình này không bình thường đối với hầu hết các công ty mà tôi biết ...
Treb

1
Hầu hết các dự án nguồn mở không phải là các công ty. Bạn đang nghĩ điều gì xảy ra khi có một dự án tôi đang được trả tiền để xây dựng, với thời hạn và ngân sách. Nếu bạn có một nhóm người mã hóa để đáp ứng nhu cầu họ có hoặc để giải trí và không có ngân sách hoặc khách hàng, bạn không có những thứ đó.
Elin

1
@TomCaps - bất cứ ai viết phần mềm Nguồn mở đều có thể làm chính xác những gì họ thích. Một số dự án (ví dụ: gia đình Apache) có các quy tắc và hướng dẫn cho bất kỳ ai cam kết mã và đôi khi điều này bao gồm các tiêu chuẩn nhân đôi, v.v. Ngoài ra tôi sẽ đặt câu hỏi về giá trị của "tài liệu thiết kế chi tiết" vì điều này sẽ luôn khóa bạn vào một thiết kế vật lý (trong kinh nghiệm cá nhân của tôi) thường là tối ưu phụ. Một mô tả chi tiết về "những gì" chương trình được cho là sẽ giúp nhà phát triển tự do tối ưu hóa việc triển khai và áp dụng các chiến lược sáng tạo cho giải pháp.
James Anderson

12

Bởi vì các nhà phát triển nguồn mở thường tài năng và cũng chọn dự án trong lĩnh vực chuyên môn của họ, họ đã có "tài liệu" trong hộp sọ của họ. Với ít sự phóng đại, tài liệu kỹ lưỡng chỉ cần thiết nếu bạn thiếu bất kỳ thứ nào trong số đó: o)

Thành thật mà nói, tôi không thực sự đọc "tài liệu" khi đối mặt với cơ sở mã không xác định. Giới thiệu nhanh, có thể một vài phác thảo khái niệm và đi thẳng vào mã! Thử nghiệm, thử những thay đổi nhỏ. Hoạt động hoàn hảo cho mã được thiết kế tốt. Nếu tôi phải đối mặt với mớ hỗn độn khủng khiếp, thì cách tốt nhất để tìm hiểu chúng là tái cấu trúc từng chút một để cải thiện sự rõ ràng (lý tưởng nhất là với sự trợ giúp của kiểm tra đơn vị).

Lý do bổ sung có thể là rễ thiết kế hữu cơ đơn giản của các dự án này. Kiến trúc sau đó là tầm nhìn phát triển trong tâm trí của các nhà phát triển hơn là thực thể "tài liệu" đã nêu.


8

Lý do các tài liệu như vậy thường không tồn tại khá đơn giản: Lập trình viên thích lập trình, không viết tài liệu. Đặc biệt với các dự án nguồn mở, mà các nhà phát triển thường đóng góp trong thời gian rảnh / rảnh rỗi.

Về cơ bản, viết tài liệu là không vui. Và nếu họ không được trả tiền cho nó, ai muốn dành thời gian rảnh của họ để làm điều gì đó không vui?


Một số dự án nguồn mở lớn (GCC, nhân Linux, Firefox, Qt, ....) có hầu hết (hoặc một phần đáng kể) những người đóng góp của họ trả tiền để làm việc (toàn thời gian hoặc một nửa thời gian) cho dự án. Vì vậy, ngay cả khi được trả tiền cho phần mềm miễn phí, họ cũng không viết nhiều tài liệu
Basile Starynkevitch
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.