近期,我们在GitHub上开源了微服务任务调度框架SIA-TASK,82天,收获了1000+个star!由于这是SIA团队第一次开源项目,开源的相关工作,团队之前并没有太多的经验,因此我们特别整理了本次开源的各种记录事项,希望给今后开源的项目做参考。
关键步骤
- 开发
- 协议
- 安全扫描
- 文档
- 版本号
- 开源
- 后期
- 迭代
下面我们逐个步骤进行阐述。
一、开发
在开源项目的开发过程中要注意以下几点:
首先,要给自己的项目取一个合适的名字,取名规则这里不再赘述,需要强调的一点是:项目名称不能与GitHub上已开源过的项目名称相同。
其次,选择合适的编程语言。
再次,编码过程中要注意代码的规范。
最后要说的就是开源协议的选择了,目前最流行的开源协议有以下六种:GPL、BSD、MIT、Mozilla、Apache和LGPL。
不同的开源协议之间的差别还是挺大的,具体如何选择,可以参考一张图看懂开源协议(https://blog.csdn.net/cwt19902010/article/details/53736746),如果这些常用的开源协议都不适合你的项目,你也可以自己写一个自己的开源协议。
为了更方便查看开源协议选择图,参考图如下
以Apache License Version 2.0协议为例,比较常用协议与Apache协议冲突情况,冲突图如下:
二、协议
项目开发完成之后,需要梳理出项目中使用到的协议(包含项目引用的组件中用到的协议),此处推荐使用maven许可证插件。插件配置参见License Maven Plugin(https://www.mojohaus.org/license-maven-plugin/),maven许可证插件在主pom中配置示例如下(此处开源协议采用Apache 2.0)
<!--开源协议采用Apache 2.0协议--> <licenses> <license> <name>Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.html</url> <distribution>repo</distribution> </license> </licenses> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> <version>1.13</version> <configuration> <!-- config for license:aggregate-add-third-party --> <outputDirectory>${main.basedir}</outputDirectory> <thirdPartyFilename>LICENSE-3RD-PARTY</thirdPartyFilename> <fileTemplate>/org/codehaus/mojo/license/third-party-file-groupByLicense.ftl</fileTemplate> <useMissingFile>true</useMissingFile> <missingFile>${main.basedir}/LICENSE-3RD-PARTY.properties</missingFile> <aggregateMissingLicensesFile>${main.basedir}/LICENSE-3RD-PARTY.properties</aggregateMissingLicensesFile> <licenseMerges> <licenseMerge>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</licenseMerge> <licenseMerge>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</licenseMerge> <licenseMerge>MIT|MIT License|The MIT License</licenseMerge> <licenseMerge>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</licenseMerge> <licenseMerge>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</licenseMerge> <licenseMerge>EPL|Eclipse Public License - Version 1.0</licenseMerge> <licenseMerge>GPL|GPL2 w/ CPE|GPLv2+CE|GNU General Public Library</licenseMerge> <licenseMerge>MPL|MPL 1.1</licenseMerge> <licenseMerge>Public Domain</licenseMerge> <licenseMerge>Common Public License|Common Public License Version 1.0</licenseMerge> <licenseMerge>CC0|CC0 1.0 Universal|Public Domain, per Creative Commons CC0</licenseMerge> <licenseMerge>Unknown License|Unknown license</licenseMerge> </licenseMerges> <!-- config for license:aggregate-download-licenses --> <aggregateDownloadLicenses.executeOnlyOnRootModule>true</aggregateDownloadLicenses.executeOnlyOnRootModule> <!--<licensesConfigFile>${main.basedir}/lic/config/licenses.xml</licensesConfigFile>--> <licensesOutputFile>${main.basedir}/lic/licenses.xml</licensesOutputFile> <licensesOutputDirectory>${main.basedir}/lic/licenses/</licensesOutputDirectory> <!-- config for license:update-file-header --> <licenseName>apache_v2</licenseName> <inceptionYear>2019</inceptionYear> <organizationName>sia</organizationName> <projectName>task</projectName> <roots> <root>src/main/java</root> <root>src/test/java</root> </roots> <includes> <include>***.xml</include> <include>***.py</include> <include>***.sql</include> <include>***.less</include> <include>***.js</include> <include>**/*.json</include> </includes> <canUpdateCopyright>true</canUpdateCopyright> <canUpdateDescription>true</canUpdateDescription> <addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage> <emptyLineAfterHeader>true</emptyLineAfterHeader> <processStartTag><<</processStartTag> <processEndTag>>></processEndTag> <sectionDelimiter>==</sectionDelimiter> <!-- config for mvn license:update-project-license --> <licenseFile>${main.basedir}/LICENSE</licenseFile> </configuration> </plugin> <plugin> <groupId>org.jasig.maven</groupId> <artifactId>maven-notice-plugin</artifactId> <version>1.0.6.1</version> <configuration> <generateChildNotices>false</generateChildNotices> <noticeTemplate>https://source.jasig.org/licenses/NOTICE.template</noticeTemplate> <licenseMapping> <param>https://source.jasig.org/licenses/license-mappings.xml</param> </licenseMapping> </configuration> </plugin> </plugins>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756