題:
我可以改寫我為工作而編寫的代碼並將其作為開源發布嗎
KGS
2019-02-14 16:44:06 UTC
view on stackexchange narkive permalink

最近,我一直在努力對第三方進行一些API調用。我找不到任何可用的東西,所以我必須從頭開始。現在,我想知道是否可以重寫所有特定於平台的部分並將其作為開源發布(我想這將更改約50%的代碼)?

現在另一家公司給我的API文檔說“專有和保密”,但我認為這僅適用於該文檔本身。另外,當我有一次向他們尋求幫助時,他們告訴我他們不支持我使用的語言。我尚未簽署專門針對此的保密協議,關於客戶的數據和信息(而這些不是客戶),我有一個一般的保密協議。我有點猶豫要問我公司的某人,因為我在這類事情上有0年的經驗,而且我不知道他們是否會對此持負面看法。

編輯

謝謝大家的建議。我確實知道我編寫的代碼屬於我的雇主,但是我認為,由於我們所做的大部分工作都依賴於平台,因此我必須對其進行重大重組,以便使其能夠獨立工作,而其餘代碼可以被認為是一種常見的工作方式。東西。至於將成為包裝器的專有API,它具有wsdl和xsd模式,可以公開訪問這些模式(儘管您必須知道從何處獲取它們),基於此人們可以弄清楚如何使用它們。我想最好的事情就是和某人說話。.我會讓你知道事情的進展

