4

阿木币

0

精华

5 小时

在线时间

老司机

Rank: 2

发表于 2021-12-8 10:27:59 1314 浏览 0 回复

[杂言讨论] 学习方法 | 玩开源如何具有“趟坑” 的意识?

学习方法| 玩开源如何具有趟坑的意识?

     我们每周会做很多技术分享,AirSim教程,ROS小知识各种栏目。但我们发现,“授人以鱼不如授人以渔”,我们希望讲更多学习方法。之前科研杂谈也分享过很多研究生阶段的学习方法和科研方面的知识。后面,阿木实验室运营部小马哥,会尝试分享更多的学习方法相关的东西。如果大家喜欢,会坚持分享。

image-20211206095125802

    大的层面,对于是做开源软件的开发。从逻辑学的角度,我们做任何事,都可以对在做的事情进行一个定义。这样有了定义, 我们就可以更好的进行沟通和讨论,在思想上达成一致。 我们很多同学说自己在做开源软件的开发,我们阿木实验室的prometheus项目也是开源,我们很多商业伙伴也有从国外的开源软件中受益,快速完成产品原型。但我们很少有人去定义“开源”二字。今天,首先我们来试着定义“开源”。

    早期的开源软件来自国外,所以我们看一下维基百科对开源的定义:

“开源是免费提供可用于修改和重新分发的源代码。产品包括使用源代码,设计文档,或产品内容的许可。”

   几个关键词:免费提供,可修改和重新分发, 源代码,设计文档和发布许可。

免费提供

 我们现在说起开源,都会想到github,这个程序员最大的社交平台。只要一句“git clone”,就能将代码从网络拉到本地。

可修改和重新分发

 我们可以对clone的代码新建自己的分支,然后修改,生成应用程序。最后可对修改后的源码依据开源协议,选择是否开源,或者闭源。

源代码,设计文档

 这一项基本构成了一项技术的所有,源代码是技术的体现,设计文档告诉你如何使用这些源代码/技术。所以,这一项定义了开源的是一种技术。不是一种思想,一种运营手段或是其他市场行为。

发布许可

 开源需要遵循发布许可,常见的有GPL、BSD等等。这些都可以关键词检索,核心在于规定了你用了开源软件,在开源基础上修改后,是否应当重新开源出来。如果想了解更多发布许可方面,可以参考我们公众号之前的一篇:《科研杂谈 | 开源给我们带来了怎样的奇迹?》


 从上,我们可以二次定义一下开源,它首先是一项技术,代表着技术资源。其次,它是免费提供的技术。(多么美妙的东西!)最后,享用了免费的技术,有相对应的责任和许可。

  我们针对免费提供深入一下:

  免费提供。免费是相对于收费。收费的技术,例如苹果手机的核心运行程序,大疆无人机的核心飞控程序,都不是免费的。相对应的,安卓系统的核心运行程序,ardupilot/PX4等飞控程序是免费的。注意,我一直强调免费,是为了引出下面。

  大家可能听过 “不可能三角”,举例,在个人投资理财中,有高流动,高收益,低风险不可能三角。例如股市,高流动,高收益,但高风险。银行存钱,低风险,高流动,但低收益。这三项,你不可能同时获得。在项目外包中,金钱,时间,项目质量也是不可能三角。即你不可能外包一个项目出去,价格便宜,开发时间又短,项目质量又高。 在开源软件的不可能三角:免费/开源,Bug的数量,版本迭代少。

   下面解释一下:首先,免费,开源的我认为是来源于互联网精神。在互联网精神中,互联网是开放和共享的,不是封闭的。这些源代码,技术资料,设计文档,本身是一种信息。信息的传播更是需要开放的,因此推导,这些源代码(信息),本身也是开放和共享的。(互联网精神,可以参考:互联网之子:[https://coolshell.cn/articles/11928.html](https://coolshell.cn/articles/11928.html))

aaron_swartz__freedom_fighter_by_caq_qoq-d5rzbi8

    Bug的数量化:Bug就是软件的一些影响正常功能运行的问题。

    版本迭代少:即版本稳定。版本迭代多需要经常去更新系统,每一次更新,都意味着不确定性与风险。

    有初学者,第一次拿到我们提供的P系列或Z系列无人机,知道我们是开源的,满怀欣喜的买回去。却发现怎么这么不稳定,有时候甚至还需要自己多次校准?其实如果是自己从头去刷PX4/ardupilot固件,从头开始摸索无人机, 可能学习成本大概需要3个月的时间。如果用我们做好的产品,并看我们的学习资料,但可能至少也需要1个月的时间。对于我们公司来说,只能尽量缩短这个时间,无法马上兑现,让初学者直接掌握这门技术。本质上,我们还是提供服务,让有学习需求的人,能够尽量高效的去学习到东西。如果没有学习意识的同学,其实对于我们是很难的。

   最后,本文主题,趟坑的意识,我想阐述的是,发现开源有BUG,很多同学上来可能是抱怨,马上到处发问题截图去寻求人解决。互联网精神倡导人人为我,我为人人。其实,阿木实验室希望,所有玩开源的同学,在发现BUG时,都能有尝试自我推导和解决的意识,可以能按照我们推荐的步骤:
  1. 首先看官方wiki,wiki里面是否已经有解决方案。多用搜索。
  2. 尝试看代码,推导代码的逻辑来提升自己的能力。(重要)wiki本质上也来源于代码,代码是最好的不会骗人的说明书。这也是开源最大的杀器。
  3. 到微信群/论坛提问,可以按照这个模式:https://bbs.amovlab.com/forum.php?mod=viewthread&tid=27250&extra=page%3D1
  4. 提问有人指引方向后,继续看代码推导,寻找代码的逻辑。
  5. 通过文字记录下问题与解决方案,让自己的解决方案开源。并尝试推送到项目。 有了意识,然后才能产生行动。一句话就是做开源遇到问题,先有分析和解决问题的意识。

扫一扫浏览分享
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表