V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yantianzhi
V2EX  ›  程序员

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

  •  
  •   yantianzhi · 356 天前 · 1777 次点击
    这是一个创建于 356 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    21 条回复    2024-06-21 17:19:58 +08:00
    crazyTanuki
        1
    crazyTanuki  
       356 天前
    开源汇集 N 个人的语法习惯,建议知道怎么用就够了,别头铁去厘清细节,你面对的是千千万万个开发者的奇技淫巧
    wheat0r
        2
    wheat0r  
       356 天前   ❤️ 1
    不懂编程,但是我觉得设计思路和功能逻辑是关键,代码是第二位的
    CaptainD
        3
    CaptainD  
       356 天前
    这个库我印象很久前看过,你说的底层函数具体指什么呢
    kkk9
        4
    kkk9  
       355 天前
    什么都去了解的话你把握不住的。
    Yuanlaoer
        5
    Yuanlaoer  
       355 天前
    朋友,你的问题是什么呢?
    harry890829
        6
    harry890829  
       355 天前
    看核心把,比如我最近在看长亭开源的问脉,核心内容是针对容器安全的,现在容器中有镜像层的 id ,应该已经可以有地方查询到数据了,但是我想看下他核心是怎么做的,顺便看看使用 golang 如何获取 docker 容器信息这样,想好想看什么,带着目标去看,没必要一行一行看,又不是做 codereview ,也不是去找 0day 的
    yantianzhi
        7
    yantianzhi  
    OP
       355 天前
    @crazyTanuki 您觉得大概了解到什么程度就好呢?因为还是新手,所以不太了解。比如我尝试能够画出每个模块的架构、重点功能的 UML 图,这种能算理解吗?
    yantianzhi
        8
    yantianzhi  
    OP
       355 天前
    @CaptainD 可能不是很底层,是我了解的比较少。比如 os.path 这样的函数,之前编程的时候没有碰到过,在 pycharm 里面 ctrl 进去,发现也没有包括源码,百度出来看的也不是很清楚,这种是不是需要翻阅技术文档?
    yantianzhi
        9
    yantianzhi  
    OP
       355 天前
    @zhangchi25806 想问一下大家刚开始学的时候是如何入手开源项目的,感觉和平时接触的工程项目差距有点大,没法把学到的迁移过来
    yantianzhi
        10
    yantianzhi  
    OP
       355 天前
    @harry890829 谢谢大佬,我是因为感觉目前工作做的没什么技术提升,就是写简单的 Java 的 CRUD 所以考虑看开源代码,可能步子买的有点大了
    noparking188
        11
    noparking188  
       355 天前
    你先看看这个 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
        12
    ExplodingFKL  
       355 天前
    一般开源项目有简要文档说明的,没有的话就看程序入口,顺着执行流程简要看一遍,要不然就看测试用例或者 examples , 啥也没有的话建议不要碰,这项目很快就会无人维护的
    yantianzhi
        13
    yantianzhi  
    OP
       355 天前
    @noparking188 谢谢大佬!学习了
    Yuanlaoer
        14
    Yuanlaoer  
       355 天前
    @yantianzhi “入手开源项目”是指什么?是如何挑选开源项目还是如何给一个项目做贡献?
    yantianzhi
        15
    yantianzhi  
    OP
       355 天前
    @zhangchi25806 想先尝试理解开源项目该如何去阅读,然后再想能否做贡献。
    当然您说的挑选也是很重要的,目前我也没有明确的学习方向,不知道看那些关注度很高的,比如 MongoDB 这种开源的数据库是否合适。
    Yuanlaoer
        16
    Yuanlaoer  
       355 天前
    @yantianzhi 我直白点儿讲,纯属个人角度:
    看起来,你对“开源项目”这个大类别既不太熟悉,也不感兴趣。如果是就是为了提升技术水平,那直接看基数类的教科书可能更好。算法,网络,操作系统等等,对于技术的提升会更扎实有效。
    开源项目或者说开源软件,是自由软件概念下诞生的一种合作方式。“开源”有其了不起的地方,但是对于其“项目”和“软件”,跟其他不开源的“项目”和“软件”并没有什么本质区别。
    yantianzhi
        17
    yantianzhi  
    OP
       355 天前
    @zhangchi25806 是的,之前我对开源的理解主要是体现在“分享精神”这一块,想要涉足这一块的原因是,和公司里的前辈交谈学习方向的时候,他就建议我多看开源软件的编码架构,加深理解。
    其实我想处于这种境况主要是因为自身还停留在跟随 B 站马士兵这类的视频进行编程的被动学习的阶段,别人写啥我就写啥,没有主动学习的经验和动力。也正在想办法改变中。
    JeffreyZhuang
        18
    JeffreyZhuang  
       347 天前
    从解决具体问题着手,稍微大的项目看代码是看不完的。
    issue 里找问题,解决,提交 PR ,慢慢就熟悉起来了。
    windcode
        19
    windcode  
       172 天前
    开源项目 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
       164 天前
    @windcode 谢谢,帮助很大!
    windcode
        21
    windcode  
       164 天前
    @yantianzhi 客气哈,不过上面有个链接贴错了,补一下:
    https://github.com/KusionStack/karpor/issues/463
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:19 · PVG 10:19 · LAX 18:19 · JFK 21:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.