Müşteri kaynak kodu istiyor, ancak diğer projelerle tekrar kullandığım çok sayıda paylaşılan kod içeriyor


96

Gelişmiş bir uygulama ikili koduyla kaynak kodunu teslim etmemi isteyen bir müşterim var. Başlangıçta kaynak kod hakkında hiçbir şey söylemediler, ancak son zamanlarda ihtiyaç duyduklarını söylediler. Sözleşme kesinleşmedi. İşi kabul ettiler, imzalamadılar ve sonra bu maddeyle geri döndüler.

Sorun şudur: Yıllar boyunca oluşturduğum ve yazdığım uygulamaların çoğu için şablon olarak kullandığım bir kod tabanım var. Proje kapsamından çok daha büyük.

Ayrıca bir ürün için de kullanmayı amaçlıyorum, bu yüzden nispeten küçük bir proje için sunmak istemiyorum.

Sanırım bu, bu sektörde ilk defa olmuyor. Bu sorunu aşmanın en iyi yolu nedir? Paylaşılan kütüphaneler gibi şeylerin yardımcı olabileceğini tahmin ediyorum.


18
Neye ihtiyaçları var? Muhtemelen, işten çıkmanız durumunda kodun yalnızca size ait olduğundan emin olmak isterler. Muhtemelen izin verilen kullanımı sınırlayan bir lisans ekleyebilirsiniz. Bir zamanlar bir şirkette böyle bir durum için güvenlik sağlamak üzere bir avukat şirkete kaynak kodu verdim (doğru kelime?).
thorsten müller

33
Özel yazılım kaynak koduyla teslim edilmelidir. Aksi takdirde, perakende bir üründür. Size / işinize daha sonra gelecek bir şey olması durumunda donmuş bir ürüne ihtiyaçları olduğunu sanmıyorum. Ancak buna göre şarj edin. Ayrıca, kitaplık kodunuzu derlenmiş bir kitaplığa (diliniz destekliyorsa) koymayı düşünün; böylece yazılımı değiştirebilir, derleyebilir ancak kitaplığınızı tek başına kolayca kullanamazsınız.
CodeAngry

14
@CodeAngry "gerekir"? Hayır. Yalnızca doğru miktarda para ödediğinde.
'.

32
@CodeAngry hayır. Aksi kararlaştırılmadıkça, senindir ...
o0 '.

46
Kabul edelim - çerçevenize kaç yıl eklerseniz sürsün, sizden başka kimseye bir değeri olmayacak. Hiç kimse belgelenmemiş, desteklenmeyen ve genel olarak bilinmeyen bir çerçeveye dayanan, ne kadar iyi olacağına bakılmaksızın yeni bir uygulama yaratamaz. Kaynak kodun tamamını onlara verin, uygulamanızın ısmarlamayan bölümlerine ait telif hakkını sakladığınızdan ve mutlu bir müşteri edindiğinizden emin olun.
Guntram Blohm

Yanıtlar:


137

Akılda tutulması gereken ilk şey, kaynak kodun ikili dosyalardan ayrı bir değere sahip olmasıdır. Kaynak kodu teslimi gerektiren bir sözleşmeyi imzalamayı reddetmek veya kaynak kodu teslimi için fazladan ödeme yapmakta ısrar etmek tamamen mantıklıdır. Sözleşmeler iki yönlü belgelerdir. Diğer tarafın neyin gerekli olduğunu dikte etmelerine izin vermeyin, çünkü onlar “büyük şirketler” ve “bunu her zaman yaparlar”. İlk olarak, karar size sunmak için istekli ve nasıl sen telafi etmek istiyorum. Ardından sözleşmelerini bir avukata götürün ve neyin değişmesi gerektiğini değerlendirin. O zaman pazarlık edersin.

Çok sayıda gencin sözleşmeye başladığında ne yaptığını yapma. Sadece imzalamayın çünkü çok fazla deneyimleri varmış gibi görünüyor ve siz yoksunuz. Dolandırılmanın iyi bir yolu.

