如何从0开始开源项目参与

by Dmitriy Strukov

德米特里·斯特鲁科夫(Dmitriy Strukov)

如何开始一个开源项目 (How to start an Open Source project)

My name is Dima and I’m Ruby developer. Today I want to share my experience creating an open source solution. I will talk about what steps the project should take, how to choose the right functionality for the first release, and what mistakes I faced personally when creating my open source project.

我叫Dima,我是Ruby开发人员。 今天,我想分享我创建开源解决方案的经验。 我将讨论项目应采取的步骤,如何为第一个发行版选择正确的功能以及在创建开源项目时遇到的个人错误。

Half a year ago, I got the idea that it would be good to create an open source project. Instead of test tasks for the interview, it would be enough for me to send a link to the repository. The prospect of helping colleagues with the solution to their everyday problems inspired me.

半年前,我想到创建一个开源项目会很好。 无需进行面试的测试任务,将链接发送到存储库就足够了。 帮助同事解决日常问题的前景启发了我。

I’ve always disliked gems for creating administration panels. Any extra movement needs to redefine the class, and for change fields you need to make changes to the files. After thinking and conversing with colleagues, I decided to create a new library which would be flexible and would not require dashboards or configuration files.

我一直不喜欢创建管理面板的宝石。 任何额外的动作都需要重新定义类,对于更改字段,您需要对文件进行更改。 经过与同事的思考和交谈,我决定创建一个新的库,该库将很灵活并且不需要仪表板或配置文件。

确定目标 (Determine the goals)

Every open source project solves a specific problem. Talk with colleagues, chats, forums, and share your idea. It all helps you on the first steps to understand important things, like which solutions already exist, and to hear criticism. Talk with people who already have open source projects. They can give you very valuable advice, so don’t be afraid to ask and take the initiative.

每个开源项目都会解决一个特定的问题。 与同事交谈,聊天,论坛并分享您的想法。 所有这些都可以帮助您从头开始理解重要的事情,例如已经存在的解决方案,以及聆听批评。 与已经拥有开源项目的人交谈。 他们可以为您提供非常有价值的建议,因此不要害怕提出问题并采取主动。

One important bit of advice which I got at that stage is to pay attention in the first place on the documentation of the project. You can have a very good project, but no one will spend the time to understand how it works.

我在此阶段获得的一个重要建议是,首先要注意项目文档。 您可以有一个非常好的项目,但是没有人会花时间来了解它的工作原理。

The most important aspect, without which further steps are impossible, is motivation. The idea of the project should inspire you primarily. Most often people get used to the tools with which they work and fall into a comfort zone, so external opinions may be ambiguous.

最重要的方面是没有动力,没有进一步的步骤是不可能的。 该项目的想法应首先激发您的灵感。 人们通常会习惯使用的工具,并陷入舒适的境地,因此外部意见可能会含糊不清。

规划 (Planning)

The choice of a certain task manager is a matter of taste. It should have a clear picture of the tasks and stages of your project.

特定任务管理器的选择取决于品味。 它应该对项目的任务和阶段有清晰的了解。

Divide tasks into sub-tasks. Ideally, if one task does not take more than 3–4 hours, it is important to enjoy the implementation of small tasks. This will help to avoid burnout and loss of motivation.

将任务划分为子任务。 理想情况下,如果一项任务花费的时间不超过3-4个小时,则享受小任务的执行很重要。 这将有助于避免倦怠和失去动力。

I use pivotal tracker. The main advantage is a free version for open source projects where you can sort tasks by type (feature, bug, chore, release), and group them into releases and determined deadlines.

我使用枢轴跟踪器 。 主要优势是开放源代码项目的免费版本,您可以在其中按类型(功能,错误,杂项,发布)对任务进行排序,并将其分组为发布和确定的期限。

文献资料 (Documentation)

Every open source project should contain these things:

每个开源项目都应包含以下内容:

  • README自述文件
  • Open Source license开源许可证
  • Contributing guidelines贡献准则
  • Changelog变更日志

The README file not only explains how to use your project, but also the purpose of your project. If you do not know how to properly write a README file, you can look at other known open source projects or use a template.

README文件不仅说明了如何使用您的项目,还说明了项目的目的。 如果您不知道如何正确编写README文件,则可以查看其他已知的开源项目或使用模板 。

