[阿菜求助]开源项目应该如何入手 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yantianzhi
V2EX    程序员

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

  •  
  •   yantianzhi 2023-12-13 09:33:50 +08:00 2183 次点击
    这是一个创建于 676 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    21 条回复    2024-06-21 17:19:58 +08:00
    crazyTanuki
        1
    crazyTanuki  
       2023-12-13 10:03:28 +08:00
    开源汇集 N 个人的语法习惯,建议知道怎么用就够了,别头铁去厘清细节,你面对的是千千万万个开发者的奇技淫巧
    wheat0r
        2
    wheat0r  
       2023-12-13 10:09:20 +08:00   1
    不懂编程,但是我觉得设计思路和功能逻辑是关键,代码是第二位的
    CaptainD
        3
    CaptainD  
       2023-12-13 10:16:01 +08:00
    这个库我印象很久前看过,你说的底层函数具体指什么呢
    kkk9
        4
    kkk9  
       2023-12-13 10:53:01 +08:00
    什么都去了解的话你把握不住的。
    Yuanlaoer
        5
    Yuanlaoer  
       2023-12-13 11:01:43 +08:00
    朋友,你的问题是什么呢?
    harry890829
        6
    harry890829  
       2023-12-13 11:04:50 +08:00
    看核心把,比如我最近在看长亭开源的问脉,核心内容是针对容器安全的,现在容器中有镜像层的 id ,应该已经可以有地方查询到数据了,但是我想看下他核心是怎么做的,顺便看看使用 golang 如何获取 docker 容器信息这样,想好想看什么,带着目标去看,没必要一行一行看,又不是做 codereview ,也不是去找 0day 的
        7
    yantianzhi  
    OP
       2023-12-13 11:19:02 +08:00
    @crazyTanuki 您觉得大概了解到什么程度就好呢?因为还是新手,所以不太了解。比如我尝试能够画出每个模块的架构、重点功能的 UML 图,这种能算理解吗?
    yantianzhi
    yantianzhi
        8
    yantianzhi  
    OP
       2023-12-13 11:28:06 +08:00
    @CaptainD 可能不是很底层,是我了解的比较少。比如 os.path 这样的函数,之前编程的时候没有碰到过,在 pycharm 里面 ctrl 进去,发现也没有包括源码,百度出来看的也不是很清楚,这种是不是需要翻阅技术文档?
    yantianzhi
        9
    yantianzhi  
    OP
       2023-12-13 11:29:16 +08:00
    @zhangchi25806 想问一下大家刚开始学的时候是如何入手开源项目的,感觉和平时接触的工程项目差距有点大,没法把学到的迁移过来
    yantianzhi
        10
    yantianzhi  
    OP
       2023-12-13 11:31:09 +08:00
    @harry890829 谢谢大佬,我是因为感觉目前工作做的没什么技术提升,就是写简单的 Java 的 CRUD 所以考虑看开源代码,可能步子买的有点大了
    noparking188
        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.")
    ```
    ExplodingDragon
        12
    ExplodingDragon  
       2023-12-13 12:00:31 +08:00
    一般开源项目有简要文档说明的,没有的话就看程序入口,顺着执行流程简要看一遍,要不然就看测试用例或者 examples , 啥也没有的话建议不要碰,这项目很快就会无人维护的
    yantianzhi
        13
    yantianzhi  
    OP
       2023-12-13 14:02:38 +08:00
    @noparking188 谢谢大佬!学习了
    Yuanlaoer
        14
    Yuanlaoer  
       2023-12-13 17:27:33 +08:00
    @yantianzhi “入手开源项目”是指什么?是如何挑选开源项目还是如何给一个项目做贡献?
    yantianzhi
        15
    yantianzhi  
    OP
       2023-12-13 17:30:19 +08:00
    @zhangchi25806 想先尝试理解开源项目该如何去阅读,然后再想能否做贡献。
    当然您说的挑选也是很重要的,目前我也没有明确的学习方向,不知道看那些关注度很高的,比如 MongoDB 这种开源的数据库是否合适。
    Yuanlaoer
        16
    Yuanlaoer  
       2023-12-13 18:34:48 +08:00
    @yantianzhi 我直白点儿讲,纯属个人角度:
    看起来,你对“开源项目”这个大类别既不太熟悉,也不感兴趣。如果是就是为了提升技术水平,那直接看基数类的教科书可能更好。算法,网络,操作系统等等,对于技术的提升会更扎实有效。
    开源项目或者说开源软件,是自由软件概念下诞生的一种合作方式。“开源”有其了不起的地方,但是对于其“项目”和“软件”,跟其他不开源的“项目”和“软件”并没有什么本质区别。
    yantianzhi
        17
    yantianzhi  
    OP
       2023-12-14 09:18:43 +08:00
    @zhangchi25806 是的,之前我对开源的理解主要是体现在“分享精神”这一块,想要涉足这一块的原因是,和公司里的前辈交谈学习方向的时候,他就建议我多看开源软件的编码架构,加深理解。
    其实我想处于这种境况主要是因为自身还停留在跟随 B 站马士兵这类的视频进行编程的被动学习的阶段,别人写啥我就写啥,没有主动学习的经验和动力。也正在想办法改变中。
    JeffreyZhuang
        18
    JeffreyZhuang  
       2023-12-21 11:36:55 +08:00
    从解决具体问题着手,稍微大的项目看代码是看不完的。
    issue 里找问题,解决,提交 PR ,慢慢就熟悉起来了。
    windcode
        19
    windcode  
       2024-06-13 15:38:41 +08:00
    开源项目 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
        20
    yantianzhi  
    OP
       2024-06-21 14:16:32 +08:00
    @windcode 谢谢,帮助很大!
    windcode
        21
    windcode  
       2024-06-21 17:19:58 +08:00
    @yantianzhi 客气哈,不过上面有个链接贴错了,补一下:
    https://github.com/KusionStack/karpor/issues/463
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2653 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:18 PVG 17:18 LAX 02:18 JFK 05:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86