ฉันต้องทำอะไรเพื่อไม่ขโมยรหัส“ Hello World” ด้วยใบอนุญาต GPL


42

ในโครงการฉันพบไฟล์ที่math.cมีส่วนหัว GPL ขนาดใหญ่และ ...

//------------------------------------------------------------------------------
/// Returns the minimum value between two integers.
/// \param a  First integer to compare.
/// \param b  Second integer to compare.
//------------------------------------------------------------------------------
unsigned int min(unsigned int a, unsigned int b)
{
    if (a < b) {
        return a;
    }
    else {
        return b;
    }
}

ตกลงเจ๋งดังนั้นฉันต้องได้รับค่าต่ำสุดและ ... ไฟล์นี้ ! ดังนั้นฉันต้องเปิดโครงการทั้งหมดเพราะมันได้หรือไม่ หรือฉันจำเป็นต้องบูรณาการคณิตศาสตร์?

ฉันไม่เชื่อว่ามันบ้าไปแล้วดังนั้นคำถามคือเมื่อเราสามารถลบส่วนหัว GPL ได้หรือไม่

ฉันต้องเป็นคนแปลก ๆ และทำมันได้หรือไม่:

unsigned int min(             unsigned int
JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE,
unsigned int hyrthrtRERG            ) {  if
(JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE
< hyrthrtRERG            ) {  return JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE;  }
else {return hyrthrtRERG            ;    } }

อย่างจริงจังพวกเขาต้องการให้ฉันเขียนโค้ดเหมือนด้านบนหรือไม่


22
ในกรณีล่าสุดของ Google กับ Oracle the jury did find that one nine-line function that Google acknowledged copying was infringing(จากArsTechnica )
Zenon

5
เอาเป็นว่าอย่างจริงจัง
Mircea Chirea

33
ฉันจะบอกว่าการดำรงอยู่ของคำถามนี้พิสูจน์ให้เห็นถึงสิ่งที่ไม่ดี - งานของโปรแกรมเมอร์ได้กลายเป็นการเขียนโปรแกรมน้อยลงความยุ่งเหยิงและระบบกฎหมายที่ถูกต้องมากขึ้น
K.Steff

4
คัดลอก ฟังก์ชั่นเล็ก ๆ น้อย ๆ เช่นminนั้นไม่ได้รับความคุ้มครองตามกฎหมายลิขสิทธิ์ ดูคำตอบของฉันสำหรับรายละเอียด
Tony the Pony

6
@ โลกิคุณหายไปหนึ่งไมล์ อัลกอริทึมได้รับการคุ้มครองโดยสิทธิบัตรไม่ใช่ลิขสิทธิ์ ลิขสิทธิ์หมดอายุ 70 ​​ปีหลังจากการตายของผู้เขียนดังนั้นงานที่มีลิขสิทธิ์ในยุค 60 จึงยังใหม่อยู่ ท้ายที่สุดคำถามคือการคัดลอกรหัสนี้ไม่ใช่เกี่ยวกับอัลกอริทึม
alexis

คำตอบ:


53

ไม่เหมือนผู้ใช้หลายคนที่นี่ฉันอยากจะแนะนำ: คัดลอกมัน!

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

ลองคิดดูสินี่เป็นครั้งแรกที่แทบจะไม่ได้เขียนเรื่องที่แน่นอน (!) เมื่อบางสิ่งเป็นเรื่องเล็กน้อยมีเหตุผลเล็กน้อยที่จะไม่คัดลอกหากคุณไม่รู้สึกอยากเขียนเอง

แม้จะมีการสนทนานี้ก็ดูเหมือนจะฟุ่มเฟือยเล็กน้อยสำหรับฉัน - เราจำเป็นต้องปฏิบัติหากเราต้องทำงานจริงให้เสร็จ!


5
คำถามจริงคือที่ใดที่กั้นระหว่างความรู้รอบและเรื่องไร้สาระและมีวิธีที่จะทำให้แน่ใจได้อย่างแน่นอนว่าผู้คนจะไม่ชี้รหัสของฉันด้วยสิ่งที่เหมือนกัน _ <
cnd