The license guarantees that others can use, copy and modify the source code of the project. You need to add this file to each repository with your open source project. MIT and Apache 2.0 GPLv3 are the most popular licenses for open source projects. If you are not sure what to choose, you can use this convenient service.

该许可证保证其他人可以使用,复制和修改项目的源代码。 您需要将此文件与您的开源项目一起添加到每个存储库中。 MIT和Apache 2.0 GPLv3是开放源代码项目中最受欢迎的许可证。 如果不确定选择什么,可以使用此便捷服务 。

The CONTRIBUTING file will help other developers contribute to the project. At the first steps of the project, it is not necessary to pay close attention to this file. You can use the already prepared template from another project.

CONTRIBUTING文件将帮助其他开发人员对该项目做出贡献。 在项目的第一步,不必密切关注此文件。 您可以使用另一个项目中已经准备好的模板。

Changelog contains a supported, chronologically-ordered list of significant changes for each version. As with the CONTRIBUTING file, I do not advise paying special attention to this at an early stage.

变更日志包含受支持的按时间顺序排列的每个版本的重要变更列表。 与CONTRIBUTING文件一样,我不建议在早期特别注意这一点。

版本控制 (Versioning)

To track important changes for users and contributors, there is a semantic version. The version number contains numbers and adheres to the following pattern X.Y.Z.

为了跟踪用户和贡献者的重要变化,有一个语义版本 。 版本号包含数字,并遵循以下模式XYZ

  • X major releaseX主要版本
  • Y minor releaseY次要发布
  • Z patch releaseZ补丁发布

持续集成/持续交付 (Continuous integration / Continuous delivery)

To automatically run tests and build, I use Travis CI. It’s also a good idea to add badges to display the successful assembly of the build in the wizard, the test coverage (Codecov), and the documentation (Inch CI).

为了自动运行测试和构建,我使用Travis CI 。 添加标记以在向导中显示构建的成功组装,测试覆盖率( Codecov )和文档( Inch CI )也是一个好主意。

After each new commit or merge in the master, I automatically have a deploy on Heroku (very convenient integration with GitHub). All tools are absolutely free for an open source project.

在主服务器中的每个新提交或合并之后,我会自动在Heroku上进行部署(非常方便地与GitHub集成)。 所有工具对于一个开源项目都是完全免费的。

我的错 (My mistakes)

To analyze the initial stage, I had an idea, but there was no clear plan. I decided that I wanted to do this without having a clear idea of how much time it would take or a specific representation of the functions that would be in the first version of the library. I had just a lot of desire and lack of a clear plan.

为了分析初始阶段,我有一个主意,但是没有明确的计划。 我决定在不明确需要多少时间或没有明确表示该库的第一个版本中的功能的情况下进行此操作。 我只是有很多愿望,却缺乏明确的计划。

Also, after reading the history of other projects (not only open source), I noticed that at an early stage, some plans are too optimistic. They need a reassessment of their strengths and capabilities. But it’s not easy to find time each day to write a new feature in the project. Most of the tasks eventually had to be weeded out, leaving the necessary minimum for MVP.

另外,在阅读了其他项目(不仅是开源项目)的历史之后,我注意到在早期阶段,有些计划过于乐观。 他们需要重新评估自己的优势和能力。 但是每天找时间在项目中编写新功能并不容易。 最终,大多数任务都必须清除掉,剩下MVP所需的最低要求。

At the moment my simple-admin project is in the alpha version. Further plans include creating a separate version of the library for Hanami.

目前,我的simple-admin项目处于alpha版本。 进一步的计划包括为Hanami创建该库的单独版本。

翻译自: https://www.freecodecamp.org/news/how-to-start-an-open-source-project-in-new-years-945bad8800d7/

如何从0开始开源项目参与

