เหตุผลที่จะไม่โอเพนซอร์สที่ไม่แสวงหาผลกำไรรหัส? [ปิด]


34

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

ก่อนที่ฉันจะออกไปและเริ่มต้นการเปลี่ยนศาสนาฉันต้องการทราบว่า: มีข้อโต้แย้งที่ดีสำหรับการไม่เปิดเผยรหัสที่ไม่แสวงหาผลกำไรต่อสาธารณะและมีใบอนุญาตที่สอดคล้องกับ OSI หรือไม่

(ฉันรู้ว่ามีคำถามที่คล้ายกันอยู่ สองสามข้อแต่ส่วนใหญ่มุ่งเน้นไปที่สถานการณ์ที่ใช้รหัสเป็นหลักในการทำเงินและฉันไม่สามารถเกี่ยวข้องกับคำตอบได้)

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


+1 ตามที่ฉันพบว่าเป็นคำถามที่น่าสนใจด้วยตัวเอง แต่ฉันสงสัยว่านี่เป็นสถานที่ที่เหมาะสมที่จะถามสิ่งนี้หรือไม่ บางทีคุณอาจได้มุมมองที่แตกต่างจากไซต์ SE อื่น ๆ เช่นไซต์ PM.SE เพียงข้อเสนอแนะ
haylem

@haylem, ฉันไม่เห็น PM.SE, แต่ดูเหมือนว่ามันเป็นเรื่องทางเทคนิคสำหรับการจัดการโครงการใช่ไหม?
naught101

คุณจะดูแลโครงการต่อไปหรือไม่หรือเป็นรหัสสุสาน กล่าวอีกนัยหนึ่งอนาคตของโครงการคืออะไร

@ ThorbjørnRavnAndersen: ใช่ฉันกำลังสมมติว่ามีการบำรุงรักษาการพัฒนาและการใช้งานของรหัส
naught101

คำตอบ:


28

คุณต้องคำนึงถึงว่าการเปิดซอร์สโค้ดของคุณอาจต้องใช้ความพยายามเพิ่มเติม

ตัวอย่างเช่นในรายการบล็อกนี้วิศวกร Sun / Oracle อธิบายถึงความพยายามที่พวกเขาต้องทำเมื่อเปิดแหล่งที่มาของรหัส: Open Source หรือ Dirty Laundry?

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

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

/\*
 \* HACK - insert a time delay here because the stupid Intertrode
 \* Technologies framebuffer driver will hang the system if we
 \* don't. Those guys over there must really be idiots.
 \*/

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

อีกส่วนหนึ่งของกิจกรรม "ขัดถู" คือการลบคำหยาบและคำอื่น ๆ ที่ "ไม่พึงปรารถนา" ...

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


2
สิ่งนี้ใช้กับ บริษัท ขนาดใหญ่ที่มีรหัสฐานอยู่แล้วและน้อยกว่ามากสำหรับรหัสที่เขียนเป็น Open Source ตั้งแต่เริ่มต้น
Konrad Rudolph

1
@ KonradRudolph OP กล่าวถึงฉันต้องทำงานกับ ... รหัสที่ไม่ได้เป็นโอเพ่นซอร์ส (ไม่ว่าจะเป็นกรรมสิทธิ์หรือไม่สาธารณะ)หมายความว่าไม่ได้อยู่ที่นั่นตั้งแต่เริ่มต้น
gnat

สิ่งเดียวกันเกิดขึ้นกับ DOOM 3 หรือไม่? การออกสิทธิบัตรล่าช้า
Delom

11

ความปลอดภัย

ตัวอย่างเช่นสมมติว่าคุณสร้างเว็บเฟรมเวิร์กและคุณเองก็ใช้มัน

ในฐานะโครงการที่ไม่แสวงหาผลกำไรคุณไม่มีเวลาที่จะอุทิศเพื่อตรวจสอบโค้ดทุก ๆ บิตเพื่อหาช่องโหว่จากการโจมตีครั้งเดียวหรืออย่างอื่น:

  • CSRF
  • XSS
  • การฉีด SQL
  • การตรึงเซสชั่น
  • ใช้ห้องสมุดบุคคลที่สามหรือแม้แต่ภาษาของ buggy

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

แน่นอนว่าสิ่งนี้อาจไม่มีผลกับประเภทของซอฟต์แวร์ที่คุณใช้งานอยู่ และความสับสนเช่นเคยเป็นข้อแก้ตัวสำหรับความเกียจคร้านในการรักษาความปลอดภัย

อย่างไรก็ตามเช่นเดียวกับที่ฉันพบในสองสามระดับที่ฉันได้รับในแถบจับเกมธงรู้ว่ารหัสเป็นวิธีที่ง่ายที่สุดในการค้นหาช่องโหว่ (และบางครั้งอาจเป็นวิธีเดียว)