評論不作進一步討論;此對話已[移至聊天](https://chat.stackexchange.com/rooms/89744/discussion-on-question-by-kgs-can-i-adapt-code-i-wrote-for-work-並釋放它)。
您問世界上哪個位置?
有關法律SE的問題:https://law.stackexchange.com/questions/33987/can-copying-simple-general-code-cause-copyright-infringement-and-is-it-even-pos
九 答案:
Mason Wheeler
2019-02-14 19:42:24 UTC
view on stackexchange narkive permalink

我實際上已經做到了。有一次,我在工作中編寫了一些代碼,我意識到它通常是有用的,遠遠超出了我正在從事的特定項目的範圍。因此,我問我的老闆(也是CEO,這是一家非常小的公司)是否可以將其作為開源發布,他說可以,這很好。

注意: 最後一點非常重要。 。作為一名員工,我為公司編寫的代碼是“為租用而製”,這意味著我的創意產品不是我的財產,但我老闆的。因此,未經法定所有人的許可,將其發布至少是處以解僱罪,也很可能是犯罪。

(IANAL,但這是一個相當容易理解且廣泛理解的接受的適用美國法律解釋。)

+1是,這是能夠釋放代碼的唯一方法。您需要獲得** IN WRITING **公司的許可,表示您可以修改該代碼以供公眾使用。
如果它承認從法律上來說,如果您不使用工作提供的任何資源而獨立地重新創建作品,則在法律上您不需要任何許可,則更好的答案會更好。
@Aaron實際上並非完全如此。一些公司(至少用於)迫使工程師(軟件和其他)簽署合同,這些合同指定他們所創造的任何IP /事物屬於公司財產。無論您是在公司資源的幫助下,在公司時間的開/關還是公司設備的開/關都無關緊要。您創建的任何東西都屬於他們。我已經有一段時間沒有聽到任何消息了,但這仍然是OP需要評估的事情。
注意:在許多司法管轄區,口頭協議具有法律約束力。取得書面許可總是很容易辯護,但是法律上可能並不要求這樣做。即使在口頭協議不具有約束力的司法管轄區中,如果您將談話內容記錄在音頻中代替簽訂的合同,法官可能會選擇以類似方式對待它。
無法充分說明@DavidK的評論。**獲取書面信息**
-1
此外,如果您能找到一個可以與一個非營利組織配合使用的現有良好開源項目,那麼對於說服老闆也很有幫助。通常,他們永遠不會對一項核心能力的東西說“是”,但是如果它是切線的,沒有被貨幣化,然後捐贈給了非營利組織,這可能是稅收沖銷(一種將通常無法貨幣化的東西貨幣化的方法))
@JohnVandivier“口頭協議僅值其所寫的內容”,永遠不要相信口頭協議。即使記錄下來,辯方也可以指出,創建該人從未說過的東西的偽造錄音一點也不困難。正是由於這個原因,錄音經常被扔出法庭。錄音使小報草稿質量提高,法律辯護也不夠好
@JohnVandivier [this](https://www.sciencedaily.com/releases/2003/04/030411071141.htm)寫於2003年!從那以後,它變得更容易了。當有人弄亂了腳本並且我不必一定要帶回去重新錄製時,這真的很有幫助(作為音頻工程師,這很有趣)。
這個!此外,它可以說服公司,如果您願意提供他們的名字並將其作為免費營銷推銷給他們。但是即使那樣,也要問!
@user87779更不用說,如果對話夥伴不同意錄音,通常是非法的,並且在某些司法管轄區中,也僅出於這個原因而被法院忽略。
-1
-1
@JanusBahsJacquet是的,但有些不同。我覺得最清晰的表達方式是:需要大量實踐(接近專家),並且需要大量工作以無法證明的方式偽造簽名或電子郵件。只需帶上朋克樂隊朋克音樂並訪問互聯網(逐步說明)即可偽造唱片。但是你提出了一個好觀點。技術正在加速發展,很快,為非專業人士偽造簽名,公證郵票,數據庫和電子郵件來源將變得同樣容易。希望(最有可能的)是,與此同時對策也將加速。
在命令鏈中需要走多高?應該獲得首席執行官的許可,還是直接上司就足夠了?
理論上你是正確的。但是,從實際的角度來說:如果它很小而且相對微不足道,並且不會以任何方式積極損害公司的業務,那麼我懷疑公司是否會就這樣的事情起訴您。他們可能永遠都找不到。
gnasher729
2019-02-14 16:51:24 UTC
view on stackexchange narkive permalink

您為工作而編寫的代碼是公司的財產。以開源或其他方式發布它會侵犯版權,並被解僱。假設該代碼是開源的,而實際上卻歸您的公司所有,這也會給使用此代碼的任何人帶來法律上的噩夢。

“修改”代碼對您沒有幫助。您正在創建衍生作品。在復制您的衍生作品之前,這就是侵犯版權。

評論不作進一步討論;此對話已[移至聊天](https://chat.stackexchange.com/rooms/89775/discussion-on-answer-by-gnasher729-can-i-adapt-code-i-wrote-for-work-然後釋放)。
John Vandivier
2019-02-14 22:39:42 UTC
view on stackexchange narkive permalink

我不同意這裡的多數意見。顯然,大多數人都說您不應該這樣做。我不一定對此表示不同意見,但是在很多情況下,潛台詞和明顯的信息是您在法律上不能這樣做,而不僅僅是您不應該這樣做。在您的情況和一般情況下,該消息的法律正確性還很遙​​遠。

很高興看到,儘管我是少數派,但並不是那麼晦澀,沒有其他答案與我的觀點相符,或者所有與我的觀點一致的答案都被否定了。我同意 @ Kittoes0124信息的精神。

作為少數派,我們當然應該從謹慎的多數中學到一些東西:許多開發人員因侵犯版權或其他原因而被解僱,甚至更糟。侵犯知識產權。不幸的是,結果導致社區的防禦能力過高,結果是開源社區和整個社會受到損害,這得益於強大的OS社區。

一個apropos評論引用了“潔淨室設計”,它是一種法律上受人尊敬且經過實踐檢驗的功能複制方法,不會侵犯版權。請注意鏈接的文章中有關潔淨室設計的內容,並帶有特定的法律案例支持

潔淨室設計通常是最佳做法,但法律並不嚴格要求。在NEC Corp.訴Intel Corp.(1990年)一案中,NEC尋求針對英特爾指控NEC的工程師只是在其NEC V20克隆中復制8086處理器微代碼的聲明性判決。一名美國法官裁定,雖然NEC的內部代碼的早期內部修訂確實侵犯了版權,但實際上進入NEC產品的後一個版本雖然是前者的衍生版本,卻與Intel的微代碼有很大不同,因此可以認為該版本不包含以下內容:侵犯版權。

這是美國的正確標準。它基於判例法,而不是開發人員的意見或軼事。您可以參考專有代碼和個人經驗作為參考,甚至可以將文字代碼用作具體的起點,但是最終代碼必須“足夠不同”。

這似乎是模棱兩可的和任意標準,因為事實就是如此。法官對規則的解釋寬大,但規則很明確。普遍的看法是“安全勝於遺憾”,這就是為什麼許多專業人員遺憾地避免公開顯示任何代碼的原因。通常,尋求內部公司的批准更為明智,風險也較小,但這在法律上通常不是必需的。如果您簽署了一些其他文件,或者您所在的管轄區有特殊法律,則可能在法律上是必不可少的。

在您的特定情況下,重要的一點是,您提議的代碼與以下代碼之間存在重要差異。原始代碼。您聲明原始代碼是特定於平台的,並且建議提供獨立於平台的代碼。這意味著遺留代碼無法支持某些用例。這是證明明顯差異的一種方法。您可以通過使解決方案有意與舊平台不兼容來進一步增強這種差異。這將意味著根本沒有用例重疊。

我不是律師,這也不是法律建議。我確實建議您決定是否要這樣做,請諮詢律師。我看到美國有很多法律先例可以支持這樣一個事實,那就是在您編寫代碼時,您自然會汲取先前的經驗和知識,包括參考具體的代碼示例,但這並不意味著開源是非法的。

不必擔心使用相同的語法。許多語言和庫僅提供一種完成某件事的語法方法,並且對於函數,變量等存在最佳實踐,因此對於功能複製而言,即使使用相同的變量名也不可避免。在這種情況下,可能不會出現重大差異,因此不是合理的要求。

請記住,如果您簽署了特定的NDA或某些其他文檔,則這些一般性概念將是完全不可抗拒的。 p>另外兩個相關說明。首先,在美國,侵犯知識產權的行為受到限制(來源):

侵犯版權可能導致民事和/或刑事責任。刑事訴訟時效為五年,而民事訴訟時效為三年。

第二點是,知識產權只有4種(AFAIK / IANAL) ():

  1. 版權
  2. 商標
  3. 專利
  4. 商業秘密
  5. ol>

    如果您要處理的IP不屬於1-3類,那麼修改代碼供自己使用的法律問題就更少了。在我看來,如果X是其他軟件中的常見模式或功能,特別是如果它已存在於開源項目中,那麼任何人都可能認為X是商業秘密。

至少(在歐盟)也有數據庫權限。鑑於我又提出了一個建議,可能還會有其他建議。
我同意。必須指出,我的評論是針對美國的。坦白地說,我希望其他答案已經指出了它們適用的管轄範圍。如果有人不知道,還有一個相關說明是,美國和歐盟的專利審查員實際上進行了交流,以確保專利適用於這些領域,但有一些例外。
這是一個非常徹底且經過深思熟慮的答案,並且是很好的背景信息!我仍然強烈建議OP首先讓他們與雇主核實,因為即使他們想做的事情最終在法庭上受阻,他們可能也不想被雇主提起訴訟(也不會被解僱),可能會繼續將其送上法庭)。避免這種可能性的最佳方法是先檢查。
@bob絕對同意。理想情況下,OP永遠不需要上法庭。很高興它包含一些有用的信息!
您應該注意,當您沒有雇主的權限來發布代碼時,就是這種情況。如果您詢問並且他們說是,您甚至不必擔心IP或版權。
比我說的要好得多。我注意到的是,整個社區(在此以及在我的工作領域)似乎都相信為公司編寫的所有代碼都屬於類別4。
@Kittoes0124那是因為我見過的每份僱傭合同都包含一份合同。(誠然,我只看過大約10個。)
如果您是原始代碼的開發人員,則不能真正進行無塵室設計。
這是到目前為止唯一正確的答案
該答案表明它不同意大多數,然後繼續與他們達成共識,即您不應該採用您的雇主守則。然後,它包含有關潔淨室設計的有用建議(即“不適應”)。我會刪除所有關於不同意的內容,因為它似乎沒有添加任何內容。
這是一個很好的答案!您可能有興趣查看https://law.stackexchange.com/?tags=intellectual-property
回顧一下,我認為我不同意多數意見,這為潛在的疏忽用戶增加了寶貴的背景信息,他們可能會接受此信息而沒有意識到,這可能會引起爭議。此外,如果有人閱讀了NEC Corp.訴Intel Corp.(1990)上的文本,並且不理解其授權進行某種改編的方式,我建議他們再花一點時間來複習該文本。
eMBee
2019-02-14 20:07:23 UTC
view on stackexchange narkive permalink

簡短的回答是未經明確許可

您需要問問上級。您的經理很可能需要將問題向上傳遞。

如果您很幸運,公司將為此提供處理程序。如果不是這樣,找出以前是否做過這可能會有所幫助。問你的同事。先前發布代碼的示例是一個非常有用的先例。來自另一家公司的示例也可能會有所幫助,來自自由軟件和開放源代碼社區的資源也將對流程和含義進行解釋。

在發布任何代碼之前,公司需要對其進行審核,以確保代碼完全歸公司所有。

對於更詳細的法律含義和資源以幫助簡化流程,您可能會在 https://opensource.stackexchange.com/

上獲得更多有用的答案
Kittoes0124
2019-02-14 21:34:24 UTC
view on stackexchange narkive permalink

儘管到目前為止提供的答案是很好的建議,但我認為它們走得太遠了。您編寫的代碼屬於您的雇主,但他們通常不擁有在實施過程中獲得的知識和技能。

讓我們假設您的任務是使用提供給以下用戶的專有API來實現隨機數生成器您由第三方;為簡單起見,此API由單個簽名 public byte [] GetRandomBytes(int length)組成。您需要使用您選擇的開放源代碼算法(例如PCG或Xoroshiro)實現一個新類 RandomNumberGenerator ,該類公開了APIs public long GetNextInt64() public long GetNextInt64(long lowerBound,long upperBound)

您的雇主將擁有您編寫的特定代碼,但這幾乎就結束了。沒有任何事情可以阻止您以後實現自己的RNG版本,該版本依賴於 / dev / random 作為隨機字節的源。使用不同的算法和函數簽名(在這種情況下有意義)可能是一種明智的防禦措施,但是越來越重要的是,這取決於開放源材料。

肯定有很多到目前為止,大多數情況下應該遵循不要做!的建議,但要求美國程序員做的絕大多數事情屬於常識類別。

為什麼要讓自己說服當前的雇主您發布的代碼與工作中的代碼明顯不同呢?(順便說一句,編寫代碼不是常識)
-1
我同意您的第一句話,但不同意您的榜樣。如果為雇主實施了發電機包裝器,則知識產權的價值在於包裝器中而不是發電機中。如果您擴展包裝器以支持其他生成器,那麼它仍然是屬於您雇主的包裝器的派生作品。如果您從頭開始重寫以實現相同的邏輯,那麼從IP法的角度來看,它仍然是衍生產品。如果您既不使用代碼,也不使用“代碼背後的想法”,那麼您一開始就沒有任何內容可發布。
@zakinster廢話,想想您在這裡暗示什麼,在我的示例中,沒有公司可以聲稱“代碼背後的想法”,因為它不是原始的。如果“ X”想法已經有了一個開源實現,那麼就不會因為他們在正式工作中實現了“ X”版本而禁止編寫自己的派生代碼。在我的示例中描述的接口具有許多現有的實現,以至於公司不可能合法地主張該概念。再說一遍,應該保持謹慎,但不要過分……
@Kittoes0124問題是有關發布已存在的內容。如果該東西既不是原始代碼,也不是代碼背後的原始想法,那麼要發布的內容是什麼?如果這是一部新的無關的作品,既不使用現有代碼,也不使用任何原始想法,而僅使用技能製作,那麼它就是一部新作品,那麼就不會有問題了。“我可以發表”這個問題的存在就意味著新作品與現有作品之間的聯繫,無論是實現還是構思,兩者都屬於原始所有者。
@zakinster在軟件開發中存在一個非常普遍的問題,其中的X算法無法以Y語言獲得。例如,金融業廣泛使用公共領域的校驗位算法(例如[mod10](https://en.wikipedia.org/wiki/Luhn_algorithm)),以便為諸如帳戶之類的事物添加一層驗證和路由號碼;這些不是任何標準庫的一部分。為公司實施這種算法完全不會阻止我創建自己的開源庫。我為什麼要?這樣其他人就不會被迫學習我的所作所為。
@Kittoes0124是的,我同意,如果您不重用任何東西,從理論上講,您可以。但我挑戰其背後的動機。我的觀點是,如果有發布某項內容的動機,則意味著存在重用的價值,並且該價值屬於原始所有者。這不是100%正確,例如,在您的情況下,沒有價值可重複使用,而只有Y技能和X知識。但是我仍然認為這是一個非常具體的情況,通常在問這個問題時,動機=重用價值。
讓我們[繼續聊天中的討論](https://chat.stackexchange.com/rooms/89740/discussion-between-kittoes0124-and-zakinster)。
Robert Andrzejuk
2019-02-15 15:43:16 UTC
view on stackexchange narkive permalink

在我的公司中,我們有一個開源政策。

要使用開放源代碼,必須清除許可證才能使用,並規定所有限制。

要對開放源代碼做出貢獻,必須準備並提交代碼以供審核並獲得批准。

您需要在公司中查找政策。

我相信這是最正確的答案。為避免任何可能的問題,在將其發佈到開源之前,請先徵得您公司的批准。
zakinster
2019-02-15 00:31:15 UTC
view on stackexchange narkive permalink

我是否可以改編我為工作而編寫的代碼,並將其作為開放源代碼發布

永遠不要未經知識產權所有人(可能是您的雇主)的明確授權,您的客戶或雇主的客戶。

程序員不是代碼猴子,程序中的價值不僅在代碼中,而且在實現邏輯中,即代碼背後的原始思想

如果您使用現有代碼的任何部分來生成新代碼,甚至使用代碼背後的任何原始想法,那麼您正在生成的衍生作品都必須經過原始所有者的授權工作。

如果您既不重複使用代碼,也不重複使用最初的想法,那麼您一開始便無所事事,除非您僅使用技能來製作與之無關的新作品。

David Thornley
2019-02-15 03:02:45 UTC
view on stackexchange narkive permalink

如果您希望代碼成為開放源代碼,則需要合法獲取許可證。使用無效的源代碼許可證發布代碼以便可用,這是為真誠使用代碼的人設置合法的定時炸彈。他們可能被起訴要求賠償損失,並可能獲得禁止使用受版權保護的材料的禁令。您不想這樣做。您需要使發行版明確合法。這必須由具有足夠權限的人員來完成,而您需要確定是誰。這應該被書面和簽字。口頭協議從技術上講已經足夠,但是很難證明這種口頭協議,而且容易讓人說可以否認他或她說了這樣的話或意思是這樣,因此提起訴訟是很可能的。

我很高興看到有人試圖以開放源代碼許可證發佈軟件,但是以無效許可證發佈軟件是一個壞主意。

Basile Starynkevitch
2019-02-17 22:18:14 UTC
view on stackexchange narkive permalink

我不是律師。但是,我是一名軟件開發人員(在法國),並且確實(專業地)為開源項目做出了貢獻,甚至有時還專門開發開源軟件。

您需要獲得雇主的許可。

請記住,源代碼通常受版權或商業秘密保護,並且您在工作場所編寫的源代碼屬於(除非某些合同有書面規定)。在某些工作合同中,您編寫的每個代碼(甚至在家中)都屬於雇主。您是在辦公室用C語言編寫的)。但是,即使是這種情況,您也最好(至少通過電子郵件)詢問老闆,並徵得他/她的許可。

在歐洲,算法通常無法得到保護(但是其源代碼實現可以並且通常是)。在美國,我聽說甚至算法都可以申請專利。

順便說一句,您不希望老闆遇到麻煩。因此,無論如何,您應該告知並詢問他。他可以決定幫助您正式將該代碼作為開放源代碼,或者他可以提醒您可能給自己帶來麻煩。如果您獲得了老闆的(至少是電子郵件)書面批准,那麼至少您是真誠的行事。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...