İçine bak niye onlar kaynağını istiyorum. Bunu daha sonra başka bir geliştiriciyi kullanma seçeneğine sahip olmalarını isteyebilirler. Ya da bir otobüs tarafından vurulabileceğinizden korktukları için aniden isteyebilirler ve aniden gelişemeyecekleri ikiliklerle kalacaklar. Bu ikinci durumda, bir Yazılım Kodu Emanet Hizmeti'ne bakın . Bu hizmetler iflas durumunda veya yazılımın bakımını yapamamanız durumunda kaynak kodunu saklar. Bu, hem kodunuzu diğer müşterilere hizmet etmek için özel bir kod olarak tutma isteğinizi ve hem de kötü bir şey olursa çantayı elde edilemez bir ikili dosya grubuyla birlikte bırakmama arzunuzu tatmin edebilir.


17
Yazılım Kodu Emanet Hizmeti iflas ederse ne olur?
user11153

21
O zaman kodun sahibi - umarım - hala buralarda ve kodunu başka bir Emanet Hizmetine teslim edebilir. Hizmet, Tek Hata Noktasını kaldırmak için tasarlanmıştır.
Alexander,

17
Yazılım Kodu Emanet Hizmetleri, Yazılım Kodu Emanet Hizmetlerini kullanıyor mu?
FreeAsInBeer

29
@FreeAsInBeer: Hayır, Software Code Escrow Escrow Services kullanıyorlar. Açıkçası.
nneonneo

@Allexander, Yalnızca tekrar emanet sözleşmeli bir yükümlülük ise. Aksi takdirde, geliştirici ikinci emanet için tekrar ücret alacaktır.
Pacerier

67

"Hayır" mükemmel bir cevaptır, aslında nedenini anlayamadığımın çok yararlı olduğu inanılmaz derecede faydalı bir cevaptır.

“Merhaba, birdenbire ücretsiz olarak kaynak kodunu istediğimize karar verdik.”
"Merhaba, hayır."

O kadar zor değil, gerçekten.

Onlar para aleni miktarda ödeme yapmak istiyorsanız Sonra, üzerinde onlar neyi zaten sana borçluyum, sen onlara aslında gereken tek kaynağı içermektedir uygulaması, ve onlar kesinlikle almak bakımı bir kısaltılmış olanı verebilir olmayan -Exclusive haklarını.

Basit şeyleri karmaşıklaştırma.


Harika, özlü cevap.
Tibet'in Deniz Kıyısı,

26

Sorunuz "bu sorunu aşmanın en iyi yolu nedir?" Fakat sorun olarak ne görüyorsunuz? Diğerleri doğru bir müzakere meselesi olduğuna dikkat çekti: her şeyin bir değeri var ve müşteriye istediği şeyi sağlaması için bir fiyat vermesi size bağlı.

Ancak ayrıca , kodu vermenin etkilerini dikkatlice düşünmeli ve sözleşmeye yazmalısınız . Müşterinin görebilmesi için mi? Müşteri değiştirebilir mi? Ve özellikle, müşterilerinize yıllar içinde oluşturduğunuz kod tabanına münhasır haklar vermeyi düşünür müsünüz ve çoğu uygulama için bir şablon olarak kullanılır, böylece gelecekte bir daha asla kendiniz kullanamazsınız?

Sözleşmenin, kodu kullanma haklarına kimin sahip olduğunu ve hangi yollarla açıkça ifade etmesini sağlamalısınız.


19

Herhangi bir kaynak kodunun bir lisans gerektirdiğini unutmayın. Kaynak kodunu teslim ederseniz, şirket kaynak kodunu, lisansın izin verdiği herhangi bir şey yapmak için kullanabilir ve bunun ötesindeki her şey telif hakkı ihlali anlamına gelir. Bu nedenle, kaynak kodunu teslim ederseniz, kaynak kodun münhasır telif hakkını sakladığınızı ve kaynak kodun kullanımına tam olarak ne izin verildiğini kesin olarak anlatan bir sözleşmeniz olur. Ve tabii ki kaynak kodu + lisans ücretsiz gelmiyordu.