20
มีแนวคิดเรื่องเกณฑ์ความคิดริเริ่มในเรื่องลิขสิทธิ์ และวิธีการง่ายๆเช่นนี้แทบจะไม่สามารถมีลิขสิทธิ์ได้ IANAL แม้ว่าและเขตอำนาจศาลแตกต่างกันไป ถึงกระนั้นสิ่งที่ CS ระดับปริญญาตรีทุกคนได้เขียนไว้อย่างน้อยห้าครั้งในลักษณะเดียวกันอาจตกอยู่ภายใต้สิ่งนี้ได้เป็นอย่างดี
Joey

4
@nilu: Let us then say that the programmer wrote his own version of MIN and it ended up looking exactly like the one from math.c - would it then be okay?ใช่ถ้ามันเป็นอุบัติเหตุ "ถ้าอย่างนั้นเขาจะทำมันแตกต่างอะไร? Bits มีสี ansuz.sooke.bc.ca/entry/23นี่ไม่ใช่สิ่งที่นักวิทยาศาสตร์คอมพิวเตอร์ส่วนใหญ่สามารถเข้าใจได้ - มันเป็นหัวข้อที่ซับซ้อน แต่เป็นสิ่งที่ได้รับการยอมรับตามกฎหมาย หากคุณมีข้อสงสัยเกี่ยวกับว่าเป็นสิ่งที่ถูกต้องตามกฎหมายหรือไม่คุณได้ดีที่สุดที่จะพูดคุยกับทนายความ
Mark Byers

4
@alexis: ฉันเข้าใจประเด็นของคุณ แต่ฉันไม่เห็นด้วยจริง ๆ - ถ้าโค้ดผลลัพธ์เหมือนกันไม่มีใคร แต่โปรแกรมเมอร์สามารถรู้ได้ว่ามันถูกคัดลอกหรือเขียนตั้งแต่ต้น เห็นได้ชัดว่าควรมีปัญหาเล็กน้อยในการใช้งาน min และอาจใช้เวลาน้อยกว่าการค้นหาการใช้งานอื่น อย่างไรก็ตามหากโปรแกรมเมอร์ทำสำเนาอย่างแน่นอนและไม่มีใครรู้ว่าเขาไม่ได้เขียนฟังก์ชันด้วยตัวเองความเสียหายใดที่เกิดขึ้นแล้ว? ถ้าโปรแกรมเมอร์ไม่รู้สึกถึงความผิดบางอย่างคำตอบก็คือไม่มี ส่วนที่เหลือเป็นเพียงความหมาย
nilu

5
@ MarkByers: เมื่อฉันพูดว่า 'ไม่สามารถพิสูจน์ได้' ฉันหมายความว่าไม่มีหลักฐานทางกายภาพใด ๆ ที่แสดงว่ามีการก่ออาชญากรรมแม้แต่อาชญากรรมที่ได้รับการยอมรับนั้นถูก จำกัด อยู่ในใจของโปรแกรมเมอร์ เห็นได้ชัดว่านี่ไม่สามารถเกิดขึ้นได้หากขนมหวานบางชิ้นถูกขโมยไป - สิ่งนี้มีผลกระทบทางกายภาพต่อโลก (อมยิ้ม - = 1) หาก 'อาชญากรรม' ถูก จำกัด อยู่ในใจของคุณเองใครที่จะตัดสินว่ามันเป็นคุณธรรมหรือผิดศีลธรรม?
nilu

18

ไม่ตอบคำถามของคุณโดยตรง แต่ลองทำสิ่งนี้:

#define min(a,b) ((a) < (b) ? (a) : (b))

ฉันขอปล่อยมาโครที่ซับซ้อนและสง่างามนี้ให้เป็นสาธารณสมบัติ แม้ว่าฉันอาจจะต้องตีพิมพ์บทความเกี่ยวกับเทคนิคนี้

หากคุณเป็นแบบแมโครให้ลองแบบอินไลน์นี้ (จริงๆยกเว้นว่าคุณกำลังเขียนโปรแกรมบน SPARC คุณจะประหยัดรอบการทำงานของ CPU ได้มากโดยไม่ต้องห่อหุ้มฟังก์ชั่นเป็นที่แพร่หลายเหมือนกับminในรหัสเข้า / ออก):

inline int min(int a, int b)
{
    return a < b ? a : b;
}

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