如何从0开始开源项目参与_如何开始一个开源项目相关推荐

  1. 开源 协作工具_使用HackMD在开源项目上进行协作

    开源 协作工具 HackMD.io是一个开源的Markdown协作编辑器. 它使人们可以共享,评论和协作文档. 作为开源软件,用户可以选择使用在线平台还是使用上游项目CodiMD将其安装为本地服务. ...

  2. 开源项目参与_通过更好的文档吸引更多的项目参与人

    开源项目参与 这种情况并不少见有消息各地的社区是不友好的妇女或新人或人谁是不是已经有一个周期. "新闻"是指某人发布了一些关于自己的不公正行为的贴心内容,而其他人对此发表了评论或撰 ...

  3. eclipse建java项目不见_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...

    这是我的第 196 期分享 作者 | Guide 来源 | JavaGuide(ID:JavaGuide) 分享 | Java中文社群(ID:javacn666) 大家好,我是 Guide 哥,一个三 ...

  4. python项目源码 日程管理软件_分享:一个开源的基于时间管理四象限的待办管理工具...

    在完成这篇文章里要分享的一个开源小工具 todolist 之前,在网上找了不少日程管理,待办管理的小工具:开源的.收费的.有广告.需要注册的那也是不少: 根据自己平时的工作习惯:以及对时间管理的学习理 ...

  5. 禅道开源版用户手册_自动化建模 | H2O开源工具介绍

    来这里找志同道合的小伙伴! 引 言 相信大家在日常的建模工作中都会或多或少地思考一个问题:建模可不可以被自动化?今天将围绕这个问题向大家介绍一个开源的自动建模工具H2O.本文将会cover以下三个部分 ...

  6. Angular 5.0 学习2:Angular 5.0 开发环境的搭建和新建第一个ng5项目

    1.安装Node.js 在开始工作之前,我们必须设置好开发环境. 如果你的机器上还没有Node.js®和npm,请先安装它们. 去Node.js的官网,https://nodejs.org/en/,点 ...

  7. fpga 开源264编码_更好的开源安全性,学习编码,开放式家庭设计等

    fpga 开源264编码 在本周的开源新闻摘要中,我们将介绍更易于访问的开源安全性,用于学习代码的新平台,开源家庭设计等等! 开源新闻让您阅读愉快. 2014年9月20日至26日 Dropbox和Go ...

  8. 【灯哥开源四足机器人】推荐一个开源四足机器狗项目,8自有度,两个舵机控制一个腿,apache开源协议的,已经迭代了好多个版本了,设计的非常好。有官方淘宝店,没有3D打印机的可以购买散装零件自己组装

    目录 前言 1,关于[灯哥开源四足机器人] 2,使用py-apple 3,总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/detail ...

  9. 子项目依赖和父项目冲突_实战 | maven 轻松重构项目

    现在是微服务盛行时代,说不准哪一天领导就会让你对一个大项目进行重构.大项目的痛点:编译慢.发布繁琐等.就像下面这张图: 真的不敢动呀,一不小心就坍塌了. 比如说我们用户系统,我们可以这么重构(这里只是 ...

最新文章

  1. HDU5154拓扑排序模版题
  2. java Jconsole调优
  3. Java异常日志的查询语句_java学习异常,断言和日志
  4. linux sort,uniq,cut,wc命令详解
  5. git 创建本地仓库、远程仓库,上传项目
  6. web报表工具FineReport的JS编辑框和URL地址栏语法简介
  7. Spring基础18——通过注解配置bean之间的关联关系
  8. sed用法详解(转载)
  9. 鹰眼跟踪、限流降级,EDAS的微服务解决之道
  10. Sendmail with Attachment script
  11. 廖雪峰Git学习 | 笔记五:撤销修改
  12. java 生成二维码,带logo,底部文字
  13. GPU架构(Fermi Kepler)
  14. c语言unicode编码转gbk,基于C语言的GBK-Unicode文本编码转换系统的实现
  15. R语言教程(1)——基础知识
  16. 如何搭建公司知识库?
  17. flux mono 转_自语之Reactor中FluxMono的粗略使用
  18. 2003 文件服务器权限设置,win2003服务器设置文件访问权限
  19. 调整el-table的行高(单元格高度)及单元格字体大小
  20. 浙江大学计算机学院的软件工程和软件学院的软件工程哪个好,软件工程专业最强十校,浙大第二、清华第五,这所师范类院校很意外...

热门文章

  1. 《学习OpenCV》课后习题解答(第三章)(仅供参考)
  2. 【C++基础学习】C++引用参数与指针参数
  3. 补充 返回泛型指定类的方法 0106
  4. 日期时间选择器 DateTimePicker 1127
  5. 0924html小测答案
  6. OpenSSL 宣布将开源许可证更改为 Apache 2.0
  7. java平台调试架构JPDA
  8. Mysql开启远程连接方法
  9. linux/bsd四大防火墙我们选择谁
  10. Jeecg开发平台 - Online表单专题课程