Büyük bir şirketin telif hakkınızı ihlal etmesi muhtemel değildir, çünkü yakalanmak finansal itibarın yanı sıra itibarlarına büyük zarar verir. Öte yandan, gelecekte herhangi bir sorunun çözülebileceğinin garantisi olmadan yazılım için ödeme yapmak, müşteri için kabul edilemez olabilir.


33
AMA ayrıca, kaynak kodun kötüye kullanılmasının tespit edilmesinin, özellikle aramıyorsanız, inanılmaz derecede zor olduğunu düşünün. Bir lisansa körü körüne güvenme: bazı insanlar için bu sadece bir kağıt parçası.
'.

1
@Lohoris, bir uygulamanın kodunuzu kullandığından şüpheleniyorsanız, sadece bir ikili olmasına bakılmaksızın bunu söylemek gerçekten kolaydır. Temel tersine mühendislik becerisi, emin olmanız gereken tek şey.
rev

6
-1 "Büyük bir şirket ..." iddiasına dair hiçbir kanıt olmadığını sanmıyorum, bu sadece bir tahmin.
djechlin

@Lohoris: Bu olursa, size verilen zarar nedir? En iyi örnek: Poster, hizmetlerini başka bir şirkete sunuyor ve zaten çok gurur duyduğu kütüphaneye sahip olduklarını görüyor. Büyük maaş günü!
gnasher729

13

Daha önce, müşteriye bir MIT lisansı altında kaynak kodunu (kütüphaneler ve tümü) verdim. Kütüphaneleriniz iyi organize edilmişse, sadece belirli bir müşteri için gerekli dosyaları / kaynakları sağlayın, daha fazlasını değil. Bunun hem benim hem de müşteri için adil olduğunu düşünüyorum. Ancak, söz konusu müşteri için daha önce kütüphanenin bir parçası olmayan sözleşmeli müşteri için yazılmış yeni kod sorunu her zaman vardı. Bu yüzden projeye başlamadan önce konuyu müşteri ile tartışmaya başladım. Bazı müşteriler bu kodun sahipliğini istedi, bazıları ise istemiyor (Yapanlar için daha yüksek fiyatlar gibi her zaman olumsuz teşvikler verdim). Ancak, gerçekten bazı müşteriler için bu tartışma çok kafa karıştırıcıydı ve bazen projeyi onaylatmak için 3 ya da 5 farklı kişiyle (avukatları dahil) konuştum.

Şimdi tüm kütüphanelerim her zaman geliştirmek için kullandığım özel bir çerçevenin parçası ve müşteriye bu çerçeveyi kullanacağımı ancak çerçevenin farklı bir lisansa sahip farklı bir ürün olduğunu açıklıyorum. (Bazen "yazılım bileşenleri" açıklanırken "çerçeve" kendilerine ait olmayabilir) kullanıyorum. Kullanılan dosyaların kodunu her zaman bir MIT lisansı altında veriyorum ve (tüm kodlar iyi organize edildiğinden) düşük seviye kodu (yeni bile olsa) çerçevede kalıyor (benim tarafımdan ve onlar tarafından yeniden kullanılacak) sadece başvuruları kendi koşullarına uymaları içindir (bu kod başka bir projede tekrar kullanmam için büyük olasılıkla yararsızdır). Tabii ki tüm bunlar sözleşmeye uygun şekilde yazılmıştır. Bence bu da adil.

Anahtar: "bu bileşenler farklı bir üründür" ve tümü başlamadan önce bir sözleşmede yazılmıştır.

Yani evet, paylaşılan kütüphaneleri kullanma hakkında fikrin doğru olabilir. Bununla birlikte, size neden, risklerini azaltmalarına izin verecek bir lisans altında kullandığınız kaynak kodunu vermiyorsunuz? Bunun adil olacağını düşünüyorum.