7
การอภิปรายนี้เกิดขึ้นมานานแล้วและความประทับใจของฉันก็คือโอเพ่นซอร์สนั้นดีกว่าสำหรับการรักษาความปลอดภัย แต่ก็ต่อเมื่อโครงการดังกล่าวได้รับความนิยมพอสมควร เป็นเรื่องแปลกที่ไม่มีข้อโต้แย้งใด ๆ ใน 'เน็ต (ที่ฉันสามารถหาได้)
naught101

1
ใช้ร่วมกับความคิดเห็น naught101s ที่เหมาะสมเป็นอย่างยิ่ง ถ้าคนน้อยสนใจแหล่งที่มาของคุณและคุณใช้ในการผลิตมีโอกาสค่อนข้างดีที่คน "ชั่วร้าย" จะตรวจสอบและใช้กับคุณ (ในที่สุด)
schlingel

1
ความปลอดภัยผ่านความสับสน?
Danubian Sailor

3
@lechlukasz คุณอ่านโพสต์ทั้งหมดหรือไม่
Nicole

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

10

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

สิ่งเหล่านั้นอาจมีลิขสิทธิ์และฉันไม่รู้ว่าผู้เขียนต้องการหารหัสของเขาถูก relicensed ภายใต้ใบอนุญาตที่แตกต่างกัน


1
+1 สำหรับลิขสิทธิ์ แค่ต้องการเพิ่มสิทธิบัตรเช่นกัน คุณอาจพบว่าโครงการโอเพนซอร์ซของคุณละเมิดสิทธิบัตรบางส่วนจากสิทธิบัตรซอฟต์แวร์จำนวนหลายพันรายการที่อาศัยอยู่โดย "คณะ" สตรีมมิ่งวิดีโอ ได้สิทธิบัตร โฆษณาแบบจ่ายต่อคลิก? ได้สิทธิบัตร ตัวอย่างบางส่วน อย่างไรก็ตามโอกาสคือ "ทหาร" ไม่สนใจ - เว้นแต่คุณจะเป็นคู่แข่ง
Amadeus Hein

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

1
@ naught101 เห็นด้วย โอเพนซอร์สเท่านั้นที่ทำให้เกิดปัญหา กรรมสิทธิ์ปิดในกรณีนี้เป็นเรื่องของการไม่ถูกจับ;)
Andres F.

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

1
อาจผิดจรรยาบรรณอาจเป็นเหตุผลที่ดีมากที่ไม่ใช่โอเพ่นซอร์สแน่นอน
Pieter B

6

คุณต้องระมัดระวังด้วยวิธีการเลือกใบอนุญาตของคุณเพื่อหลีกเลี่ยงปัญหาหนี้สินที่อาจเกิดขึ้น

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


1
ใช่มันเป็นจุดที่ดีและใบอนุญาต OS ส่วนใหญ่มักจะมีข้อความที่ครอบคลุม ass อยู่ในนั้น ฉันเดาว่าฉันได้รับใบอนุญาตประเภท "ไม่ต้องรับผิดชอบ"
naught101

4

คำเตือน: ฉันไม่ได้เป็นทนายความ

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

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

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

อาจไม่ปรากฏเช่นนั้น แต่องค์กรที่ไม่แสวงหาผลกำไรอาจทำกำไรให้กับผู้ก่อตั้งหรือนักลงทุน ผลประโยชน์ไม่ได้โดยตรง ดังนั้นพวกเขาจึงมีความสนใจอย่างมากใน NFPs ที่แข็งแกร่งและไม่ถูกโจมตีโดยคู่แข่ง (แม้ว่าคุณจะไม่เคยคิดถึง "คู่แข่ง" ในตลาดที่ไม่แสวงหาผลกำไร) และพวกเขาต้องการดูแลพวกเขา IP แม้ว่าจะไม่มีค่าใช้จ่ายที่จะได้ลูกตาฟรีมากขึ้นในการตรวจสอบรหัสของพวกเขาเพื่อค้นหาปัญหาและปรับปรุงให้เร็วขึ้น

โปรดทราบว่ากฎหมายลิขสิทธิ์แตกต่างกันไปในแต่ละประเทศ หลายประเทศในยุโรปพิจารณากฎหมายลิขสิทธิ์ของสหรัฐอเมริกาและระบบสิทธิบัตรของสหรัฐอเมริกาว่าค่อนข้างโง่เง่าดังนั้นจึงมีภูมิหลังทางวัฒนธรรมและน้ำหนักที่ยากต่อการสลัด

ยื่น 2 เซ็นต์ของฉันในเรื่อง

(ฉันเคยทำงานกับมหาวิทยาลัยหลายแห่งและเมื่อเร็ว ๆ นี้ในด้านชีวสารสนเทศและการดูแลสุขภาพ ... มันเป็นคำถามที่เกิดขึ้นซ้ำสำหรับฉันและเพื่อนร่วมงานของฉัน :))


