ShannonChenCHN / eureka

✍️ I read, I write, I think, I do, I learn, I code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于开源

ShannonChenCHN opened this issue · comments

关于开源

Open sourcing Swift code

相比原来所从事的传统机械行业,显然,我更喜欢 IT 这个行业,正是互联网的开放,才让我看到更大的世界,才知道自己的渺小。

『Open sourcing Swift code』 的作者正是知名开源库 JSQMessagesViewController 的作者 John Sundell,这个开源项目目前在 GitHub 上的 star 数已经超过 10 k了🙈。在这篇文章中,作者分别从 Why,What,How 这几个角度,大概讲了一些关于开源的实用建议。

1. Why open source?

  • 开源能够让你注重分离关注点,使得代码更抽象,逻辑更独立
  • 开源能够让你写出更加清晰可读的 API

2. What to open source?

可以将项目中一些通用的、功能单一的模块抽取出来,比如:

  • JSON 转 Model 的功能
  • 加载或者缓存数据
  • 文件操作,I/O 操作
  • 动画,UI 样式或者其他视图渲染相关的
  • 解决常见问题的、方便好用的 API 封装,比如 blocksKit

重要: 我们开元出来的不一定要非常酷,也不一定要到达前无古人的程度,真正重要的是能把我们项目中一些能够帮助到别人的代码,分享出来。

3. How to open source a project?

  • 避免嵌套依赖,尽量做到易于使用、易于维护
  • 支持 CocoaPods, Carthage 和 Swift Package Manager
  • 在 README 中对对未来的一些期望和规划进行说明,这样能让使用者知道这个项目的未来走向,以及这个项目的发展阶段
  • 写配套的测试代码

后续

读后我转发了作者关于这篇文章的 twitter 帖子,得到了作者的回复。随后,我又提了两个问题,作者很快又认真回复了我:

Me: How can I get involved in other people's open source project?
John Sundell: I recommend fixing bugs & adding new features to projects you already use. Me & @_inside talked about it here: overcast.fm/+Jxstx4Apg/39:… 🙂
这个问题讲的是如何真正地参与到别人的开源项目中去,John 给出的答案是:

  • 使用别人开源的项目
  • 修复你所使用的开源项目中的 bug
  • 往别人开源的项目中添加新功能
    最后 John 还提供了一个 podcast 的链接,他在这个节目中跟别人讨论过这个话题。

Me: How can I get more people to know my own open source project?
John Sundell: Keep working on it to make it really polished & useful for others. Create a great README & documentation. Then tell people about it 🙂

第二个问题是,如何让更多的人知道我自己的开源项目。
John 认为,

  • 首先是持续打磨你的开源项目,让它能够让别人觉得非常优雅和有价值
  • 创建一个不错的 README 和文档
  • 最后是告诉别人你的项目

延伸阅读:

读 『什么是开源精神

  1. 开源需要贡献、需要付出,但在贡献和付出之前,首要的是去了解、去使用已经存在的。

  2. 不要去做「纯调研」,更笨但更有效地做法是,直接去用,在项目真正使用过程中,才能深触地感受到这个项目的优缺点。拿来主义不光能省去开发成本,还能让你扩充见识和想法,而不会成为井底之蛙还茫然自得。

  3. 在开源世界里,参与比主导更重要。做开源不仅仅是指开源自己的代码,其实还包括提反馈意见(issue)、分享使用体验、完善文档、添加测试等等。在参与别人的开源项目时,不光是技术水平上的提升,还包括读写能力、沟通能力、英语水平等多方面的提升。

  4. 开源的是社区,代码仅是很小的一部分。没有社区的活跃性,开源项目源码会一直停留在「孤芳自赏」阶段。一个比较好的开源方式是:有了好的想法,就分享出来,最初的代码展现基本的思路就好,然后通过社区的参与,不断往前演化,让大家都成为开发者,群体的力量远大于个体。