1
โอ้พวกเขาสามารถจดลิขสิทธิ์รหัสนั้นได้ แต่ด้วยความเรียบง่ายของอัลกอริธึมพวกเขาจะถูกกดอย่างหนักเพื่อพิสูจน์ในศาลว่าคุณคัดลอกมาเว้นแต่คุณจะทำสิ่งที่โง่เช่นความคิดเห็นซ้ายเหมือนเดิม ฯลฯ กฎไม่ใช่ว่าคุณสามารถทำได้ ใช้รหัสเดียวกันกฎคือคุณสามารถทำได้เฉพาะเมื่อคุณเขียนมันโดยใช้สมองของคุณเองและไม่ได้คัดลอกต้นฉบับในแบบใด ๆ
Gort the Robot

2
@StevenBurnap แน่นอนว่ารหัสต้นฉบับจะมีปัญหาเหมือนกัน: พวกเขาสามารถพิสูจน์ได้ว่าพวกเขามีลิขสิทธิ์หรือไม่
Richard

19
min(a++,b++)ปัญหากับรุ่นมาโครนาทีมาเมื่อคุณพยายามที่จะทำ

4
"ปล่อยสิ่งนี้ ... สู่สาธารณสมบัติ" เป็นศูนย์กลางของสหรัฐฯ มันไม่ได้หมายความว่าสิ่งเดียวกันในหลาย ๆ ประเทศและในบางประเทศก็ไม่สามารถถูกกฎหมายได้

9
ขอบคุณ แต่สำหรับคอมไพเลอร์จากยุค 2000 ผู้รวบรวมสามารถอินไลน์เรื่องเล็กน้อยminได้
DeadMG

18

ข้อจำกัดความรับผิดชอบ : ฉันไม่ใช่ทนายความ ใช้คำแนะนำของฉันในความเสี่ยงของคุณเอง

การใช้งานของminนี้ไม่ได้มีลิขสิทธิ์เนื่องจากมีเพียงไม่กี่วิธีที่เหมาะสมในการเขียน

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

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

โปรดจำไว้ว่าสิ่งนี้ไม่รับประกันว่าจะมีคนไม่ฟ้องคุณ แต่อย่างน้อยคุณจะมีการป้องกันที่แข็งแกร่ง

นอกจากนี้โปรดจำไว้ว่าแม้ว่ารหัสบางส่วนจะไม่ได้รับการคุ้มครองตามกฎหมายลิขสิทธิ์ แต่ก็อาจยังมีสิทธิบัตรซอฟต์แวร์minอยู่


2
คุณลองบอกสิ่งนั้นกับ Oracle!
GordonM

1
บางทีฟังก์ชั่น 9-line อาจไม่สำคัญ ... ฉันต้องการดูรหัส
Tony the Pony

1
programmers.stackexchange.com/a/148362/28718ดูเหมือนเล็กน้อยสำหรับฉันโดยสมมติว่าเป็นรหัสที่ถูกต้อง
GordonM

12

ฉันปล่อยรหัสต่อไปภายใต้ใบอนุญาต BSD เนื่องจากสิทธิ์ใช้งานนั้นได้รับอนุญาตมากขึ้นคุณไม่ควรพบปัญหาลิขสิทธิ์หากคุณใช้การดำเนินการของฉัน

unsigned int min(unsigned int a, unsigned int b)
{
    return (a > b? b: a);
}

ฉันจะแน่ใจได้อย่างไรว่าคุณไม่ได้ปิดผนึกรหัส GPL นั้นและเขียนใหม่? : P (ล้อเล่น)
cnd

1
คุณไม่. แต่ถ้าคุณใช้รหัสของฉันคุณสามารถเรียกร้องให้คุณใช้มันโดยสุจริต
GordonM

3
จงชื่นชมยินดีพี่น้องทั้งหลายเมื่อถึงยุคใหม่ได้เริ่มขึ้นแล้วเราสามารถพบได้minในซอฟต์แวร์โอเพนซอร์ซ นอกจากนี้ @Sholy ตอนนี้เป็นปัญหาของ GordonM ไม่ว่าเขาจะคัดลอกมาหรือไม่
K.Steff

5
คุณยังปล่อยมันภายใต้ "ครีเอทีฟคอมมอนส์" ดูด้านล่างของหน้านี้เกี่ยวกับรหัสวางที่นี่
Martin York


