文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

82天突破1000star,项目团队梳理出软件开源必须注意的8个方面

2023-06-05 04:15

关注

近期,我们在GitHub上开源了微服务任务调度框架SIA-TASK,82天,收获了1000+个star!由于这是SIA团队第一次开源项目,开源的相关工作,团队之前并没有太多的经验,因此我们特别整理了本次开源的各种记录事项,希望给今后开源的项目做参考。

关键步骤

  1. 开发
  2. 协议
  3. 安全扫描
  4. 文档
  5. 版本号
  6. 开源
  7. 后期
  8. 迭代

下面我们逐个步骤进行阐述。

一、开发

在开源项目的开发过程中要注意以下几点:

首先,要给自己的项目取一个合适的名字,取名规则这里不再赘述,需要强调的一点是:项目名称不能与GitHub上已开源过的项目名称相同。

其次,选择合适的编程语言。

再次,编码过程中要注意代码的规范。

最后要说的就是开源协议的选择了,目前最流行的开源协议有以下六种:GPL、BSD、MIT、Mozilla、Apache和LGPL。

不同的开源协议之间的差别还是挺大的,具体如何选择,可以参考一张图看懂开源协议(https://blog.csdn.net/cwt19902010/article/details/53736746),如果这些常用的开源协议都不适合你的项目,你也可以自己写一个自己的开源协议。

为了更方便查看开源协议选择图,参考图如下

82天突破1000star,项目团队梳理出软件开源必须注意的8个方面

以Apache License Version 2.0协议为例,比较常用协议与Apache协议冲突情况,冲突图如下:

82天突破1000star,项目团队梳理出软件开源必须注意的8个方面

二、协议

项目开发完成之后,需要梳理出项目中使用到的协议(包含项目引用的组件中用到的协议),此处推荐使用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>&lt;&lt;</processStartTag>                 <processEndTag>&gt;&gt;</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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