如何實施開源協議,以及如何遵照開源協議的要求

網上有不少開源協議的介紹,可是不多有說明如何在你本身開發的軟件中使用開源協議,保護本身的代碼;以及當你使用別人開源項目時,如何遵照開源協議裏面約定的行爲。文本從github上找了些項目舉例描述下這2個問題。至於各個協議的具體說明網上一搜一大堆,本文再也不描述。php

如何定義本身軟件的開源協議

假如你要開源本身寫的一個軟件,那你須要進行2步來實施開源協議:python

第1步: 在項目的根目錄放置一個LICENSE或者COPYING文件,這個文件裏面是你所使用的開源協議的具體細則,好比你用的是MIT License協議,你只須要到網上拷貝一個MIT License協議正文進來就能夠了,好比vsa這個項目,使用的是Apache License 2.0開源協議,協議的正文在這裏git

第2步: .在你項目的每一個源文件中加入版權聲明,好比vsa項目中的這個文件加入了以下的版權聲明。github

#!/usr/bin/env python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright 2013 Mellanox Technologies, Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.


from twisted.web import xmlrpc, server
from vsa.client.gui.vsaxmlrpc import VsaXmlRpc
...

上面的2步中,第一步是必須的,實施起來比較簡單,拷貝一個對應的協議正文便可。第二步不是特別必須,並且沒有嚴格約定如何描述,甚至有些項目裏面沒有在源碼中寫版權信息,固然規範的操做應該是每一個源文件中都加。web

由於第二步比較靈活,致使不少coder有點搞不清該怎麼寫,下面我舉幾個例子描述下。chrome

GPL協議 open-iscsi(c語言) 他是將協議全文貼上
GPL協議 pciutils(c語言) 他僅描述了下使用的協議
MIT協議 python-markdown2(python語言) 他是給出了license的連接地址
MIT協議 utils(php語言) 他是給出了license的連接地址
MIT協議 uuid(php語言) 比較詳細的版權描述
MIT協議 docker-volume-ipfs(go語言) 代碼中沒有描述版權信息docker

因此第二步在源碼中描述版權,實際上是比較隨意的,只要能描述清楚做者信息以及使用的開源協議類型便可。express

補充說明:apache

有一些開源協議描述瞭如何在代碼中使用該協議,因此當使用這樣的協議時,應按照協議規定的方式在代碼中描述版權信息。好比上面的vsa項目中使用了Apache License 2.0這個協議,這個協議的正文的最後部分描述瞭如何在源碼中使用協議聲明,參見APPENDIX: How to apply the Apache License to your work的描述.vim

使用別人開源的代碼

描述完了如何經過開源協議保護本身的代碼,下面描述下如何尊重別人的開源項目。

大部分開源協議都描述了在引用開源代碼時,應保留源做者的版權信息,這也就是說若是你引用了開源代碼,應保留代碼中原來的版權描述,就是上述第二步中,開源做者加到源碼裏面的版權說明。好比vsa項目中這個(iscsi_discovery)文件,是別人開源的代碼,vsa將這個代碼放入本身項目中時,保留了iscsi_discovery源做者Voltaire Ltd. Author: Dan Bar Dov <danb@voltaire.com>的版權信息,這就是對開源協議的遵照。

連接別人開源項目編譯後的二進制文件

在你本身的項目中,多是以動態連接庫的形式引用開源項目,此時通常的作法是在你的軟件的某個地方描述下你引用的這個開源項目便可,通常是在本身軟件的幫助或者關於裏面介紹下所引用的開源項目,以表尊重。好比點開chrome瀏覽器裏面的"關於",在最下面chrome有一句話Google Chrome is made possible by the Chromium open source project and other open source software.,點擊open source software這個連接就能夠看到其所引用的開源項目。

總結

此文僅是拋磚引玉,大部分開源協議按照上面的步驟實施便可,有部分開源協議還有一些細節,具體的細節要看各個協議的描述,這個頁面彙總了目前比較常見的開源協議。

 

原文引用: http://maming.org/post/1502696239

相關文章
相關標籤/搜索