11

เป็นสถานการณ์ที่ไร้สาระฉันเห็นด้วย แต่คุณมีเพียงตัวคุณเท่านั้นที่จะตำหนิ หากคุณกำลังเขียนรหัสที่เป็นกรรมสิทธิ์คุณไม่ควรอ่านไฟล์ต้นฉบับที่มีลิขสิทธิ์ GPL และระยะเวลา ลบ math.c ออกจากระบบไฟล์ของคุณเก็บเอกสารและอย่าลังเลที่จะใช้งานส่วนใด ๆ ของ API ที่คุณต้องการอีกครั้ง หากคุณไม่ได้อ่านรหัสคุณไม่ต้องกังวลว่ารหัสของคุณคล้ายกัน

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

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

คุณไม่มีสิทธิ์ที่จะใช้สิ่งนี้math.cแต่ไม่มีใครพยายามทำตลาดให้เกิดminประโยชน์ เป้าหมายของ GPL คือการเพิ่ม "เสรีภาพ" ของโปรแกรมเมอร์ (และอิสรภาพของผู้ใช้) เพื่อไม่ให้ จำกัด สิทธิ์การใช้งาน GNU, FSF และการเคลื่อนย้ายซอฟต์แวร์เสรีเริ่มต้นด้วย Richard Stallman และ Stallman เริ่มต้นใช้งานใหม่ตั้งแต่เริ่มต้น Symbolics แต่ละเวอร์ชันใหม่ที่กระเพื่อมออกมา FSF จะไม่ (และไม่สามารถ) ไปได้หลังจากใครก็ตามที่นำไลบรารี GPL ไปใช้อีกครั้ง


แต่มันก็เป็นตัวอย่างที่แปลกจริงๆ เป็นตัวอย่างนั่นหมายความว่าฉันต้องอ่านและปฏิบัติตาม ... แต่เท่าที่ฉันเข้าใจฉันไม่สามารถเลือกใบอนุญาต GPL ได้ที่นี่ ดังนั้นผมจึงรู้ว่าใครเป็นสตอลแมน;)
CND

2
Sholy ขอโทษ แต่ฉันไม่รู้ว่าคุณกำลังพูดอะไร! ตัวอย่างอะไร (คุณยังถามฉันว่า Stallman คือใคร Google มันหรือตรวจสอบวิกิพีเดียด้วย)
alexis

3
"โปรแกรมเมอร์ของ Microsoft ไม่ได้รับอนุญาตให้อ่านโอเพนซอร์ส" โอ้ฉันช่างน่ากลัว - มีที่ไหนที่ฉันสามารถอ่านได้บ้างไหม? Google ไม่ได้ช่วยอะไร
amara

คำถามที่ดี. ฉันอ่านเกี่ยวกับเรื่องนี้ในฟอรัมการพัฒนา Iron Python แต่น่าเสียดายที่ฉันไม่สามารถหาได้ตอนนี้ เรื่องย่อ: Jim Hugunin ( hugunin.net/microsoft_farewell.html ) กล่าวว่าพวกเขาไม่ได้รับอนุญาตให้ดูการใช้งานของงูหลามและมีคนถามตัวเองว่าพวกเขาได้รับอนุญาตให้ดูรหัสของตัวเองหรือไม่ (Microsoft ทำให้ Iron Python เป็นโอเพนซอร์ส) . คำตอบคือ: พวกเขาทำข้อยกเว้นพิเศษสำหรับ Iron Python
alexis

ผู้ที่มีอิสระในการใช้ GPL นั้นมีวัตถุประสงค์เพื่อเพิ่มนั้นเป็นผู้ใช้ทั้งหมดของโปรแกรมไม่ใช่โปรแกรมเมอร์ (โดยเฉพาะ)
James Youngman

7

คำตอบ: ได้รับอนุญาตจากผู้เขียนเท่านั้น

นั่นคือรหัสที่มีลิขสิทธิ์ คุณไม่สามารถคัดลอกได้โดยไม่ได้รับอนุญาตจากผู้เขียน

คุณจะต้องเขียนเวอร์ชันของคุณเองminหรือคัดลอกชุดตัวเลือกminที่มีลิขสิทธิ์แบบอื่น

