การใช้รหัสในโครงการของลูกค้ารายอื่น ๆ ถูกกฎหมายหรือไม่


22

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

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

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

ดังนั้นวิธีที่ดีที่สุดสำหรับฉันที่จะจัดการกับสถานการณ์นี้คืออะไร?

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

ฉันหวังว่าฉันจะทำให้สถานการณ์ของฉันชัดเจน ฉันรอคอยที่จะตอบคุณ


คุณได้ทำสัญญาอย่างเป็นทางการกับลูกค้าหรือยัง
โธมัสโอเวนส์

ไม่ตอนนี้ฉันอยู่ในช่วงการวางแผน จนถึงตอนนี้ฉันได้พูดคุยกับลูกค้าถึงความต้องการเท่านั้น
Flo

5
@Flo - เขียนสัญญาที่แก้ไขข้อกังวลเหล่านี้ทั้งหมด ลิขสิทธิ์จะไปหาคุณในฐานะผู้แต่ง แน่นอนถ้าคุณเห็นด้วยกับสัญญาที่ระบุไว้เป็นอย่างอื่น
Ramhound

8
คุณควรปรึกษาทนายความแทนที่จะพึ่งพาการคาดเดาของโปรแกรมเมอร์หลายคนที่ไม่ทราบรายละเอียดเกี่ยวกับสถานการณ์ของคุณและกฎหมายท้องถิ่นของคุณ
พอลทอมบลิ

1
ที่เกี่ยวข้อง: stackoverflow.com/questions/900803
Robert Harvey

คำตอบ:


26

คุณควรตัดสินใจก่อนเริ่มโครงการใครจะเป็นเจ้าของรหัส

หากพวกเขาอนุญาตให้คุณเป็นเจ้าของได้อย่างมีความสุขคุณก็ไม่จำเป็นต้องใช้มันในโครงการอื่น หากพวกเขาต้องการที่จะเป็นเจ้าของหลังจากนั้นมันเป็นจุดเจรจา


6
อาจเป็นไปได้ว่าคุณสนใจที่จะแนะนำดีลที่คุณสามารถนำโค้ดกลับมาใช้ใหม่ แต่ไม่ใช่ในโครงการสำหรับคู่แข่งของลูกค้าของคุณ ดูเหมือนจะน่าพอใจมากกว่าจากมุมมองของพวกเขา
Emilio M Bumachar

4
หากพวกเขาคัดค้านตัวเลือกปกติคือการพูด 2rate 1 ถ้าฉันสามารถนำโค้ดและไลบรารีที่มีอยู่มาใช้ใหม่และ 2. จำนวน 10x เท่าถ้าฉันต้องสร้างทุกอย่างใหม่ตั้งแต่ต้นสำหรับโครงการนี้เท่านั้น ในทางปฏิบัติคุณใส่นิดหน่อยเกี่ยวกับ "การนำโค้ดและไลบรารีมาตรฐานกลับมาใช้ใหม่" เพื่อปกปิดตัวคุณเองและไม่มีใครสังเกตเห็นหรือใส่ใจ
Martin Beckett

3
+1 ถึง Martin Beckett คุณควรมีฐานสองโค้ดในโครงการใด ๆ ชุดของไลบรารี "ทั่วไป" ที่มีรหัสพร้อมแอปพลิเคชันส่วนกลางซึ่งคุณ "ให้สิทธิ์" แก่ลูกค้าของคุณและรหัส "กำหนดเอง" ที่ลูกค้าของคุณจะเป็นเจ้าของเมื่อเสร็จสิ้น คุณสามารถกำหนดในสัญญาว่าการพัฒนาห้องสมุด "ทั่วไป" ที่มีคุณสมบัติใหม่เพื่อตอบสนองความต้องการของโครงการนี้ยังคงเรียกเก็บเงินได้ คุณจะต้องเจรจากับลูกค้าเป็นรายกรณีในสิ่งที่มีคุณสมบัติเป็น "สามัญ"; ลูกค้าอาจต้องการ codebase ที่ไม่ได้ขึ้นอยู่กับรหัสลิขสิทธิ์ของคุณทั้งหมด
KeithS

