About Contribution - Raibows/NCEPU-CS-COURSES GitHub Wiki

如何贡献您的项目?

首先非常欢迎您贡献的代码,欢迎您为此项目添砖加瓦!为了项目的可维护性,请您务必阅读及悉知以下建议

了解项目结构与文件组织

|-- Compiler
|   |-- CS
|   |   |-- CLangCompiler
|   |   `-- LLangCompiler
|-- ComputerOrganization
|   |-- ALUexp
|   |-- CUexp-1
|   |-- CUexp-2
|   `-- RAMexp
|-- Cryptography
|-- CyberSecurityExp
|   `-- ChatViaOneTimePad
|-- DataStructure
|   |-- CS
|   `-- IS
|-- DatabaseExp
|   |-- CS
|   `-- IS
|-- HardwareDesign&Practice
|   `-- MIPS16-CPU

如上树形例子所示,项目结构是由课程/实验名称作为1级单元组成的,如ComputerOrganization, Cryptography等。在1级单元下,可以有2种组织形式(2级单元)

  1. 此课程/实验是通用的,或是当前只有一个代码示例,因此无需创建CS等专业命名的专业归类文件夹,形如ComputerOrganization目录下的组织
  2. 此课程各个专业要求不一样,差别较大,同时有多个不同专业的项目贡献,因此创建专业名称的文件夹进行归类。CS为计算机科学与技术,SE为软件工程,IS为信息安全,NE为网络工程

在2级单元下,通常用项目名称来作为具体项目的文件夹(3级单元),如Compiler/CS/CLangCompiler

当您尝试添加1级单元时(即首次贡献一个课程/实验),请您同时更新首页的./README.md以及./README_en.md

确定项目命名以及编码

为了避免编码造成的奇奇怪怪的问题,建议您将所有项目文件命名为英文,且文件内容编码为UTF-8,注意不要加bom。此操作大多数编辑器(如VS Code)或IDE都可完成。

添加一个README

在您的项目(3级单元)下,除了必需的代码外,您最好再附加一个README.md文件,该文件通常需涵盖以下内容

  1. 介绍您的项目
  2. 介绍项目作者
  3. 使用的方法/步骤
  4. 该项目使用条款/LICENSE

注意,若您未直接声明LICENSE,将会遵守Apache 2.0 LICENSE.

去除一切非必要文件

为了我们的项目保持较小的体积,强烈建议您了解一下.gitignore,一些图片、bin二进制文件、虚拟环境等,都不应该出现在您提交的项目中(因为这些都可以从您的代码/说明文件中运行/配置得到,因此这些不是必需的最基本文件),您可以在此处发现常见语言/IDE的.gitignore模板

不建议贡献的条目

我们非常欢迎您贡献您的项目,但迫于此项目的可维护性,因此我们不建议您贡献以下条目

  1. 重复的/不规范/低质量/有明显错误的项目
  2. 资料类项目,如ppt/word文档,这些资料大多是非允许传播的,且不宜在GitHub进行存储

现在,开始贡献

您需要熟悉GitHub的协作方式,建议您了解pull requests相关的知识,以下资料仅作参考

  1. GitHub About Pull Requests
  2. GitHub 的 Pull Request 是指什么意思? - beepony的回答 - 知乎