关于开源
ShannonChenCHN opened this issue · 3 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 和文档
- 最后是告诉别人你的项目
延伸阅读:
- 什么是开源精神(玉伯):lifesinger/blog#167
- Open sourcing Swift code:https://www.swiftbysundell.com/posts/open-sourcing-swift-code
- How to Contribute to Open Source:https://opensource.guide/how-to-contribute/
读 『什么是开源精神 』
-
开源需要贡献、需要付出,但在贡献和付出之前,首要的是去了解、去使用已经存在的。
-
不要去做「纯调研」,更笨但更有效地做法是,直接去用,在项目真正使用过程中,才能深触地感受到这个项目的优缺点。拿来主义不光能省去开发成本,还能让你扩充见识和想法,而不会成为井底之蛙还茫然自得。
-
在开源世界里,参与比主导更重要。做开源不仅仅是指开源自己的代码,其实还包括提反馈意见(issue)、分享使用体验、完善文档、添加测试等等。在参与别人的开源项目时,不光是技术水平上的提升,还包括读写能力、沟通能力、英语水平等多方面的提升。
-
开源的是社区,代码仅是很小的一部分。没有社区的活跃性,开源项目源码会一直停留在「孤芳自赏」阶段。一个比较好的开源方式是:有了好的想法,就分享出来,最初的代码展现基本的思路就好,然后通过社区的参与,不断往前演化,让大家都成为开发者,群体的力量远大于个体。