[阿菜求助]开源项目应该如何入手

2023-12-13 09:33:50 +08:00
 yantianzhi

想在工作之余看一些开源项目提升自己的技术水平(虽然也不一定提升),之前看了一些推荐的开源指引,感觉项目往往很大,想下手比较难,在其中变量怎么变化的有点难把握。比如最近尝试看 Bottle 这个项目,发现自己对于 Python 一些底层用到的函数还不够熟悉,一层层往下 debug 后感觉思路非常凌乱。 欢迎各种批评指导!!

1802 次点击
所在节点    程序员
21 条回复
crazyTanuki
2023-12-13 10:03:28 +08:00
开源汇集 N 个人的语法习惯,建议知道怎么用就够了,别头铁去厘清细节,你面对的是千千万万个开发者的奇技淫巧
wheat0r
2023-12-13 10:09:20 +08:00
不懂编程,但是我觉得设计思路和功能逻辑是关键,代码是第二位的
CaptainD
2023-12-13 10:16:01 +08:00
这个库我印象很久前看过,你说的底层函数具体指什么呢
kkk9
2023-12-13 10:53:01 +08:00
什么都去了解的话你把握不住的。
Yuanlaoer
2023-12-13 11:01:43 +08:00
朋友,你的问题是什么呢?
harry890829
2023-12-13 11:04:50 +08:00
看核心把,比如我最近在看长亭开源的问脉,核心内容是针对容器安全的,现在容器中有镜像层的 id ,应该已经可以有地方查询到数据了,但是我想看下他核心是怎么做的,顺便看看使用 golang 如何获取 docker 容器信息这样,想好想看什么,带着目标去看,没必要一行一行看,又不是做 codereview ,也不是去找 0day 的
yantianzhi
2023-12-13 11:19:02 +08:00
@crazyTanuki 您觉得大概了解到什么程度就好呢?因为还是新手,所以不太了解。比如我尝试能够画出每个模块的架构、重点功能的 UML 图,这种能算理解吗?
yantianzhi
2023-12-13 11:28:06 +08:00
@CaptainD 可能不是很底层,是我了解的比较少。比如 os.path 这样的函数,之前编程的时候没有碰到过,在 pycharm 里面 ctrl 进去,发现也没有包括源码,百度出来看的也不是很清楚,这种是不是需要翻阅技术文档?
yantianzhi
2023-12-13 11:29:16 +08:00
@zhangchi25806 想问一下大家刚开始学的时候是如何入手开源项目的,感觉和平时接触的工程项目差距有点大,没法把学到的迁移过来
yantianzhi
2023-12-13 11:31:09 +08:00
@harry890829 谢谢大佬,我是因为感觉目前工作做的没什么技术提升,就是写简单的 Java 的 CRUD 所以考虑看开源代码,可能步子买的有点大了
noparking188
2023-12-13 11:59:00 +08:00
你先看看这个 https://build-your-own-x.vercel.app/#build-your-own-web-server ,了解 web server 怎么设计实现的,
然后再去看 bottle 为什么这么设计。
我以前也打开过 bottle 源码,就学到了这个写法:
```
parser = ArgumentParser(prog=args[0], usage="%(prog)s [options] package.module:app")
opt = parser.add_argument
opt("--version", action="store_true", help="show version number.")
```
ExplodingFKL
2023-12-13 12:00:31 +08:00
一般开源项目有简要文档说明的,没有的话就看程序入口,顺着执行流程简要看一遍,要不然就看测试用例或者 examples , 啥也没有的话建议不要碰,这项目很快就会无人维护的
yantianzhi
2023-12-13 14:02:38 +08:00
@noparking188 谢谢大佬!学习了
Yuanlaoer
2023-12-13 17:27:33 +08:00
@yantianzhi “入手开源项目”是指什么?是如何挑选开源项目还是如何给一个项目做贡献?
yantianzhi
2023-12-13 17:30:19 +08:00
@zhangchi25806 想先尝试理解开源项目该如何去阅读,然后再想能否做贡献。
当然您说的挑选也是很重要的,目前我也没有明确的学习方向,不知道看那些关注度很高的,比如 MongoDB 这种开源的数据库是否合适。
Yuanlaoer
2023-12-13 18:34:48 +08:00
@yantianzhi 我直白点儿讲,纯属个人角度:
看起来,你对“开源项目”这个大类别既不太熟悉,也不感兴趣。如果是就是为了提升技术水平,那直接看基数类的教科书可能更好。算法,网络,操作系统等等,对于技术的提升会更扎实有效。
开源项目或者说开源软件,是自由软件概念下诞生的一种合作方式。“开源”有其了不起的地方,但是对于其“项目”和“软件”,跟其他不开源的“项目”和“软件”并没有什么本质区别。
yantianzhi
2023-12-14 09:18:43 +08:00
@zhangchi25806 是的,之前我对开源的理解主要是体现在“分享精神”这一块,想要涉足这一块的原因是,和公司里的前辈交谈学习方向的时候,他就建议我多看开源软件的编码架构,加深理解。
其实我想处于这种境况主要是因为自身还停留在跟随 B 站马士兵这类的视频进行编程的被动学习的阶段,别人写啥我就写啥,没有主动学习的经验和动力。也正在想办法改变中。
JeffreyZhuang
2023-12-21 11:36:55 +08:00
从解决具体问题着手,稍微大的项目看代码是看不完的。
issue 里找问题,解决,提交 PR ,慢慢就熟悉起来了。
windcode
194 天前
开源项目 maintainer 一般会给适合社区用户参与贡献的 issue 贴上 [good first issue] 标签,你可以根据这个标签针对性的筛选,另外有个网站专门收集了所有 good first issue 的 issue ,可以节省一些时间: https://goodfirstissue.dev

另外有的开源项目甚至会专门将所有适合入门的 issue 汇总到一个 issue 中,整理成 community tasks ,比如这个:
https://github.com/KusionStack/kusionstack.io/pull/508
yantianzhi
187 天前
@windcode 谢谢,帮助很大!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/999906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX