โครงการโอเพ่นซอร์สจะประสบความสำเร็จได้อย่างไรหากไม่มีเอกสารเกี่ยวกับการออกแบบหรือสถาปัตยกรรม


11

ฉันต้องการพัฒนาทักษะการเขียนโปรแกรมของฉันโดยการศึกษาโครงการโอเพ่นซอร์สที่มีชื่อเสียง แต่ฉันคิดว่ามันง่ายที่จะหลงทางโดยเพียงแค่กระโดดลงไปในซอร์สโค้ดของพวกเขา

ดังนั้นฉันจึงตัดสินใจที่จะอ่านเอกสารเกี่ยวกับการออกแบบหรือสถาปัตยกรรมของพวกเขา (เช่นแผนภาพ UML) เพื่อให้ได้แนวคิดทั่วไปเกี่ยวกับการจัดระเบียบโค้ดของพวกเขาก่อน ฉันประหลาดใจ แต่ฉันไม่สามารถหาเอกสารทางสถาปัตยกรรมสำหรับโครงการโอเพ่นซอร์สขนาดใหญ่เช่น Hibernate, Spring, ASP.NET MVC, Rails และอื่น ๆ

ดังนั้นฉันจึงเริ่มสงสัยว่า: โครงการโอเพ่นซอร์สจะประสบความสำเร็จได้อย่างไรหากนักพัฒนาผู้มาใหม่ไม่มีเอกสารทางสถาปัตยกรรม / การออกแบบที่จะอ่านหรือถ้าผู้จัดการโครงการเพิ่งเปิดซอร์สโค้ด แต่ปิดเอกสาร?


3
"ส่วนใหญ่"? คุณสามารถสำรองข้อมูลนี้ด้วยสถิติที่เป็นรูปธรรมได้หรือไม่? คุณอ่านมากี่ครั้ง มีกี่คน เอกสารที่เหมาะสมมีจำนวนเท่าไร? หากคุณไม่มีตัวเลขโปรดลบคำเช่น "ส่วนใหญ่" และแทนที่ด้วยข้อเท็จจริงที่แท้จริงตามสิ่งที่คุณพบ นอกจากนี้โปรดใช้อักษรตัวใหญ่ "I" เมื่อพูดถึงตัวเอง
S.Lott

@ S.Lott ขออภัยสำหรับอัตนัย "ที่สุด" ฉันเป็นมือใหม่ในอุตสาหกรรมซอฟต์แวร์ ฉันพยายามค้นหาเอกสารที่ฉันเคยได้ยินระหว่างโรงเรียนวิทยาลัย (เช่นแผนภาพ UML แผนภูมิการไหลเอกสารย่อการออกแบบเอกสารการออกแบบ Detaled และอื่น ๆ ) สำหรับโครงการที่กล่าวถึงทั้งที่เว็บไซต์โครงการหรือที่เก็บรหัส แต่ไม่มีโชค เพื่อค้นหาเอกสารคู่มือผู้ใช้บางส่วนเท่านั้น คุณช่วยสอนวิธีการค้นหาเอกสาร desgin / archiecture ให้ฉันได้ไหม
TomCaps

1
โปรดลบ "หลายคน" นั่นเป็นสิ่งที่ไม่ถูกต้องมากที่สุด โปรดอัปเดตคำถามเพื่อระบุรายการโครงการโอเพนซอร์สเฉพาะที่ไม่มีเอกสารเฉพาะที่คุณต้องการดูโดยเฉพาะ โปรดระบุให้ชัดเจนและเจาะจง โปรดอย่าเป็นคนที่มีวิสัยทัศน์และคลุมเครือ
S.Lott

ฉันสงสัยว่าเหตุผล ASP.NET MVC ไม่รวมไดอะแกรม UML นั้นเป็นเพราะ Visual Studio สามารถสร้างได้จากซอร์สโค้ด
user16764

5
คุณทำงานภายใต้สมมติฐานที่ผิด ๆ ว่า "enterprisy" เป็นสิ่งที่ดี สิ่งที่คุณเรียนรู้ในวิทยาลัยเกี่ยวกับการออกแบบล้วนเป็นเรื่องโกหก: UML ไม่มีค่าอย่างแน่นอน เมื่อสร้างโครงการสิ่งที่คุณต้องมีคือความคิดทั่วไปเกี่ยวกับสิ่งที่ควรทำและความตั้งใจที่จะทิ้งมันหากคุณทำผิดครั้งแรก สำหรับโครงการที่มีอยู่เพียงแค่อ่านส่วนหัวหลักก็พอที่จะรับความคิดที่ดีเกี่ยวกับเค้าโครงโครงการ
o11c

คำตอบ:


10

เหตุใดโครงการโอเพนซอร์ซจึงประสบความสำเร็จได้หากผู้พัฒนามือใหม่ไม่มีเอกสารสถาปัตยกรรม / การออกแบบที่จะอ่าน

การสันนิษฐานนั้นทำให้คุณรู้ว่าคุณกำลังทำอะไรอยู่และมีความเข้าใจอย่างใกล้ชิดพอสมควรว่าคุณกำลังทำอะไร (และคาดหวัง) ที่จะเห็น

หากคุณมองเข้าไปในโค้ด PHP ของเฟรมเวิร์ก Symfony คุณคาดว่าจะทราบเกี่ยวกับการฉีดพึ่งพาเหตุการณ์รูปแบบโมเดล / มุมมอง / คอนโทรลเลอร์และอื่น ๆ

ในทำนองเดียวกันหากคุณดำดิ่งลงไปในรหัส C ของเคอร์เนล linux ข้อสันนิษฐานก็คือคุณจะมีความสามารถในการใช้งานได้จริงในแบบแยกส่วนสัญญาณกระบวนการกระบวนการเธรดและสิ่งที่ไม่ คุณคาดว่าจะมีความสามารถพิเศษในการกินเลขฐานสิบหกตลอดทั้งวันและขุดผ่านกองขยะด้วยพลั่วขนาดยักษ์

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

กล่าวโดยย่อหากคุณขาดทักษะใด ๆ ที่ผู้ดูแลคาดว่าคุณจะรู้ตามเวลาที่คุณมองเข้าไปในรหัสของพวกเขาคุณอาจขุดสิ่งที่อยู่เหนือระดับการจ่ายของคุณ ทำความคุ้นเคยกับแนวคิดก่อน - รูปแบบ MVC คืออะไร การฉีดพึ่งพาคืออะไร? เป็นต้นดำน้ำแล้ว


1
แม้ว่าคุณจะดูที่การส่งเมลลินุกซ์เคอร์เนลมีการพูดคุยอย่างกว้างขวางเกี่ยวกับสถาปัตยกรรมเมื่อใดก็ตามที่ใครบางคนมีปัญหาหรือต้องการที่จะเปลี่ยนแปลงบางสิ่งบางอย่าง นอกจากนี้ยังมีเอกสารบางอย่างที่เขียนเกี่ยวกับมัน - แม้ว่าจะไม่ได้อยู่ในต้นไม้ต้นเคอร์เนลเอง
edA-qa mort-ora-y

17

โครงการโอเพ่นซอร์สที่ประสบความสำเร็จส่วนใหญ่นั้นประสบความสำเร็จเพราะสิ่งแรกคือโปรแกรมที่น่าประทับใจหรือทำสิ่งที่โปรแกรมอื่นไม่สามารถทำได้ในเวลานั้น ไม่ได้แปลว่าแหล่งข้อมูลนั้นมีเอกสารครบถ้วนเนื่องจากโปรแกรมเมอร์ที่เริ่มโครงการเพื่อเริ่มรู้โค้ดดีพอที่จะไม่ต้องการ มันเป็นความจริงที่โชคร้ายที่โครงการโอเพนซอร์ซไม่จำเป็นต้องมีเอกสารครบถ้วน มันอาจจะต้องเป็นโปรแกรมที่ดีหรือเป็นโปรแกรมปานกลาง แต่มีเอกสารที่ดีสำหรับโปรแกรมเมอร์ที่จะแสดงความสนใจ


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

5
@ TomCaps ฉันคิดว่าเหตุผลที่ดีที่สุดที่โปรเจ็ค FOSS มีเอกสารจำนวนมากนั้นค่อนข้างง่าย: ถ้าคุณเขียนโปรแกรมเล็กน้อยเพื่อแก้ปัญหาความต้องการที่คุณมีอาจเป็นไปได้ว่าเนื่องจากนักพัฒนาซอฟต์แวร์ที่คุณไม่ต้องการเอกสารด้วย จะต้องการใช้เวลาของคุณในการพัฒนาโปรแกรมมากกว่าการเขียนเอกสารที่ไม่รับประกันว่าจะเป็นประโยชน์กับทุกคน ไม่ใช่วิธีปฏิบัติที่ดีที่สุด แต่โครงการ FOSS จำนวนมากนั้นใช้เวลาไม่นาน
Jeff Welling