6

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

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


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

4

คำตอบที่ได้รับนั้นยอดเยี่ยม ฉันเห็นด้วยอย่างสุดใจกับคำแนะนำเพื่อ:

  • ถามนักกฎหมาย
  • ทำสัญญาทุกครั้งที่คุณทำงานกับใครก็ตาม
  • ทำงานกับทนายความของคุณต่อไป
  • กำไร!

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

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

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

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

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

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

และพูดคุยกับนักกฎหมาย!


3

รหัสแหล่งที่มาของแอพเป็นของใคร ฉันต้องให้ซอร์สโค้ดแก่ลูกค้าตามที่จ่ายเพื่อการพัฒนาหรือไม่

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

หากฉันต้องการฉันจะยังคงเก็บสำเนาไว้และนำมาใช้ใหม่ในภายหลังได้หรือไม่ ฉันต้องขอให้ลูกค้าใช้รหัสซ้ำหรือไม่

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

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

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


1
-1, ไม่มีเหตุผลที่คุณไม่สามารถแจกจ่ายซอร์สโค้ดได้แม้ว่าคุณจะเป็นเจ้าของมัน
user606723

@ user606723 คุณจะอ่านประโยคเต็มได้ไหม However, distributing code (to someone else) if the deal was exclusive, is not right.เช่นถ้าคุณพัฒนารหัสพิเศษสำหรับลูกค้าที่แจกจ่ายให้ผู้อื่นนั้นไม่เหมาะสม!
Dipan Mehta

"หรือคุณสามารถบอกได้ว่าลูกค้าจะต้องจ่ายน้อยลง แต่คุณเป็นเจ้าของแหล่งที่ถูกกฎหมายคุณสามารถจัดหา / ติดตั้งไบนารีให้กับลูกค้าเท่านั้น " <- นี่คือสิ่งที่ฉันหมายถึง คุณสามารถให้สิทธิ์แก่ซอร์สโค้ดแบบไม่ผูกขาด
606723

@ user606723 สิ่งนี้ไม่ครอบคลุมอยู่ในคำตอบของฉันเช่นกัน? alternatively you can tell them customer will have to pay less but you are legally owning the source- ประเด็นของความขัดแย้งคืออะไร?
Dipan Mehta

1
@DipanMehta: ฉันเห็นด้วยกับผู้ใช้ 606723; และการแก้ไขล่าสุดของคุณยังไม่สามารถแก้ไขปัญหาได้ ปัญหาคือว่า "[... ] หรือคุณสามารถบอกได้ว่าลูกค้าจะต้องจ่ายน้อยลง แต่คุณเป็นเจ้าของแหล่งที่มาตามกฎหมายคุณสามารถจัดหา / ติดตั้งซอฟต์แวร์ไบนารี - เฉพาะเวอร์ชันให้กับลูกค้า [... ]" ดูเหมือนว่าคุณไม่สามารถให้ซอร์สโค้ดแก่ลูกค้าหากคุณยังต้องการเป็นเจ้าของ ความจริงก็คือคุณยังสามารถให้สิทธิ์ซอร์สโค้ดแก่พวกเขาเพื่อวัตถุประสงค์เฉพาะโดยไม่ต้องยกเลิกกรรมสิทธิ์และ / หรือสละสิทธิ์ทั้งหมด
ruakh

-1

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

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


1
แน่นอนว่าทั้งหมดนี้จะต้องเปิดเผยต่อลูกค้า
user606723

1
ไม่มันจะไม่ ใบอนุญาตเช่น Apache หรือ MIT อนุญาตการใช้งานเชิงพาณิชย์
Danubian Sailor

-1

คำตอบอื่น ๆ คือสิ่งที่เกินความจริง ฉันไม่ได้ต้องการคำตอบที่สมบูรณ์เพียงชี้ให้เห็นบางสิ่ง

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

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