อืม .. ฉันเป็นคนพิจารณารหัสและ IP ด้วยกันในคำถามของฉัน บางทีฉันควรทำให้ชัดเจนขึ้น ฉันคิดว่า ROI และการพิจารณาแบรนด์เป็นแรงจูงใจในการทำกำไร ... (ฉันตระหนักว่า "วิทยาศาสตร์" นั้นค่อนข้างคลุมเครือและวิทยาศาสตร์จำนวนมากมีผลกำไร - สาขาของฉัน (วิทยาศาสตร์ของโลกไม่ใช่แน่นอน)
naught101

ชี้แจงคำถาม ขออภัยในความยุ่งยาก
naught101

ฉันคิดว่าสาขาของคุณทำกำไรได้ มันอาจไม่มีตลาดที่กว้าง แต่ก็ไม่ได้หมายความว่ามันจะไม่ทำกำไร ใน fqct ฉันคิดว่ามันเกี่ยวข้องกับเงินที่ค่อนข้างใหญ่ ทำไมคุณรู้สึกอย่างอื่น?
haylem

ฉันอยู่ในการสร้างแบบจำลองสภาพภูมิอากาศ ไม่มีใครจ่ายเงินสำหรับแบบจำลองสภาพภูมิอากาศ ไม่มีใครจ่ายเงินให้ใช้โมเดลสภาพภูมิอากาศ ไม่มีกำไรที่ต้องทำจากการใช้ซอฟต์แวร์ ผู้คนจะได้รับเงินเพื่อทำงานวิจัยโดยใช้แบบจำลองเหล่านี้ (และมักรวมถึงการเขียนแบบจำลอง) และบางครั้งเวลาในการคำนวณจะได้รับการจ่ายเงิน แต่ทั้งคู่หมายความว่ารหัสที่ใช้ร่วมกันจะทำให้สิ่งต่าง ๆ ถูกลง ใช้เวลาน้อยลงกับสิ่งอำนวยความสะดวก HPC) ฉันไม่เห็นว่าซอฟต์แวร์นั้นเกี่ยวข้องกับการทำกำไรอย่างไร
naught101

1
@psr: ฉันคิดว่านั่นเป็นประเด็นที่ naught101: มีผลกำไรจากการใช้โมเดล แต่ไม่จำเป็นต้องใช้เงินมากนักในการขายซอฟต์แวร์ที่ใช้โมเดล ทำให้ฉันประหลาดใจเช่นกัน แต่อาจเป็นไปได้
haylem

1

มีโอเพนซอร์ซอย่างน้อยสองชนิด

หากทัศนคติของคุณคือ "นี่คือสิ่งที่มีประโยชน์ฉันทำได้แล้ว" (และนั่นก็เป็นเรื่องที่ถูกต้อง) จากนั้นก็มีข้อเสียเล็กน้อย

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


3
ฉันไม่เห็นจริง ๆ ว่าการปล่อยรหัสบังคับให้ใครให้การสนับสนุนได้อย่างไร และในทางวิทยาศาสตร์อย่างน้อยที่สุดผู้ใช้ส่วนใหญ่จะได้รับข้อมูลเกี่ยวกับกระบวนการอย่างน้อยถ้าไม่ใช่รหัสนั้น
naught101

1
@ naught101: ไม่มีข้อผูกมัด แต่ถ้าใครใช้รหัสของคุณคุณจะได้รับอีเมลคำถามคำแนะนำ ... ซึ่งจะใช้ความพยายามที่จะจัดการเว้นแต่คุณเพียงแค่เลือกที่จะไม่สนใจพวกเขา นอกศาสตร์ผู้ใช้จำนวนมากยังไม่ได้รับข้อมูลมากเกินไปดังนั้นคุณอาจพบว่าตัวเองกำลังช่วยเหลือคนที่มีปัญหาในการตั้งค่าขั้นต้น ฯลฯ เพียงเพราะคุณบังเอิญปล่อยรหัสบางอย่าง ฉันเคยมีประสบการณ์อย่างน้อย แม้แต่ข้อความปฏิเสธความรับผิดในลักษณะ BSD "ที่จัดเตรียมไว้ตามที่" ฯลฯ ไม่ควรทำและไม่ควรหยุดยั้งผู้คนจากการขอความช่วยเหลือ
Joonas Pulakka

1
เพิ่มขึ้นเนื่องจากคำตอบนี้ไม่ได้มีประโยชน์น้อยกว่าคำตอบอื่น ๆ @ JoonasPulakka: แน่นอนว่ามันไม่ควรหยุดยั้งคนที่ขอความช่วยเหลือ แต่ควรหยุดพวกเขาโดยคาดหวังคำตอบ นอกจากนี้หากคุณมีซอฟต์แวร์จริงออกสู่สาธารณะคุณอาจมีความรับผิดชอบแบบเดียวกันกับผู้ใช้ไม่ว่ารหัสของคุณจะเป็นสาธารณะหรือไม่ก็ตาม(ขึ้นอยู่กับ EULA) บางทีคุณต้องคาดหวังข้อความค้นหาเพิ่มเติมจากนักพัฒนาถ้าคุณปล่อยรหัส แต่มันก็ดีที่คิดว่าส่วนใหญ่จะมีเงื่อนงำเล็กน้อยและอาจตอบแทนคำแนะนำแพทช์หรือสอง ..
naught101
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.