5
@TomCaps: ขั้นตอนนี้จะผิดปกติสำหรับ บริษัท ส่วนใหญ่ที่ฉันรู้ ...
Treb

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

1
@TomCaps - ใครก็ตามที่เขียนซอฟต์แวร์ Open Source สามารถทำสิ่งที่พวกเขาต้องการ บางโครงการ (เช่นตระกูล Apache) มีกฎและแนวทางปฏิบัติสำหรับผู้ที่รับรหัสและบางครั้งก็รวมถึงมาตรฐานการทำสำเนา ฯลฯ นอกจากนี้ฉันยังตั้งคำถามถึงคุณค่าของ ประสบการณ์ส่วนตัวของฉัน) มักจะเหมาะสมที่สุด คำอธิบายโดยละเอียดเกี่ยวกับ "สิ่งที่" โปรแกรมควรจะปล่อยให้นักพัฒนาสามารถเพิ่มประสิทธิภาพการใช้งานและใช้กลยุทธ์ความคิดสร้างสรรค์กับการแก้ปัญหา
James Anderson

12

เนื่องจากผู้พัฒนาโอเพ่นซอร์สมักจะมีความสามารถและเลือกโครงการในสาขาความเชี่ยวชาญของพวกเขาพวกเขาจึงมี "เอกสาร" ภายในกะโหลกของพวกเขา ด้วยเอกสารที่ละเอียดเกินจริงเล็กน้อยเป็นสิ่งจำเป็นเฉพาะเมื่อคุณขาดสิ่งเหล่านี้: o)

ตามจริงแล้วฉันไม่ได้อ่าน "เอกสาร" จริงๆเมื่อเผชิญกับ codebase ที่ไม่รู้จัก การแนะนำอย่างรวดเร็วอาจเป็นเพียงภาพร่างเชิงแนวคิดและส่งตรงไปยังโค้ด! ลองทดสอบการเปลี่ยนแปลงเล็กน้อย ทำงานได้อย่างสมบูรณ์แบบสำหรับรหัสที่ออกแบบมาอย่างดี ถ้าฉันต้องเผชิญกับความยุ่งเหยิงที่น่ากลัววิธีที่ดีที่สุดในการเรียนรู้พวกเขาคือการปรับโครงสร้างทีละเล็กทีละน้อยเพื่อปรับปรุงความชัดเจน

เหตุผลเพิ่มเติมอาจเป็นรากการออกแบบอินทรีย์ธรรมดาของโครงการเหล่านี้ สถาปัตยกรรมเป็นวิสัยทัศน์ที่ค่อนข้างพัฒนาในใจของนักพัฒนามากกว่าที่ระบุไว้ในเอนทิตี "เอกสาร"


8

เหตุผลที่เอกสารดังกล่าวมักจะไม่มีอยู่นั้นค่อนข้างง่าย: โปรแกรมเมอร์ชอบเขียนโปรแกรมไม่ใช่เขียนเอกสาร โดยเฉพาะอย่างยิ่งกับโครงการโอเพ่นซอร์สซึ่งนักพัฒนามักจะให้ความช่วยเหลือในช่วงเวลาว่าง / เวลาว่าง

โดยทั่วไปการเขียนเอกสารไม่สนุก และถ้าพวกเขาไม่ได้รับเงินใครอยากจะใช้เวลาว่างทำอะไรที่สนุกดี


โครงการโอเพ่นซอร์สขนาดใหญ่ (GCC, เคอร์เนลลินุกซ์, Firefox, Qt, .... ) มีส่วนใหญ่ (หรือส่วนที่สำคัญ) ของผู้มีส่วนร่วมของพวกเขาจ่ายเงินให้ทำงาน (เต็มเวลาหรือครึ่งเวลา) ในโครงการ ดังนั้นแม้เมื่อชำระเงินสำหรับซอฟต์แวร์ฟรีพวกเขาไม่ได้เขียนเอกสารจำนวนมาก
Basile Starynkevitch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.