日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
82天突破1000star,項(xiàng)目團(tuán)隊(duì)梳理出軟件開源必須注意的8個(gè)方面

近期,我們?cè)贕itHub上開源了微服務(wù)任務(wù)調(diào)度框架SIA-TASK,82天,收獲了1000+個(gè)star!由于這是SIA團(tuán)隊(duì)第一次開源項(xiàng)目,開源的相關(guān)工作,團(tuán)隊(duì)之前并沒有太多的經(jīng)驗(yàn),因此我們特別整理了本次開源的各種記錄事項(xiàng),希望給今后開源的項(xiàng)目做參考。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都網(wǎng)站制作、海鹽網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、海鹽網(wǎng)絡(luò)營銷、海鹽企業(yè)策劃、海鹽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供海鹽建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

一、開發(fā)

在開源項(xiàng)目的開發(fā)過程中要注意以下幾點(diǎn):

  • 首先,要給自己的項(xiàng)目取一個(gè)合適的名字,取名規(guī)則這里不再贅述,需要強(qiáng)調(diào)的一點(diǎn)是:項(xiàng)目名稱不能與GitHub上已開源過的項(xiàng)目名稱相同。
  • 其次,選擇合適的編程語言。
  • 再次,編碼過程中要注意代碼的規(guī)范。

最后要說的就是開源協(xié)議的選擇了,目前最流行的開源協(xié)議有以下六種:GPL、BSD、MIT、Mozilla、Apache和LGPL。

