“ upstream” คืออะไร?


27

ฉันมักจะได้ยินคนพูดว่า "ผสานต้นน้ำ" และสิ่งที่ดีกว่าเมื่อมันมาถึงการออกแบบซอฟต์แวร์และสิ่งที่คล้ายกัน ฉันรู้สึกว่ามันเกี่ยวกับเคอร์เนล linux หลัก แต่ฉันอาจผิด

และอะไรคือสิ่งที่ตรงกันข้ามกับ "ต้นน้ำ" ถ้ามันไม่ดีที่จะไป "ต้นน้ำ" ทางเลือกคืออะไรและทำไม?

คำตอบ:


33

อัพสตรีมหมายถึงผู้เริ่มต้นของส่วนประกอบที่ถูกกล่าวถึง

เช่นถ้าคุณเขียนไคลเอนต์ฝนตกหนักซึ่งใช้ libtransmission จะพบข้อผิดพลาดในไคลเอนต์ของคุณซึ่งถูกติดตามกลับไปที่ libtransmission ข้อผิดพลาดได้รับการแก้ไขด้วยโปรแกรมแก้ไขซึ่งตอนนี้รวมอยู่ในไคลเอนต์ของคุณ

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

อีกทางเลือกหนึ่งในการผสานต้นน้ำคือการรักษาตัวคุณเอง


ดังนั้นการรวมทุกอย่างที่เกี่ยวกับต้นน้ำเข้ากับความคิดของโอเพ่นซอร์ส One fix สำหรับหลาย ๆ ชิ้นของซอฟต์แวร์?
n0pe

4
การรวมอัปสตรีมเป็นสิ่งที่คุณสามารถทำได้ด้วยซอฟต์แวร์โอเพ่นซอร์สเพราะคุณสามารถเข้าถึงซอร์สและคุณสามารถค้นหาและแก้ไขข้อบกพร่องด้วยตัวเอง ในแหล่งข้อมูลปิดฝ่ายส่วนใหญ่ไม่มีการเข้าถึงดังกล่าว (แม้ว่าในบางสถานการณ์ใบอนุญาตอาจรวมอยู่ด้วย) ดังนั้นพวกเขาจึงถูก จำกัด ให้รายงานข้อผิดพลาดและ / หรือค้นหาวิธีแก้ไขปัญหา Upstream หมายถึงวิธีการหลายชั้นในการพัฒนาซอฟต์แวร์และยังนำไปใช้กับการปรับปรุงไม่เพียง
plco

หากต้องการใช้อีกวิธี: "อัปสตรีม" หมายถึง "คุณได้รับแหล่งที่มาจาก"; นอกโลกโอเพ่นซอร์สไม่มีต้นน้ำเนื่องจากคุณไม่ได้รับซอร์สเลย =)
rakslice

21

ใช้ Ubuntu เป็นตัวอย่าง

อูบุนตูเป็นผู้จัดจำหน่ายซึ่งบรรจุซอฟต์แวร์จำนวนมากเข้าด้วยกันทั้งขนาดเล็กและขนาดใหญ่ มีไดรเวอร์กราฟิก, เซิร์ฟเวอร์ X และ Gnome เป็นต้น Ubuntu เองไม่ได้พัฒนาซอฟต์แวร์เหล่านั้น อูบุนตูนั้นเป็นเพียงแค่“ รวบรวม” ซอฟต์แวร์เข้าด้วยกันตรวจสอบให้แน่ใจว่าส่วนประกอบแต่ละตัวทำงานร่วมกัน ซอฟต์แวร์ทั้งหมดที่ Ubuntu รวบรวมเข้าด้วยกันนั้นเรียกว่าอัปสตรีมจากมุมมองของ Ubuntu

ในกระบวนการรวมซอฟต์แวร์ทั้งหมดเข้าด้วยกันบั๊กอาจปรากฏขึ้น ข้อผิดพลาดอาจเป็นหนึ่งในองค์ประกอบของซอฟต์แวร์ตัวอย่างเช่น gnome หรืออาจเป็นวิธีพิเศษที่อูบุนตูกำลังทำสิ่งต่าง ๆ ท้ายที่สุดแล้วการกระจายเป็นการกระจายเพราะมันทำบางสิ่งด้วยวิธีที่พิเศษมาก

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

หาก Ubuntu ตัดสินใจที่จะไม่ส่ง patch อัปสตรีมนั้นหรือโปรเจ็กต์ upstream ปฏิเสธแพตช์ (แต่ Ubuntu ก็ยังคงเก็บ patch ไว้) แสดงว่า Ubuntu มีโครงการแยกทางเทคนิค

ตรงกันข้ามกับต้นน้ำจะเป็นดาวน์สตรีม Ubuntu เป็นปลายน้ำจาก Gnome ฉันไม่ได้ยิน / อ่านคำที่ใช้บ่อย

ดูบทความเกี่ยวกับต้นน้ำใน Wikipedia

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.