將開源軟體(比如mysql)的源碼進行修改後必須也開源嗎?
比如,將mysql源碼修改後性能有了很大的提升,拿到市面上銷售,但不提供源碼,這合法嗎?
如果我自己生產了一個硬體設備,需要一個操作系統,但linux不適用。我將linux內核進行了修改,作為生產的硬體設備的操作系統使用,但不提供源碼,這是否合法?
你舉的兩個例子都是GPL的,GPL要求對產品的用戶提供源代碼,否則侵犯原始代碼的版權。
對於GPL:如果你發布了你的二進位代碼,那麼你需要使用GPL發布你的源碼
對於LGPL:如果你發布了你的二進位代碼,那麼你需要使用LGPL發布「相關」源碼
對於AGPL:基本上等於你必須使用AGPL發布你的源碼
但!是!
以上的說法僅僅是根據相關協議的,但是法律不一定支持相關協議的主張。 目前,與gpl相關的訴訟中,唯一一次貌似gpl方獲得勝利的訴訟,是oracle vs google…………好吧並沒有,是google主動放棄的。
中國就更沒有gpl方勝訴的例子。
真tm尷尬。
所以怎麼說呢,你的兩個例子,在中國是合法的。在美國…………大概也合法吧。
阮一峰老師有一個圖,很簡單的解釋了你的問題。
你需要了解開源軟體的license(許可證或者協議),其你在使用的權利與所遵循的責任都在許可證內。
MySQL是GPL許可證授權的,GPL許可證要求,你使用的MySQL只要被修改了並且分發軟體就必須開放源代碼,所以你說的第一個問題是不被允許的,即你可以銷售但不能不開放源代碼。第二個例子與第一個例子一樣,因為Linux也是GPL協議。如果你想做可以閉源的並且商業化的,看上圖,MIT BSD Apache這些寬鬆協議都是可以的。
=============
PS:上邊用了阮一峰老師的圖,他對自己文章的協議要求是:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證),所以我們使用後只要保證署名即可。
你舉的兩個例子都不合法。
另外這個第二個例子,首先如果你的修改能進mainline,其實很多時候能減少你自己的維護成本。所以未必要追求改了不開源。其次如果你的修改可以以一個內核模塊的形式實現,這麼做似乎可以繞開GPL限制。
我覺得這得憑良心吧,但是良心這東西......前段時間不是有國內某互聯網公司拿開源代碼搞得東西申請專利么。
這個,關於linux那個,你可以去看看路由器開源系統openwrt和linksys之間的歷史。
沒有法律要求你這麼做,但是開源協議是這麼要求的,所以……看你自己咯取決於你用的開源軟體的license。
關鍵看你怎麼銷售,如果你是賣軟體的license收費,類似微軟的SQL server,你必須開源。如果你是賣類似阿里雲的sql服務,不需要開源。賣硬體時,硬體里的gpl軟體必須開源。
推薦閱讀:
※高並發的情況下(100W),數據先存在Redis保證快速響應,然後怎麼往MySql裡面寫?
※這句sql語句怎麼理解?
※在SQL中,如何查詢某一欄位中最大值的數據?
※你遇到過哪些MySQL的坑?
※mysql索引最左匹配原則的理解?