2
Bence bu iyi bir cevap gibi geliyor. OP açıkça devredilmemeli, ancak diğer yandan, özel bir proje için kaynak kodunu istemek oldukça makul görünüyordu (ve yeterince sözleşmeli projelerin raylardan tamamen çıktığını ve birileri tarafından kurtarılması gerektiğini gördüm. Başka bir deyişle, eğer baksaydım, kaynak teklif etmeyi reddeden bir müteahhiti düşünmezdim).
Casey,

11

Bununla baş etmenin yolu pazarlık etmektir.

Eğer kaynak kodunu istiyorlarsa, parasını ödemeye hazırlıklı olmalılar ve ne kadar olması gerektiğine karar vermek size kalmış.

Öte yandan ... istediklerini ödemeye hazır olmazlarsa, "işlerini başka yerlere götürmeye" karar verebilirler.

İş dünyasına hoşgeldiniz :-)


Gelecekte potansiyel müşterilerle konuştuğunuzda, zamanın boşa gitmesini önlemek için bu konuyu erkenden konuşmayı unutmayın.


Ayrıca, yaptığınız şeyin açık kaynaklı geliştiriciler ve açık kaynaklı çözümler arayan (eğitimli) müşteriler için biremadır.


5
İlk olarak, bir lisans için "istedikleri" den çok daha fazla olasılık var. İkincisi, şirket yerine "bunu yeterince erken yapmak" için OP'yi suçlamanızın haksızlık olduğunu düşünüyorum. Bu biraz editoryaldir. Üçüncüsü, açık kaynaklı geliştiricilerin kapalı kaynaklı bir projede çalışmak istiyorlarsa neden anathema ile karşı karşıya olduklarını anlamıyorum. Dördüncüsü, şirket açık kaynaklı bir çözüm arayışında olsaydı, kaynak kodun kendi amaçları için özel bir kopyasını istemezdi.
djechlin

1
@djechlin - 1) OP'yi suçlamadım. Ama eğer bu konuda pazarlık yapmaya hazır değilse ... o zaman bunu daha önce gündeme getirmeliydi. Ismarlama yazılım için bilgili bir müşteri için açık ve makul bir gereksinimdir. 2) "Anatema", OP'nin kaynak kodunu tutmaya çalışırken ... yaptığı şey olurdu. 3) Bununla birlikte, müşterinin açık kaynak istediği (belki de faydalarını gerçekten anlayamadıklarını) belirttiğine dair herhangi bir işaret yoktur >> bunun << OSS'nin en önemli yararlarından biri olan kaynak kodunu istediğinin açık bir ifadesidir. .
Stephen C

3
Bu yorum çok açık. Kendimi bir yazılım geliştiricisi olarak, tüm müşterilerim yazılımı kullanmak ve değiştirmek için özel bir lisans alırlar ve ben de onlara kaynak kodu veririm. Buna ek olarak, diğer projelerde yazdığım kodu tekrar kullanma ve bu projedeki diğer projelerin kodlarını tekrar kullanma hakkını saklı tutarım. Bu onlara para ve ikimizde zaman kazandırır. Kimse bununla bir problem yaşamadı.
dotancohen

1
@dotancohen: Umarım "münhasır olmayan" bir lisans alırlar. Özel bir lisansa sahiplerse, bir sonraki müşterinin kodunu tekrar kullanamazsınız. Aynı kod için "özel" lisansa sahip iki müşteriniz olamaz.
gnasher729

Lisans, kodu kullanmalarına ve değiştirmelerine, ancak paylaşmalarına, satmalarına veya dağıtmalarına izin vermez. Çoğunlukla PHP'nin VPS'lerde çalıştığı için, kod 'sızdırılmışsa' yapabileceğim veya yapabileceğim bir şey yok.
Çalıştığım

5

Bu sizin için çok geç olabilir, çünkü bunu yapmak için sözleşmeye bağlı olarak anlaşmış olabilirsiniz ve farklı müşterilerle karşılıklı olarak uyumsuz şartlar kabul etmiş olabilirsiniz.

Müşterilerinize kaynak kodunuzu vermenin iki yolu vardır. Telif hakkı ve lisanslı mülkiyeti.

