Apakah legal untuk menggunakan kembali kode dalam proyek pelanggan lain?

22

Saya bekerja sebagai pengembang perangkat lunak independen untuk aplikasi seluler. Seorang pelanggan meminta saya untuk mengembangkan aplikasi seluler. Jadi saat ini saya sedang menghitung waktu dan upaya untuk menulis penawaran untuk proyek ini.

Aplikasi itu sendiri hanya akan digunakan untuk waktu tertentu karena terkait dengan peristiwa tertentu setelah itu jika tidak akan berguna. Tetapi fungsionalitas dasar aplikasi akan dapat digunakan kembali untuk pelanggan lain yang ingin memiliki aplikasi serupa untuk acara mereka.

Saat ini saya bertanya-tanya apakah boleh mengembangkan aplikasi untuk pelanggan, biarkan dia membayar pengembangan dan menggunakan kembali bagian dari kode sumber untuk aplikasi pelanggan lain?

Jadi apa cara terbaik bagi saya untuk menghadapi skenario ini?

  • Kepada siapa yang memiliki kode sumber aplikasi?
  • Apakah saya harus memberikan kode sumber kepada pelanggan karena mereka membayar untuk pengembangan?
  • Jika harus, bisakah saya menyimpan salinannya dan menggunakannya kembali nanti?
  • Apakah saya harus meminta pelanggan untuk menggunakan kembali kode?
  • Apakah saya harus bekerja dengan semacam model lisensi di sini. Dan biarkan pelanggan pertama hanya membayar bagian tertentu dari pengembangan sehingga saya dapat menggunakan kembali kode tanpa khawatir?

Saya harap saya memperjelas situasi saya. Saya menantikan jawaban Anda.

Flo
sumber
Sudahkah Anda membuat kontrak formal dengan pelanggan?
Thomas Owens
Tidak, saat ini saya sedang dalam tahap perencanaan. Sampai sekarang saya hanya berbicara dengan pelanggan tentang persyaratan.
Flo
5
@ Fo - Tulis kontrak yang membahas semua masalah ini. Secara default, hak cipta diberikan kepada Anda sebagai penulis. Tentu saja jika Anda menyetujui kontrak yang mengatakan sebaliknya itu ada pada Anda.
Ramhound
8
Anda harus berkonsultasi dengan pengacara, alih-alih mengandalkan dugaan sekelompok programmer yang tidak tahu detail situasi Anda dan hukum setempat Anda.
Paul Tomblin
1
Terkait: stackoverflow.com/questions/900803
Robert Harvey

Jawaban:

26

Anda harus memutuskan sebelum memulai proyek, siapa yang akan mempertahankan kepemilikan kode.

Jika mereka dengan senang hati mengizinkan Anda mempertahankan kepemilikan, maka Anda boleh menggunakannya dalam proyek lain. Jika mereka ingin mengambil kepemilikan setelah itu adalah titik negosiasi.

Tom
sumber
6
Mungkin menarik bagi Anda untuk menyarankan kesepakatan di mana Anda dapat menggunakan kembali kode tersebut, tetapi tidak dalam proyek untuk pesaing pelanggan Anda. Itu tampaknya lebih enak dari sudut pandang mereka.
Emilio M Bumachar
4
Jika mereka keberatan, opsi yang biasa adalah mengutip 2rates. 1 jika saya dapat menggunakan kembali kode dan pustaka yang ada dan 2. jumlah 10x lebih banyak jika saya harus membuat ulang semuanya dari awal untuk proyek ini saja. Dalam praktiknya Anda memasukkan sedikit tentang "menggunakan kembali kode standar dan perpustakaan" hanya untuk menutupi diri Anda dan tidak ada yang pernah memperhatikan atau peduli.
Martin Beckett
3
+1 untuk Martin Beckett. Anda harus memiliki dua basis kode dalam proyek apa pun; Serangkaian pustaka "umum" yang berisi kode dengan aplikasi global, yang Anda "lisensikan" untuk klien Anda, dan kode "khusus" yang akan dimiliki klien Anda saat selesai. Anda dapat menetapkan dalam kontrak bahwa pengembangan perpustakaan "umum" dengan fitur-fitur baru sebagai tanggapan terhadap persyaratan proyek ini masih dapat ditagih. Anda harus bernegosiasi dengan klien kasus per kasus tentang apa yang memenuhi syarat sebagai "umum"; klien mungkin menginginkan basis kode yang tidak sepenuhnya bergantung pada kode berlisensi Anda.
KeithS
6