不同的開源協(xié)議之間的差別還是挺大的,具體如何選擇,可以參考一張圖看懂開源協(xié)議(https://blog.csdn.net/cwt19902010/article/details/53736746),如果這些常用的開源協(xié)議都不適合你的項(xiàng)目,你也可以自己寫一個(gè)自己的開源協(xié)議。

為了更方便查看開源協(xié)議選擇圖,參考圖如下:

以Apache License Version 2.0協(xié)議為例,比較常用協(xié)議與Apache協(xié)議沖突情況,沖突圖如下:

二、協(xié)議

項(xiàng)目開發(fā)完成之后,需要梳理出項(xiàng)目中使用到的協(xié)議(包含項(xiàng)目引用的組件中用到的協(xié)議),此處推薦使用maven許可證插件。插件配置參見License Maven Plugin(https://www.mojohaus.org/license-maven-plugin/),maven許可證插件在主pom中配置示例如下(此處開源協(xié)議采用Apache 2.0)

 
 
 
  1.  
  2.      
  3.          
  4.             Apache License, Version 2.0 
  5.             http://www.apache.org/licenses/LICENSE-2.0.html 
  6.             repo 
  7.          
  8.      
  9.  
  10.      
  11.           
  12.              org.codehaus.mojo 
  13.              license-maven-plugin 
  14.              1.13 
  15.               
  16.                   
  17.                  ${main.basedir} 
  18.                  LICENSE-3RD-PARTY 
  19.                  /org/codehaus/mojo/license/third-party-file-groupByLicense.ftl 
  20.                  true 
  21.                  ${main.basedir}/LICENSE-3RD-PARTY.properties 
  22.                  ${main.basedir}/LICENSE-3RD-PARTY.properties 
  23.                   
  24.                      Apache 2.0|ASL, version 2|http://www.apache.org/licenses/LICENSE-2.0.txt|http://asm.ow2.org/license.html|The Apache License, Version 2.0|Apache License|Apache License Version 2|Apache License Version 2.0|Apache Software License - Version 2.0|Apache 2.0 License|Apache License 2.0|ASL|Apache 2|Apache-2.0|the Apache License, ASL Version 2.0|The Apache Software License, Version 2.0|Apache License, Version 2.0|Apache Public License 2.0 
  25.                      BSD|The BSD 3-Clause License|The BSD License|Modified BSD License|New BSD License|New BSD license|Two-clause BSD-style license|BSD licence|BSD New|The New BSD License|BSD 3-Clause|BSD 3-clause 
  26.                      MIT|MIT License|The MIT License 
  27.                      LGPL|LGPL, version 2.1|GNU Library or Lesser General Public License (LGPL) V2.1|GNU Lesser General Public License (LGPL), Version 2.1|GNU Lesser General Public License, Version 2.1|LGPL 2.1 
  28.                      CDDL|CDDL+GPL|CDDL+GPL License|CDDL + GPLv2 with classpath exception|CDDL License|CDDL 1.0|CDDL 1.1|COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0|Common Development and Distribution License (CDDL) v1.0 
  29.                      EPL|Eclipse Public License - Version 1.0 
  30.                      GPL|GPL2 w/ CPE|GPLv2+CE|GNU General Public Library 
  31.                      MPL|MPL 1.1 
  32.                      Public Domain 
  33.                      Common Public License|Common Public License Version 1.0 
  34.                      CC0|CC0 1.0 Universal|Public Domain, per Creative Commons CC0 
  35.                      Unknown License|Unknown license 
  36.                   
  37.  
  38.                   
  39.                  true 
  40.                   
  41.                  ${main.basedir}/lic/licenses.xml 
  42.                  ${main.basedir}/lic/licenses/ 
  43.  
  44.                   
  45.                  apache_v2 
  46.                  2019 
  47.                  sia 
  48.                  task 
  49.                   
  50.                      src/main/java 
  51.                      src/test/java 
  52.                   
  53.                   
  54.                      **/*.java 
  55.                      **/*.xml 
  56.                      **/*.sh 
  57.                      **/*.py 
  58.                      **/*.properties 
  59.                      **/*.sql 
  60.                      **/*.html 
  61.                      **/*.less 
  62.                      **/*.css 
  63.                      **/*.js 
  64.                      **/*.json 
  65.                   
  66.                  true 
  67.                  true 
  68.                  false 
  69.                  true 
  70.                  << 
  71.                  >> 
  72.                  == 
  73.  
  74.                   
  75.                  ${main.basedir}/LICENSE 
  76.               
  77.           
  78.           
  79.              org.jasig.maven 
  80.              maven-notice-plugin 
  81.              1.0.6.1 
  82.               
  83.                  false 
  84.                  https://source.jasig.org/licenses/NOTICE.template 
  85.                   
  86.                      https://source.jasig.org/licenses/license-mappings.xml 
  87.                   
  88.               
  89.           
  90.       

配置完成之后,執(zhí)行如下命令即可生成相應(yīng)的協(xié)議到對(duì)應(yīng)的文件,命令如下

 
 
 
  1. #### Updates (or creates) the main project license file according to the license defined in the licenseName parameter.
  2. `mvn license:update-project-license`
  3. #### Generates a file containing a list of all dependencies and their licenses for a multi-module build.
  4. `mvn license:aggregate-add-third-party`
  5. #### Downloads the license files associated with each dependency for a multi-modules build.
  6. `mvn license:aggregate-download-licenses`
  7. #### Generate NOTICE?
  8. `mvn notice:generate`

項(xiàng)目開源時(shí),需要在源文件的頂部添加一個(gè)保護(hù)許可,修改、檢查、刪除源文件頭部保護(hù)許可命令如下:

 
 
 
  1. #### how to generate/update source code header?
  2. ## Updates the license header of the current project source files.
  3. mvn license:update-file-header
  4. ## Checks the license header of the current project source files.
  5. mvn license:check-file-header
  6. ## Remove any license header of the current project source files.
  7. mvn license:remove-file-header

執(zhí)行完上述命令之后,會(huì)生成幾個(gè)協(xié)議文件,其中有兩個(gè)關(guān)鍵的文件:

 
 
 
  1. LICENSE文件:存放當(dāng)前開源項(xiàng)目中用到的開源協(xié)議信息。
  2. LICENSE-3RD-PARTY文件:組件使用到的協(xié)議。

在LICENSE-3RD-PARTY文件中查看組件使用的協(xié)議,參考前面介紹的各協(xié)議沖突情況,查看看組件中用到的協(xié)議是否與當(dāng)前開源項(xiàng)目選擇的開源協(xié)議有沖突,如果有沖突,需要替換掉協(xié)議沖突的接口。

三、安全掃描 

安全掃描是項(xiàng)目開源流程中必不可少的一步,安全掃描關(guān)注的點(diǎn)主要有以下幾個(gè):

  • 組件層面安全問題。比如:組件是否存在遠(yuǎn)程代碼執(zhí)行風(fēng)險(xiǎn)、XXE風(fēng)險(xiǎn)等。
  • 代碼層面安全問題。比如:RequestMapping上請(qǐng)求未限制方法等。
  • 公司敏感信息是否外泄。比如:數(shù)據(jù)庫連接信息、郵箱信息等被暴露。

備注:安全掃描工作由安全部·安全服務(wù)團(tuán)隊(duì)的同事負(fù)責(zé)完成,項(xiàng)目開發(fā)完成之后,可聯(lián)系安全服務(wù)團(tuán)隊(duì)的同事進(jìn)行代碼安全掃描工作。四、文檔 

README文檔相當(dāng)于開源項(xiàng)目的一個(gè)門面,如果README文檔寫得好,能夠讓用戶更了解開源項(xiàng)目的功能,減少用戶的使用成本??梢哉fREADME文檔寫得好的開源項(xiàng)目不一定是好的開源項(xiàng)目,但是好的開源項(xiàng)目的README文檔寫得一定好。 下面簡(jiǎn)單介紹下README文檔的編寫規(guī)范。綜合GitHub上很多大型開源項(xiàng)目的README文檔,個(gè)人認(rèn)為READEME文檔主要由以下幾部分組成:1)項(xiàng)目介紹項(xiàng)目介紹是為了讓別人快速了解項(xiàng)目。主要內(nèi)容包括項(xiàng)目背景、項(xiàng)目簡(jiǎn)介。2)項(xiàng)目架構(gòu)項(xiàng)目架構(gòu)主要介紹項(xiàng)目的實(shí)現(xiàn)方式,可以讓用戶更了解項(xiàng)目的實(shí)現(xiàn)原理。 3)項(xiàng)目集成方式 項(xiàng)目集成方式即項(xiàng)目開發(fā)指南,可以列出項(xiàng)目的部署方式,或者是jar包的使用方式。4)項(xiàng)目使用指南項(xiàng)目使用指南也就是告訴用戶怎么使用項(xiàng)目。最好是附上每一步的使用截圖信息,這樣能減少后期跟用戶之間的溝通成本。5)版本說明此處需要告訴用戶使用哪個(gè)版本更穩(wěn)定。6)版權(quán)說明版權(quán)信息可以用于作者的維權(quán),保護(hù)作者版本信息的合法權(quán)益。7)項(xiàng)目交流方式項(xiàng)目交流方式部分可以留下開源作者或者是組織的微信、微博、郵箱等聯(lián)系方式,方便用戶與開源作者進(jìn)一步技術(shù)溝通。 五、版本 

GitHub上開源的項(xiàng)目需要有個(gè)版本號(hào),版本格式為:
主版本號(hào).次版本號(hào).修訂號(hào),版本號(hào)遞增規(guī)則如下:

  • 主版本號(hào):當(dāng)你做了不兼容的 API 修改;
  • 次版本號(hào):當(dāng)你做了向下兼容的功能性新增;
  • 修訂號(hào):當(dāng)你做了向下兼容的問題修正。

 先行版本號(hào)及版本編譯元數(shù)據(jù)可以加到“主版本號(hào).次版本號(hào).修訂號(hào)”的后面,作為延伸。

更形象的解釋如下
:標(biāo)準(zhǔn)的版本號(hào)必須采用 X.Y.Z 的格式,其中 X、Y 和 Z 為非負(fù)的整數(shù),且禁止在數(shù)字前方補(bǔ)零。X 是主版本號(hào)、Y 是次版本號(hào)、而 Z 為修訂號(hào)。每個(gè)元素必須以數(shù)值來遞增。例如:1.9.1 -> 1.10.0 -> 1.11.0。
備注:
開源版本規(guī)范引自
GitHub命名規(guī)范:語義化版本2.0.0

https://semver.org/lang/zh-CN/

六、開源

做完上述幾步的工作之后,我們就可以把項(xiàng)目上傳到GitHub上進(jìn)行開源了。GitHub的使用網(wǎng)上有很多文章介紹,這里不再贅述,可以參考 在GitHub上參與開源項(xiàng)目日常流程https://blog.csdn.net/five3/article/details/9307041

七、后期

開源后期維護(hù)服務(wù)是開源項(xiàng)目時(shí)最容易被忽視的,為了讓用戶更好地使用開源項(xiàng)目,我們可以通過GitHub issue、微信答疑群、論壇、社區(qū)文章分享等互動(dòng)形式做好開源后期服務(wù)工作。

八、迭代

GitHub上迭代開發(fā)流程如下:項(xiàng)目owner給項(xiàng)目開發(fā)者設(shè)置member權(quán)限,member用戶fork開源項(xiàng)目的資源成自己的資源,然后修改fork之后的資源,修改完成之后,提merge請(qǐng)求,只有項(xiàng)目owner才有權(quán)限merge。如何同步fork項(xiàng)目可參見如下文章如何同步fork項(xiàng)目:https://blog.csdn.net/t111t/article/details/45894381

開源項(xiàng)目:
微服務(wù)任務(wù)調(diào)度框架 :https://github.com/siaorg/sia-task

微服務(wù)路由網(wǎng)關(guān) :https://github.com/siaorg/sia-gateway

【本文是專欄機(jī)構(gòu)宜信技術(shù)學(xué)院的原創(chuàng)文章,微信公眾號(hào)“宜信技術(shù)學(xué)院( id: CE_TECH)”】


分享題目:82天突破1000star,項(xiàng)目團(tuán)隊(duì)梳理出軟件開源必須注意的8個(gè)方面
URL地址:http://www.5511xx.com/article/dhceehp.html