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