จำไว้ว่าด้วยลิขสิทธิ์มันเป็นรหัสที่ได้รับการป้องกันไม่ใช่อัลกอริทึม กฎหมายลิขสิทธิ์มาจากข้อความ แม้ว่า "math.c" นั้นไม่ได้เป็นอะไรนอกจากความคิดเห็นและไม่มีรหัสที่สามารถใช้งานได้เลยมันจะยังคงได้รับการคุ้มครองภายใต้ลิขสิทธิ์


1
รุ่นของตัวเองหมายถึงอะไร? MIN เวอร์ชั่นของฉันเองฟังเฮฮา!
cnd

2
จำไว้ว่าคุณไม่ได้เป็นเจ้าของคุณเป็นเจ้าของลำดับโดยเฉพาะของตัวละครที่เกิดขึ้นในการดำเนินการmin min
Gort the Robot

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

2
ไม่ฉันไม่ได้ล้อเล่น และใช่คุณอาจหนีไปได้ในกรณีเช่นนี้ มันขึ้นอยู่กับเจ้าของลิขสิทธิ์เพื่อพิสูจน์ว่าคุณทำเสร็จแล้ว โปรดทราบว่าฉันแค่บอกคุณว่ากฎหมายคืออะไรไม่ปกป้องมัน
Gort the Robot

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

6

นี่คือสิ่งที่ Google คาดการณ์ไว้ นี่ดูเหมือนสามัญสำนึกสำหรับอาเรย์

 908     /**
 909      * Checks that fromIndex and toIndex are in range, and throws an
 910      * appropriate exception if they aren't.
 911      *
 912      * @param arrayLen the length of the array
 913      * @param fromIndex the index of the first element of the range
 914      * @param toIndex the index after the last element of the range
 915      * @throws IllegalArgumentException if fromIndex > toIndex
 916      * @throws ArrayIndexOutOfBoundsException if fromIndex < 0
 917      *         or toIndex > arrayLen
 918      */
 919     private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
 920         if (fromIndex > toIndex)
 921             throw new IllegalArgumentException("fromIndex(" + fromIndex +
 922                        ") > toIndex(" + toIndex+")");
 923         if (fromIndex < 0)
 924             throw new ArrayIndexOutOfBoundsException(fromIndex);
 925         if (toIndex > arrayLen)
 926             throw new ArrayIndexOutOfBoundsException(toIndex);
 927     }

หากนี่คือทั้งหมดคำตัดสินจะถูกโยนอุทธรณ์ แต่ตามสายผู้ตัดสินยังพบว่า Google คัดลอกไฟล์อื่นอีก 8 ไฟล์ ดูwired.com/wiredenterprise/2012/05/google-oracle-decompile
Tony the Pony

5
ใช่ แต่ "สามัญสำนึก" ไม่ใช่แถบสำหรับลิขสิทธิ์ ไม่ว่าพวกเขาจะคัดลอกและแก้ไขหรือเขียนเองตั้งแต่ต้น ไม่ว่าจะเป็น "สามัญสำนึก" คือการทดสอบสิทธิบัตรไม่ใช่ลิขสิทธิ์ กล่าวอีกนัยหนึ่งออราเคิลสามารถลิขสิทธิ์ข้อความนั้น แต่ไม่สามารถจดสิทธิบัตรอัลกอริธึมนั้น
Gort the Robot

9 บรรทัดเหล่านี้เป็นตัวอย่างคลาสสิกของหลักคำสอนการควบรวมกิจการ มีวิธีอื่นอีกกี่วิธีในการทำการตรวจสอบช่วงบนอาเรย์?
Tony the Pony

1
@TonythePony มาก ๆ ถ้าฟังก์ชันส่งข้อยกเว้นที่มีข้อความ
avakar

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

5

ฉันจะไม่ใช้รหัสนี้เนื่องจากความคิดเห็นไม่ตรงกับสิ่งที่รหัสทำ ความคิดเห็นเกี่ยวกับการพูดในขณะที่การใช้รหัสinteger unsigned intใครจะรู้ว่ามีข้อผิดพลาดใดบ้างที่ฝังอยู่ในส่วนลึกของฟังก์ชันนี้

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

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


2