Bazı müşteriler kaynak kodunun sahipliğini isteyeceklerdir. Bu, işlemin sonunda size para ödeyecekleri ve karşılığında kendileri için oluşturduğunuz kodun telif haklarını vereceğiniz anlamına gelir. Bunun bir nedeni, fikri mülkiyet hakları için kaynak kodunda önemli bir potansiyel görmeleri ve bunu şirket bilançosunda değerlendirebilir olmalarıdır. Bu senaryoda, müşteriden size bu hakkı veren bir lisans almadığınız sürece, bu kaynak kodun diğer projeler için kullanılmaya devam etme hakkına sahip olmayacaksınız.

Müşteriniz kendinizden 'raf dışı' bir ürün satın alıyorsa, kaynak kodun mülkiyeti yerine yazılımı kullanmak için bir lisans almayı beklerler. Aynı (ya da benzer) yazılımı diğer birçok kuruluşa satmanızı ve daha geniş müşteri tabanı nedeniyle daha düşük bir satın alma maliyetinden faydalanmayı umduğunu umuyor olmalılar.

Bununla birlikte, bu sorudaki durum ikisinin karmasıdır.

İşte yapabilmek istediğim şey. Müşterinize, paylaşılan kodunuzu kullanması (ve değiştirmesi) için bir lisans veririm. Müşteri tarafından test edildiyse, bunun birden fazla projede kullanmış olduğunuz ve bu işi kullanmaya devam ettiğinize dayanan gelecekteki işler için geçerli teklifleri bulunduğunu paylaşılan kodun olduğunu belirtirim. Bunun, müşteriniz için bu projeye daha az zaman harcadığını ve bunun sonucunda daha düşük bir fiyat ödediklerini belirtiniz. Proje tarafından kullanılan diğer paylaşılan kod kütüphaneleri gibi, bu kodu kullanma ve diğer geliştirme ekiplerinin bunu ve bu kütüphaneye dayanan diğer projeleri geliştirmelerine izin verecek bir lisansları vardır. Bununla birlikte, tüm kodun sahipliğini tercih ederlerse, yeni bir değişiklik oluşturmaya istekli olursunuz, ancak bu ek bir masraf olur.

Önceden kendinize taahhüt etmiş olduğunuza bağlı olarak, ücretsiz bir değiştirme işlevi yazmak veya kaynak kodunuzu vermek zorunda kalabilirsiniz.

Unutma, farklı kütüphane türleri var. C ++ 'ta bulunan Standart Şablon Kütüphanesi, kaynak kod seviyesine dahil olan ve genel kodunuzu nasıl kullandığınıza çok benzeyen bir proje çalıştırılabilir dosyasında derlenen iyi bir kütüphane örneğidir.


1
Gönderen Bu yoruma : "sözleşme işleminin gerçekleştiği anlamına gelmez, onlar imzalamadım, kabul etti ve sonra tekrar bu madde ile geldi." - sadece iki gün önce olduğu gibi, müzakerelerin halen devam ettiğini farz ediyorum.

0

Sağladığınız yazılımla birlikte üçüncü bir taraf kullanırsanız, bu üçüncü taraf için kaynak koduna sahip olmadığınız ihtimali vardır. Yine de yazılımı üçüncü tarafların ikilileriyle birlikte şirkete teslim edeceksiniz. Tüm projelerinizde paylaşılan bir çerçeve olarak geliştirdiğiniz kod, size ait olsa bile tamamen üçüncü taraf gibidir. Bu durumda, şirket, çerçevenizin ikilileri ile üçüncü şahıslarla tamamen aynı risk altındadır. Bu durumda neden şirketinize çerçevenizin kaynak kodunu verdiniz? Ona lisans sözleşmesi ve bununla ilgili iyi bir API belgesi sağlayabilirsiniz. Kodunuz endüstride devrim yaratacak bir sonraki büyük şeyi içeriyorsa, bu başka bir hikaye ama genellikle durum böyle değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.