Karena Anda belum memiliki kontrak, Anda perlu menyelesaikan masalah ini dengan pelanggan sebelum Anda menandatangani kontrak akhir. Dari pemahaman saya, ini akan terjadi jika pelanggan setuju dengan perkiraan Anda tentang waktu dan biaya, jadi itu adalah sesuatu yang Anda harus pikirkan tentang berdiskusi dengan pelanggan sekarang, bersama dengan persyaratan. Ini adalah hal-hal yang sering dimasukkan dalam dokumen semacam itu. Apa yang disertakan harus disetujui baik oleh Anda dan orang yang membayar produk, meskipun tergantung pada orang atau organisasi, Anda mungkin tidak mendapatkan semua yang Anda inginkan.

Jika Anda tidak memiliki banyak pengalaman dalam menulis kontrak, atau jika Anda memiliki pertanyaan yang sangat spesifik, orang terbaik untuk ditanyakan adalah seorang pengacara yang berspesialisasi dalam kontrak dan hukum bisnis - mereka akan tahu jika apa yang Anda tulis akan bertahan. pengadilan jika ada masalah. Anda tidak ingin kesalahan dalam kontrak Anda menyebabkan masalah di kemudian hari.

Thomas Owens
sumber
7
+1 Saya juga ingin menambahkan bahwa mendapatkan konsultasi hukum atau membantu menulis kontrak pertama Anda adalah ide yang baik sehingga Anda bisa melakukannya dengan benar. Secara umum, sebagian besar transaksi sangat mirip sehingga cukup mudah untuk menggunakan kontrak lama Anda sebagai templat untuk kontrak yang Anda tulis untuk klien baru nanti.
maple_shaft
4

Jawabannya sejauh ini sangat bagus. Saya sepenuh hati setuju dengan saran untuk:

  • tanya seorang pengacara
  • menyusun kontrak setiap kali Anda bekerja dengan siapa pun
  • terus bekerja dengan pengacara Anda
  • keuntungan!

Dalam situasi ini, Anda sudah tahu bahwa "fungsionalitas dasar aplikasi akan dapat digunakan kembali untuk pelanggan lain", dan pada kenyataannya saya yakin Anda (dan lainnya) telah mengalami situasi di mana Anda mengetahui beberapa fungsionalitas dasar atau kerangka kerja - jadilah mereka web, ponsel, desktop, atau lainnya - akan digunakan kembali. Maksud saya sungguh, mengapa kita tidak menggunakan kembali sesuatu yang kita tahu berfungsi, dan kita kenal? Mungkin kita semua melakukannya sepanjang waktu.

Ini mungkin tidak berhasil untuk Anda, tetapi itu telah berhasil untuk saya selama bertahun-tahun:

  • Makan biaya pengembangan apa pun yang Anda pikir akan Anda gunakan kembali, pertahankan kepemilikan, dan lisensikan kepada klien Anda. Tidak ada uang eksternal yang berpindah tangan dalam proses ini, untuk menjaga kepemilikan tetap jelas.

Dalam situasi itu, dengan bantuan pengacara, Anda dapat memperjelas bahwa klien Anda membayar untuk semua yang dibangun di atas fungsi dasar yang Anda berikan, mereka memiliki penyesuaian itu tetapi bukan basis, dan Anda terus bebas untuk kembangkan untuk orang lain dengan cara yang sama.

Jika klien menuntut eksklusivitas penggunaan, maka Anda dapat menawarkannya kepada mereka dengan harga yang memberi Anda imbalan untuk waktu, upaya, dan ketidakmampuan untuk menjualnya kepada siapa pun di masa depan.

Kelemahannya, tentu saja, adalah Anda mengembangkan sesuatu secara gratis. Anda harus yakin itu akan dapat digunakan kembali, dan bahwa orang lain akan membayar Anda, jika tidak, itu pertaruhan yang buruk. Tetapi jika Anda berencana untuk menjadi pengembang independen untuk beberapa waktu, dan memiliki basis klien - atau setidaknya ingin - garis pemikiran ini mungkin sesuatu yang perlu dipertimbangkan untuk jangka panjang.

Dan berbicara dengan seorang pengacara!

Jcmeloni
sumber
3

Kepada siapa yang memiliki kode sumber aplikasi? Apakah saya harus memberikan kode sumber kepada pelanggan karena mereka membayar untuk pengembangan?

Ini tergantung pada kontrak. Secara umum, Anda harus bertanya kepada pelanggan tentang apa yang dikenal sebagai eksklusivitas . Misalnya, Anda dapat mengenakan biaya lebih banyak untuk pengembangan eksklusif (dan pelanggan akan memiliki kodenya); atau Anda dapat memberi tahu mereka bahwa pelanggan harus membayar lebih sedikit tetapi Anda secara hukum memiliki sumber. Anda dapat menyediakan / menginstal versi perangkat lunak biner saja kepada pelanggan sehingga pelanggan harus mendatangi Anda untuk melakukan modifikasi.

Jika harus, bisakah saya menyimpan salinannya dan menggunakannya kembali nanti? Apakah saya harus meminta pelanggan untuk menggunakan kembali kode?