ผู้คนดูเหมือนจะลืมว่ากฎหมายลิขสิทธิ์ทั้งในทางจิตวิญญาณและตัวอักษรหมายถึงการห้ามการคัดลอกจริง - ไม่ใช่การแสดงออกทางความคิดเดียวกันด้วยตัวคุณเองแม้ว่าผลจะออกมาคล้ายกันอย่างน่าสงสัยก็ตาม

หากคุณใช้รหัส GPL ต้องการแก้ไขให้ใช้งานในลักษณะที่ขัดต่อสิทธิ์ใช้งานที่คุณได้รับและอ้างว่าไม่ใช่งานที่ได้รับมาแสดงว่าคุณผิดกฎหมาย แม้ว่าคุณจะใช้รุ่นที่สองของคุณ - คุณได้เปลี่ยนชื่อของตัวแปรทั้งหมดและเปลี่ยนแปลงการจัดรูปแบบ แต่ก็ยังคงได้รับมาจากต้นฉบับ

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

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


1

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

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


1

เพียงแค่เขียนมันด้วยตัวเองใน 30 วินาที คุณสามารถใช้อัลกอริทึมเดียวกันทั้งหมดได้ อย่าคัดลอก / วาง

ลิขสิทธิ์คุ้มครองเฉพาะการแสดงออกของความคิดไม่ใช่ความคิดนั้น คุณสามารถใช้ความคิดโดยตรงโดยที่คุณไม่ได้คัดลอก

FWIW ฉันสงสัยว่าการคัดลอกโค้ดที่น่ารำคาญจะทำให้คุณเดือดร้อนอยู่ดี ความเสียหายจะเป็นศูนย์และอาจตกอยู่ภายใต้การใช้อย่างเป็นธรรมในเขตอำนาจศาลส่วนใหญ่ แต่กรณีทางกฎหมายเป็นความเจ็บปวดที่ฉันไม่ต้องการเสี่ยง


1

ในฐานะที่เป็นรหัส GPL ของคำถามใหญ่ที่นี่คือคุณวางแผนกระจายรหัสของคุณหรือขายซอฟต์แวร์ของคุณ

หากคุณใช้งานภายใน GPL ให้อิสระอย่างเต็มที่ในการทำตามที่คุณต้องการ

หากคุณวางแผนที่จะแจกจ่ายแพ็คเกจของคุณ - สิ่งที่ง่ายที่สุดคือ GPL แพ็คเกจของคุณในเงื่อนไขเดียวกับแหล่ง GPL ใด ๆ ที่คุณใช้ มีวิธีอื่น ๆ แต่มันก็ซับซ้อน

หากคุณวางแผนที่จะขายซอฟต์แวร์ของคุณคุณต้องแจกจ่ายซอร์สโค้ดสำหรับรหัส GPL ใด ๆ ที่คุณใช้และ / หรือแก้ไขภายใต้ใบอนุญาต GPL เดียวกันกับที่คุณได้รับมา


0

หากคุณใช้ C ++ ไม่ใช่ C โปรดหลีกเลี่ยงปัญหานี้โดยใช้ไลบรารีมาตรฐานstd::minหรือstd::maxใน<algorithm>:

http://www.cplusplus.com/reference/algorithm/min/

นั่นเป็นการซื้อความคิดของคุณและมันจะใช้ได้กับทุกประเภทที่เทียบเคียง เช่นกัน: เมื่อใดก็ตามที่ d-bag พยายามที่จะอ้างว่าพวกเขาคิดค้นขึ้นมาและได้รับการคุ้มครองโดยสิทธิบัตรซอฟต์แวร์พวกเขาจะดังก้องไปที่คณะกรรมการ ISO ... ไม่ใช่คุณ

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


-2

สำหรับกรณีทั่วไป: รหัสที่ซับซ้อนมากขึ้นที่สามารถใช้งานลิขสิทธิ์ได้อย่างแน่นอนซึ่งแตกต่างจาก min และ max (ซึ่งอาจเป็นหรือไม่สามารถใช้ลิขสิทธิ์ได้)

จากนั้นให้ใช้รหัสของคุณตามห้องสมุดเช่น GPL! อย่างไรก็ตามโปรดทราบว่ามีห้องสมุด LGPL (และ GPL พร้อมข้อยกเว้น) ที่ให้คุณใช้งานได้ในขณะที่ให้รหัสของคุณตามที่คุณต้องการ

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