Secara umum, menyimpan salinan tidak ilegal / tidak etis. Anda dapat menggunakannya saat pelanggan meminta pengembangan lebih lanjut. Namun, mendistribusikan kode (kepada orang lain) jika kesepakatan itu eksklusif, tidak benar.

Apakah saya harus bekerja dengan semacam model lisensi di sini. Dan biarkan pelanggan pertama hanya membayar bagian tertentu dari pengembangan sehingga saya dapat menggunakan kembali kode tanpa khawatir?

Tidak hanya dari sudut pandang penggunaan kembali kode sebaliknya, proses lisensi harus ada untuk mendefinisikan semua item pelanggan dan masalah Anda. Jadi, Anda harus melisensikan terlepas dari apa pun meskipun kesepakatan itu satu sisi. Anda juga harus memasukkan ketentuan untuk pengembangan di masa mendatang nanti untuk pelanggan yang sama.

Dipan Mehta
sumber
1
-1, Tidak ada alasan Anda tidak dapat mendistribusikan kode sumber meskipun Anda memilikinya.
user606723
@ user606723 maukah Anda membaca kalimat lengkapnya? However, distributing code (to someone else) if the deal was exclusive, is not right.yaitu jika Anda telah mengembangkan kode eksklusif untuk pelanggan yang mendistribusikan ke orang lain tidak tepat!
Dipan Mehta
"Sebagai alternatif, Anda dapat memberi tahu mereka bahwa pelanggan harus membayar lebih sedikit tetapi Anda secara hukum memiliki sumbernya. Anda dapat memasok / menginstal biner hanya kepada pelanggan. " <- inilah yang saya maksudkan. Anda dapat memberikan hak non-eksklusif ke kode sumber.
user606723
@ user606723 bukankah ini termasuk dalam jawaban saya juga? alternatively you can tell them customer will have to pay less but you are legally owning the source- apa gunanya ketidaksetujuan?
Dipan Mehta
1
@DipanMehta: Saya setuju dengan user606723; dan hasil edit terakhir Anda belum menyelesaikan masalah. Masalahnya adalah "[...] atau Anda dapat memberi tahu mereka bahwa pelanggan harus membayar lebih sedikit tetapi Anda secara hukum memiliki sumbernya. Anda dapat menyediakan / menginstal versi perangkat lunak biner saja kepada pelanggan [...]" membuat sepertinya Anda tidak bisa memberikan kode sumber kepada pelanggan jika Anda ingin tetap memilikinya. Faktanya adalah bahwa Anda masih dapat melisensikan kode sumber kepada mereka untuk tujuan tertentu, tanpa melepaskan kepemilikan dan / atau melepaskan semua hak.
ruakh
-1

Anda selalu dapat menggunakan kode Anda di perpustakaan lain, open source misalnya. Jelas klien tidak akan memiliki hak cipta atasnya. Dalam kasus khusus, Anda dapat menggunakan perpustakaan yang ditulis oleh Anda. Klien membayar untuk penyesuaian - bagian itu, yang dirancang untuknya dan kebutuhan bisnisnya. Segala sesuatu yang tidak spesifik untuk pengguna dan untuk digunakan dalam banyak proyek dapat menjadi perpustakaan Anda sendiri. Saya melihat tidak ada masalah di sana.

Masalahnya adalah jika Anda menggunakan kembali antarmuka atau logika bisnis, atau bahkan menjual kembali proyek yang sama ke orang lain. Kode utilitas adalah sesuatu yang biasanya klien tidak sadari dan juga tidak peduli.

Pelaut Danubia
sumber
1
Tentu saja, ini semua harus diungkapkan kepada klien.
user606723
1
Tidak, tidak akan. Lisensi seperti Apache atau MIT memungkinkan penggunaan komersial.
Danubian Sailor
-1

Jawaban lainnya adalah hal-hal yang terlalu menyederhanakan. Saya tidak bermaksud memiliki jawaban yang lengkap, hanya untuk menunjukkan beberapa hal.

  1. Anda dapat memberikan hak atau Anda dapat memberikan hak eksklusif.
  2. Jika Anda memberikan hak eksklusif, Anda dapat mempertahankannya sebagai bagian dari perjanjian, Anda akan mempertahankan hak non-eksklusif. (Ini akan memungkinkan Anda untuk menggunakan kode / program secara pribadi)
  3. Bahkan jika Anda tidak memberikan hak eksklusif, Anda masih dapat memberikan hak non-eksklusif untuk menggunakan, memodifikasi, dan mendistribusikan kode sumber. Keduanya tidak saling eksklusif.
pengguna606723
sumber
-1 jawaban Anda tidak mencakup poin APA SAJA yang belum diucapkan orang lain sebelumnya!
Dipan Mehta