OSS 0级疑问

background

邹欣 老师一直致力于在高校引入 FLOSS 相关课程, 记忆中, 构建之法 (2014) 就是相关课程的总结, 一下又10年过去了, 又绕到同一个微信群中, 才知道, 课程已经进化为: "开源软件开发导论"

而且也将课程公开在 git 仓库中: plan/0.md · master · CSDN 技术社区 / Intro-OSSD · GitCode

感觉和 CSDN 有深度合作, 所以, 课堂作业也要求统一在 CSDN 平台上给出,

第一次作业 (看开源的资料,提五个问题)-CSDN社区

goal

统一给出整体回答

基于自己私人 FLOSS/自由,开源软件社区经历, CSDN 的 BBS/Blog 系统, 一直不支持 Markdown , 实在不习惯, 先用私人 blog 统一回复一下.

同学们有什么问题, 可以直接回复在文章尾部的评注中, 可以针对性进一步沟通.

(PS: 使用 utterances github-issue 来作为容器, 可以长期保存应答...)

MurMur

一名老程序猿的呢喃

一共28位同学, 将问题集中列出来之后, 异常亲切...为什么呢? 和20多年前, 自己提问的姿势多相似哪...

比如, 一次在绿皮火车上偶遇一位僧人, 在大家围着问些佛法知识时, 俺冒了一句: "我能有女朋友, 大师不可能有, 这事儿怎么说?"

可以想象当时场景多尴尬...

正如在各种场景中反复推荐的 提问的智慧 中劝说的; 其实, 提问本身就已经是答案的一部分了;

在软件工程领域, 有一种祖传手艺: 小黄鸭调试法/Rubber Duck Debugging

  • 程序发生问题时, 一般情况就两种:
    • 为什么不运行?
    • 为什么运行了?
  • 此时, 程序猿最有效调试技巧就是:
    • 0: 拿出一个橡皮鸭玩具(就是外国电影中无论男女老少洗澡时放浴缸里那种漂着玩的东西..)
    • 1: 对着 小黄鸭 一行一行解释为什么这么写
    • 2: 一般4.2 分钟左右, 就发现了自己的问题所在, 知道如何修改
    • 如果再次发生问题, 重复以上步骤
    • 实在不行, 带着 小黄鸭 去洗个澡,再回来继续, 一定可以解决.

嗯哼, 这种高端调试方法, 是没有写过程序的人, 绝对想象不出来的.

为什么? 很简单, 我们不可能对一个自己完全陌生的领域, 给出什么靠谱的猜想和思考; 在 蟒营® 在线课程中, 经常给学员提出的 Issue 阐述标准:

  • 尽可能详细
  • 详细程度到想吐
  • 或是, 可以确保3年前的自己, 看到这篇文字, 可以复现问题, 并理解问题本身上下文

那么, 同学们的提问都问了什么呢? 逐一看下来, 体会有几点:

  • 多数同学使用 CSDN 默认皮肤, 包含很多广告位, 自己的内容很难关注到
  • 多数同学字数没超过 420 字, 基本上都是断言式提问, 对问题的来由根本没有阐述, 最多是引用资料中的片段
  • 多数同学没有任何外部链接, 完全不知道看了什么资料
  • 所有同学并没有记述根据资料, 逐步查阅了哪些资料, 以及探查路径和为什么阅读的原因...即, 并没有记录探索过程, 以及过程中自己的思考/尝试/...
  • 所有同学, 没有记录提出问题的用时, 感觉都是随手几秒钟, 就决定了问什么问题...

好玩的是, 所有同学问题姿态/方向, 基本一致:

  • 都是国家有关部门局级领导语气
  • 问题内容也局限在四个方向:
    • FLOSS 知识产权怎么回事儿?
    • FLOSS 软件工程质量如何保证?
    • FLOSS 软件项目如何参与?
    • FLOSS 能力如何识别/积累
  • 不过, 认真分析, 其实所有问题都指向一个本质困惑:
    • 如何从 FLOSS 工程中获利?

面对这种问题, 俺的直觉是想起中亚地区流传的寓言:

  • 一位牧人遇到一个流浪汉,
  • 看不下去就问: "你为什么不去放牧呢?"
  • 流浪汉回答: "放牧为了什么?"
  • 牧人回答: "有了有更多羊哪;"
  • 流浪汉回答: "有了更多羊之后呢?"
  • 牧人回答: "就可以挤更多奶, 剪更多羊毛了哪;"
  • 流浪汉回答: "有更多奶, 更多羊毛之后呢?"
  • 牧人回答: "就能卖更多钱了哪;"
  • 流浪汉回答: "有了更多钱, 你会怎么作?"
  • 牧人回答: "当然是每天不用干活, 晒太阳了哪;"
  • 流浪汉回答: "那你看我现在在作什么?"

这就是没有任何足够探查, 直觉提问的必然困境之一...

同学们的所有提问, 都建立在一个虚幻的基础上:

  • 没有真实参与/发起/组织/... FLOSS 项目
  • 没有长期从事相关开发
  • 没有进入真实 FLOSS 社区进行过切实贡献
  • ...

一切都是从第二/三/四/...N手资源中, 配合自己的常理想象, 然后组合为一个问题;

其实, 邹欣 第0个任务, 本身最大的坑, 不在提出什么问题, 而在:

  • 为什么提出这个问题
  • 这个问题定义过程是如何的?
  • 有经过什么实践来明确问题边界?

...大学生应该能写出自己的思考, 而不是摘抄书本内容

这才是题眼, 只是隐藏了两个字: 过程, 要记述下来 思考过程 , 而不是思考结论, 就象代数解题过程, 代码调试过程, 身体锻炼过程...

一个没有任何过程的结果, 是无法追踪/分析/讨论/...指出在哪个环节出了什么问题, 进而共同解决的;

也就是说, 软件工程中的问题, 和 FLOSS/自由,开源软件 项目中的问题, 其实, 都是有相同基础要求的: SMART原则

  • S代表具体(Specific) 问题/目标要是具体, 明确的, 不可是真理/宽泛的
  • M代表可度量(Measurable) 问题/目标要是可量化或者可衡量的, 即可检验的
  • A代表可实现(Attainable) 问题/目标在付出努力的情况下可以实现的
  • R代表现实性(Realistic) 问题/目标是实实在在的, 现实存在, 可观察的
  • T代表有时限(Time bound) 问题/目标是有期限的, 不是永恒的

简单说, 每一个问题都是要和自己有关联的, 注意, 这种关联不一定只能是利益性的;

其实, 同学们多数问题, 都可以通过几次搜索从 google 中获得精确的回答, 但是, 没有同学有尝试进行自问自答, 结果多数都只是进行了外围人员的常识性提问, 没有进行专业性探查;

即, 没能 置身事内, 完全飘在高处俯瞰没有边界的 FLOSS 世界, 那么, 这种提问, 其实对自己无论学术还是实践都很难有帮助哪...

怎么改进呢? 大声朗读: 提问的智慧 4遍, 就知道如何去作了.

FLOSS 上限

只有一位同学的问题, 有所突破:

...但是肯定对于某些行业和产品,是不能够开源的,因为涉及到机密和版权等等。那么是不是开源理论上存在一个上限呢,即存在一个开源软件的范围,在范围之外的产品是无论如何也不能够开源的。 如果开源真的如我所想存在一个范围上限,那么当他达到这个上限的时候,还会有新的内容出现么?

虽然, 陈述上还有问题, 但是, 这是一个逻辑上相对完备的质疑;

俺的直觉回答:

  • FLOSS/自由,开源软件, 本质上还是软件, 和其它类型软件并无不同
    • 其它类型软件可以作到的, 开源软件一定可以作到, 差异只是积累途径和成本
  • 软件本质上只是工具, 用来辅助人们完成具体工作的
    • 如果某种工作只能使用秘密工具来完成, 那么也就意味着, 这种工作是不能公开的
    • 不能公开的工作, 也就不可能拥有广泛的劳动者
    • 不能为最广泛群体使用的工具, 自然也将自我消失在大众关注范畴中
  • 工具是随着人类能力而变迁的, 工具的上限只能是人类想象力的边界
    • 而想象力是没有上限的
    • 自然, FLOSS/自由,开源软件, 也没有所谓上限
  • 只能秘密制造/使用的工具, 并不能代表人类想象力上限
    • 多数情况中, 反而只是为了制约想象力/创造力, 而特意秘密

trace

先列表一下同学们直觉问题, 再分类针对性回答 开源软件开发导论第一次作业_LIBOJIA的博客-CSDN博客

《中国开源发展蓝皮书》的总论部分以及几篇CSDN上关于开源的文章后...

  1. 开源软件的开发者是通过什么方式来盈利的
  2. 开源社区一旦与行业单位结合,会不会发生互相挤兑的情况
  3. 不同行业之间使用开源方式,如何统合他们的技术标准
  4. 我们该如何参与到开源组织之中,如何成为优秀的开源人才
  5. 在现有大型开源组织的情况下,如何创建新兴的开源组织并且持续运营下去

关于开源软件的五个问题_SITDOWN7的博客-CSDN博客

  1. 像Linux内核这种体量十分庞大的开源项目,可能代码有很多需要改进的部分且有大量的开发者想提交补丁,如此一来审核工作会变得十分困难。比如审核人员过少导致审核速度过慢影响迭代速度,躲着审核人员过多导致人员杂乱会影响到安全问题。所以大型开源项目的管理人员是怎么组成以兼顾安全和效率呢?
  2. 开源项目管理者们如何判定和评估开发者提交的代码的有用性和安全性的?
  3. 如何理解、上手某一开源项目以达到能够提交issue、pr的水平?
  4. 一个开源项目,基金会、项目管理者、开发者、用户之间是一个什么关系?
  5. 开源自己的项目,怎么获得开发者们的关注,并如何管理这个开源项目?

关于开源的五个问题_wzszss的博客-CSDN博客

在阅读了《中国开源发展蓝皮书》的总论部分以及几篇CSDN上关于开源的文章后,我对开源产生了几个问题。

  1. 如何维护个人或团队的合法权益?开源存在的法律问题仍然很多,一旦被侵权也难以维护自身权益,且项目可能被他人恶意改动导致出现严重问题。
  2. 项目存在的技术风险可能会对使用者造成影响,如何减少开源项目存在的技术风险?
  3. 对于他人的合并请求应该怎样处理?如果他人的改动能够提高项目质量,但同时又存在潜在风险,如何抉择?
  4. 如何判断项目是否需要开源,又怎么判断在何时开源?开源虽然能收到更多反馈,但也存在着许多风险;而对于确定要开源的项目,是尽可能确认没有问题再开源还是提前开源以获得更多反馈?
  5. 怎样提高自己的开源开发能力?是多参与已有的开源项目学习,还是自己开发开源项目,以及如何确定适合自己的项目?

开源开发导论第1次作业_zxcvzxcv3295的博客-CSDN博客

  1. 我阅读了(23条消息) 参与开源,从给RocketMQ提ISSUE开始_不识君的荒漠的博客-CSDN博客_开源项目issue这份资料后,了解到面试和课程安排一样需要了解开源项目并提出问题,但是读懂一整个软件的代码会消耗很多时间,而且如果是非常成熟的软件以我的能力不一定能找到并修改,请问如何能找到比较符合水平的来进行修改呢?
  2. 我阅读了(26条消息) 记一次10人跨组织、跨地域的开源协作经历_腾源会的博客-CSDN博客,组队完成开源项目,和其他项目完成之后发布有什么区别吗?
  3. 阅读完(26条消息) RethinkDB开源项目为什么会失败?_钱曙光的博客-CSDN博客后,开源公司是没有直接的利润的,只能依靠投资,而不开源损失的只是一小部分用爱发电的程序员帮忙维护,却能获得直接利润,为什么还要开源?
  4. 开源项目也是分有前后端的,那参与了解一个开源项目也是需要团队的分工合作吗?
  5. 简历需要有开源软件的参与经历,那么通过这门课以及之后的一年多时间可以参与到比较大型的开源项目吗?毕竟只有本科的能力而且时间有限。

开源软件开发导论第1次作业_庐州燕归巢的博客-CSDN博客

  1. 自身的技术兴趣固然占一方面,但是更多的可能是如何去找这些开源项目。这里作者给出了两个选项,那么一个小白或是不太有特别突出的某方面兴趣的人在选择时,该如何去选择呢?
  2. 有些上传者可能怀有不轨的企图,可能添加一些看似无用的代码,实则可能会影响整个系统的运行的情况。Linux的社区较大,因此资源比较好,管理员可以及时发现这些可疑的补丁。然而其他中小型开源社区可能无法做到全盘扫描出这些问题,那么他们平时是怎么处理这些问题的,又可能会有更好更高效的处理方式么?
  3. 从上述描述中可以看出,开源需要注意的事情其实是很繁琐的,涉及到很多需要注意的事项,那么当一些开源工作者在处理这些事项时,是如何确定这些资源是否有权应用到开源项目呢?又是否有一种较为高效的系统或方法来帮助开源工作者们处理这些问题?
  4. 当我们在接触开源的过程中,会遇到一些问题,这个时候去issue中寻找问题往往是解决方法的首选。那么当我们在遇到issue中未曾涉及到的问题时,我们需要提出一些问题或是我们需要提交一些补丁之类的资源时,如何能保证或是提高自己被接受或采纳的概率呢?
  5. Linux社区引导协调各种人员完成协作,他们的代码风格、个人习惯也各不相同,这究竟该如何具体实现呢?这里我问出了一个与本文作者相同的问题。除此之外,我目前也参与过两个软件项目的开发,但是读了一些文章之后,发现开源开发与普通开发有着很大的区别,包括主导权、话语权等,那么这些的具体区别又是什么呢?

开源软件开发导论-第一次作业_TheSleepGod的博客-CSDN博客

  1. 当一个不开源的项目开源时,这意味着我们需要确保自己的项目中的每一部分都不侵犯他人权益,这一繁琐的工作量是令人头疼的,同时这一过程并不一定有开源项目的使用者来帮助你完成,那么请问是否存在快速开源的模组或框架,帮助我们完成这一工作?
  2. 开源项目在开源之前并不会受到关注或者帮助,但作为开发工具使用者的我们似乎有一种动力去完成自己的开源项目(荣誉感或成就感,但这一过程中存在许多繁琐的事情,请问从事开源开发具体是一种什么样的体验呢?
  3. 在开源开发的过程中,如何避免对项目的恶意破坏呢?
  4. 开源社区这种较为松散的管理方式是否存在改进空间?我们如何区分恶意的干扰代码和有益的改进尝试?或者说,我们如何照顾到尽可能多的愿意为开发软件做出共享的开发者?
  5. 请问这种共识如何保持长久、准确地保持在开源软件的开发过程中呢?

开源软件开发导论——第1次作业_org_wjw的博客-CSDN博客

  1. 参与社区讨论并且学习其他人解决问题的方法能否算做参与了开源软件开发过程,是不是说只有提交相应代码才算做参与了开源开发?
  2. 在工作中积累的经验和见识主要是指哪些方面的经验和见识,这些经验和见识如何帮助我们的工作?
  3. 如果社区回复速度太慢,甚至不回复,那么无疑会挫伤参与者的积极性,如何解决这个问题呢?
  4. 如果开源参与者故意提交恶意代码造成损失,如何避免这种行为再次发生,明令禁止提交是否合适?
  5. 开源软件开发公司是否收益要低于非开源软件开发公司?

关于开源软件的五个问题_若云白[旺柴]的博客-CSDN博客

  1. 如何快速理解已有项目的代码结构、用到的技术,并习得为其贡献代码的技术?
  2. 如何防止恶意代码?
  3. 软件开源后如何保持自己的竞争力?
  4. Linux这样的影响力巨大的开源项目,需要Linus这样一位“独裁者”,开源软件是否能有一种更加民主的形式呢?
  5. 开源软件如何保证风格统一?

关于开源软件的五个问题_pikachu_xakumes的博客-CSDN博客

  1. 对于一个项目,学习所花费成本都比较大,而相同时间所获取的价值可能并不相同,而同一技术的实现可能存在多个项目,该如何甄别对自己更有价值的项目。
  2. 学习开源项目更多是以增量开发为目的还是以便于应用他人技术为目的,抑或是学习他人的代码思想和风格等。
  3. 在企业中,一个团队大多是以同一价值取向为驱动的,而开源项目中因人价值取向差异或者文化差异是否会导致开发方面进程方面的问题。
  4. 开源的项目在进行增量开发的时候如果某一功能拓展仅在部分项目中有用而在其他项目中冗余该如何处理。
  5. 最近经常有人提倡开源变现,这是否与开源的初衷有所冲突,或者是否属于一种付出不及收获的想法。

开源软件开发导论——第1次作业_二九L的博客-CSDN博客

  1. 对于已有的开源项目,如何快速理解项目,并上手开发呢
  2. 发布issue一般是什么形式的?是提出建议,指出不足还是有明确的代码。什么程度才算是参与了开源项目
  3. 参与开源项目会有收益吗
  4. 如果因为自身提交的代码,导致项目出现了问题,损失由谁承担?
  5. 对于新手,开源开发有什么入门的教程吗

开源软件开发导论第1次作业_根号负一2058的博客-CSDN博客

  1. 面对一个半成品开源项目,如何减少阅读这个项目的代码的时间以求尽快的能对代码进行自己的修改和使用
  2. 如何防止开源项目成果被他人窃取利用
  3. 人员的流动造成代码的历史遗留问题,开发者对开源项目具有什么样的责任
  4. 开源软件的发展周期是怎么样的
  5. 开源项目的参与者除了提升技术外,是否能通过项目得到一些实际的利益和收入

开源软件开发导论第一周作业1——关于开源软件的五个问题_saber3297的博客-CSDN博客

  1. 开源项目的开发模式和非开源项目有何异同?
  2. 开源软件用于商业用途需要怎样的流程和许可?
  3. 给开源项目提供代码后,项目被非法利用我需要承担怎样的责任?
  4. 开源软件可能会包含世界各地众多的代码贡献者,请问如何保证代码的正确合理,审核机制是什么样的?
  5. 开源软件怎么获得报酬?

开源软件开发导论第一周作业1——关于开源软件的五个问题_橙原 凯的博客-CSDN博客

code: 7054

  1. 感觉介入开源项目是很困难的,开源项目负责人是如何让介入者快速理解代码的呢?没有时间去理解整个项目代码的情况下,如何才能开始编写项目代码呢?
  2. issue的具体作用是什么?提bug?讨论用法?提了issue就算介入开源项目了吗?
  3. 参与开源项目会不会有人在未通知的情况下直接修改了自己写的代码部分的内容的情况呢?
  4. 在编写代码的时候若进行分模块/分文件负责的安排是否能较大程度的减少合并冲突的情况呢?(意味着尽量保证有且仅有一个人编写同目录/同文件下的代码)
  5. 开源软件有可能获得收益吗?如何评定与分配?他人使用开源软件盈利,利益会分发到开发人员手中吗?

开源软件开发导论——第1次作业_Obliviate°的博客-CSDN博客

  1. 参与开源项目时如何提出issue/pull request能够让项目管理者清晰地理解并接受该补丁?
  2. 作为项目主管人如何合理地分配组内各成员的任务?这种情况下独裁管理模式是否更好?
  3. 蓝皮书中提出了加强重点开源人才培养、推动开源教育和价值引导的建议,北航在这方面有什么相关举措来培养开源人才吗?
  4. 结合我在软工实践中的经验,想提出问题:如何在与项目队友提交的代码合并时快速找到所有的不同之处?
  5. 当已有的项目代码很复杂时如何快速度过新手期,理解代码并开展工作?

【课程作业】对开源软件开发的疑问_冇_头脑的博客-CSDN博客

  1. 一个开源项目一般需要提供什么说明或资料,以让更多的开发者更方便的了解、加入本项目。
  2. 如何能更准确地搜索到感兴趣的、且社区较为活跃的开源项目。
  3. 一个项目开发到什么状态的时候适合开源,或者说想要开源的项目最好处于一个什么样的状态。
  4. 开源项目维护者如何高效地审查提交的pr。
  5. 开发人员的流动会不会造成代码的历史遗留问题,开发者对开源项目具有什么样的责任。

关于开源的五个问题_maple0826的博客-CSDN博客

  1. 发现该项目吸引作者的一大原因是代码质量,那么在我们创建开源项目或者参与开源项目时,是不是也需要创建或遵守一定的代码规范、文档标准?有没有,类似于开源标准这样的已经创建好的规范标准?
  2. 发现即使是Linux社区(可以说是世界上最成功的开源社区之一),在代码审查、测试部分仍然存在资源不足的问题,或者说,贡献者修复bug和审查者审查相应贡献,是一个耗费精力不对等的过程,毕竟要读懂一个人的代码是很困难的,那么现在的开源项目是如何应对这个问题的?是否有一定的贡献要求以降低审查者的压力,如添加规范的注释、贡献者进行一定的测试等?
  3. 对于开源项目的维护者来说,其责任无疑是巨大的,那么如果某个项目出现了问题,维护者是否要承担无限责任,还是使用者也要为“开源”二字承担一定风险?
  4. 且不论当事人是否真的存在故意提交危险代码,对于这种故意或无意下存在安全隐患的贡献,项目维护者如何辨别呢?如果是依靠自身的技术能力,那么当项目愈发庞大后,对于审查者的能力要求也会相应提高,面对满足要求的审查者稀少的情况,又是如何解决的呢?
  5. 对于一个开源项目,其使用的组件等也应该是免费的或遵循相应的开源协议,这要求贡献者有较强的版权意识(或许是这么说),较为了解开源协议,对于MIT、BSD等常见的开源协议,它们主要涉及的是哪些领域?这些协议是否具有法律效力?开源项目拥有者的利益被侵犯(如项目被公司等申请专利),是否能从法律层面维护自身的利益?

【课程作业】对开源软件开发的疑问_伏罗希洛夫射手的博客-CSDN博客

  1. 在确定自己感兴趣的方向后,有什么好的方式去寻找一个合适自己的开源项目来参与?在这段话中,作者为对数据库和消息队列感兴趣的人提供了两个选择,但我更感兴趣的是有没有这样一个好的寻找手段,能够方便“开源小白”去找到这样的合适自己的开源项目。
  2. 作者为对C语言不熟悉的“开源小白”提供了开始的思路,也就是在参与开源项目前可以做的事。我还想知道:这种方法是否可以延伸到其它语言或方向,或者说想要参与到某一开源项目中,有哪些工作是最好能提前做好的?
  3. 作者在最初几次pr的时候大部分都没被接受。我对此的疑问是:一般而言代码不被接受是出于什么原因?如果pr被拒项目维护者是否会告知拒绝的理由?以及如何让自己的代码更容易被开源项目接受?
  4. 作为开源项目的维护者,如何高效地审查提交的代码?小而美的补丁固然好,但也不总是那么容易得到的,尤其对于一些并不热门的开源项目来说。
  5. 协调与引导众多开发者并非易事,我好奇这种工作是否也会体现到开源软件开发的进程中来,或者说开源项目和其它一般项目相比,开发流程的区别主要体现在哪里?

开源软件概论 第一次作业_Nana7mii的博客-CSDN博客

  1. 关于开源软件的安全性,应该如何保障,当今社区中是否有能够检测漏洞的成熟的机制,使用开源软件是否会带来相应的安全问题
  2. 其中,开源正在吞噬软件,为什么在大变局中被认定为“危”,难道“软件吞噬世界,开源吞噬软件”对于中国的软件行业不是一个乐观的局面?这和我的认知有一点差别。我认为开源在吞噬软件这个情形,对于行业应该是一个巨大的变革,但是不至于用“危机”来形容,这是为什么呢,难道软件开源化对于行业会带来什么负面影响么?
  3. 关于开源软件,我觉得这种商业上的认定其实是很难判别的。就比如,整个软件如果要拿来商用,那么利益和专利应该归谁所有。如果社区中有贡献者提供了优秀的补丁,甚至于大大改变软件性能的补丁,他们是否享有一定的分享利益的权利。难道说开源软件,真的只是纯纯的“用爱发电”?
  4. 关于开源人才的认定,何为开源人才?是指精通开源项目技术栈的人才么?一个优秀的程序员,对他熟悉的领域的开源软件做出贡献,他算不算开源的人才?这里的开源人才亦或者说是全能人才?我们需不需要专门去对于开源方面培养相关人才?我认为开源人才应该首先是某一个领域的人才,然后对于开源项目有着足够的热情和精力去贡献,然后才能变为开源人才。想要留住开源人才,就肯定要想办法留住他们的热情,那么就回到了问题3,我们是否对于贡献者有着一套很好的激励体系。
  5. 一个困惑:我自己在上个学期做项目的时候,小组内用git进行版本维护,感觉使用起来效果很好。开源软件同理,感觉也是一个更大的项目,只不过所有人都能参与进来,把自己想要修改和添加的内容上传,经过管理员审核,就能够添加到远程仓库中。但是肯定对于某些行业和产品,是不能够开源的,因为涉及到机密和版权等等。那么是不是开源理论上存在一个上限呢,即存在一个开源软件的范围,在范围之外的产品是无论如何也不能够开源的。如果开源真的如我所想存在一个范围上限,那么当他达到这个上限的时候,还会有新的内容出现么?

我对开源项目的五个问题_Mirror_and_Smoke的博客-CSDN博客

  1. 在开源项目开发时,如果项目的参与者一部分认为一种方法好,另一部分认为另一种方法好,最后对接的部分出现了问题,这就是南辕北辙了。如何确保项目的参与者之间不会存在南辕北辙的情况?
  2. 开源项目的参与者的水平、看代码的角度都有差异,由木桶效应,代码的效率受相对低性能部分影响较大。那么开源项目开发时如何保证代码的各项性能优异?
  3. 随着目前关于开源的讨论越发强烈,项目开源是否是一个大多数时间更优的选择?
  4. 如果开源项目获得了经济效益、名声效益,那么开源项目的收益应该怎么分配?
  5. 如果我现在就想投入开源项目开发,但又不是很确定自己的能力能完成哪些部分,作为一个开源项目的参与者,我们应该如何确定自己的工作范围?

[开源软件开发导论课程——第一次作业]有关开源软件开发的5个问题_宿舍断网了的博客-CSDN博客

  1. 越贴近底层确实越通用,但是开发成本也越高,这个贴近是怎样的贴近。并且并不是所有轮子都要自己造,在当下各种软件都比较完善,作为一个学生想去参加一个贴近底层的开源项目的入门就变得十分困难,我们应该如何选择自己力所能及的开源项目,或者如何将在学校所学的课程学以致用?
  2. 周围的人都说卡脖子,并且将事情描述成只要美国断供,中国的操作系统、航天导航就会瘫痪,在已有得开源代码支持下我认为只是技术倒退一部分,并不是直接瘫痪,就如鸿蒙系统,虽然刚开始几乎全是安卓得代码,但现在通过一句一句地更改,逐步实现国产化。在查找开源代码相关资料后,心中对开源的程度仍是模糊不清。
  3. 如何确保安全性?如果用户使用开源代码需要自己检查代码是否有后门,那么开发的时间成本就会很大。
  4. 不论是GPL还是LGPL,确实都从一定程度限制了这种问题,但是一个公司的软件如果是闭源的,那么他是否运用了开源社区里的成果也是不能得知的,请问如何有效避免这种行为?
  5. 较大的开源项目从外界吸收新鲜血液会不会有效率问题,一个是代码质量可能参差不齐,另一个是项目作者可能无法每一个issue都认真查看。

关于开源软件的个人疑问_qingchenn的博客-CSDN博客

  1. 开源软件的知识产权问题应该如何判定,如何保证创作者的著作权?
  2. 其他公司利用某开源软件获得了丰厚的利润,作为该开源软件的创作者是否有权利去分享这些利润?
  3. 一般开源软件的发展周期是怎么样的?
  4. 位于下游的开源创作者如何处理上游软件可能会出现漏洞与问题?
  5. 关于开源软件开发,开源社区对于项目代码等的审核是依据的什么标准?

我对开源软件开发的5个疑问_m0_61820655的博客-CSDN博客

在阅读了2022中国开源发展蓝皮书及网上相关资料后,我对开源软件开发管理有了一个较为初步的了解,但依然存在着一些疑问。

  1. 参与开源项目的同志来自各地且互相之间未必熟悉,请问如何保证仅在线上沟通的基础上让开源项目顺利进行,如果有对项目的恶意破坏者或因互相不熟悉缺少沟通而产生的代码冲突应怎样解决或预防?
  2. 开源项目是否享有合法的知识产权权益,如果参与的开源项目被非法盗用并商业化或恶意破坏,开源项目参与者能否获得补偿,能通过怎样的手段维护劳动成果?
  3. 开源软件项目负责人通过怎样的审核与检验保证代码的正确、健壮性?由于审核任务繁重,开源参与者在提交代码时是否会受到一些限制?
  4. 开源项目的参与者除了提升技术外,是否能通过项目得到一些实际的利益和收入?
  5. 怎么寻找适合自身技术栈的开源项目,在加入一个开源项目后怎样迅速判断这个项目需要哪些改进,自己的编码应从哪里着手?

Intro-OSSD HW1 关于开源软件的5个问题_symxl的博客-CSDN博客

  1. 常见管理模式有哪些,具体管理原理是怎样的
  2. 是否会有筛选困难的问题,如果有,如何处理
  3. 如何确保项目本身的安全性以及使用者的安全性
  4. 开源开发的主要优势与劣势
  5. 开源软件开发者与项目的反馈模式是怎么样的

对“开源软件开发”的5个疑问_buaalkn的博客-CSDN博客

  1. 给开源项目提交的代码会通过审核,但审核又是怎样保证所提交代码中一定不会对开源项目产生负面影响?
  2. 如果因为所提交的开源代码导致上线的项目出了问题,那这些损失应该由贡献者承担还是这个项目的负责人或是审核员承担?
  3. 我理解的开源就是把自己的成果拿出来供大家一起测试和改进,那么对于某些开源软件做出了很大贡献的人,是只是出于爱好,还是能得到一定物质上的奖励?
  4. 我作为一个大学生来说,水平还十分欠缺,那么我该如何找到合适自己的开源项目,并通过自己的努力实际的为此做出贡献?
  5. 之前在github创建仓库时,发现需要选择开源协议,这些不同的开源协议有什么较大的不同吗?体现在哪方面?

关于开源项目的五个问题_Levi1022的博客-CSDN博客

  1. 项目开源后,别人下载使用进行删改更新或者盗用商业化,最后项目的归属怎么划分,知识产权怎么保护
  2. 开源项目能否盈利,既然已经开源,用户可以免费获取源文件并使用,开发者的开发维护成本怎么回收?
  3. 企业开源可以提高知名度,带动付费项目收入,而个人开发者开源除了用爱发电又有什么好处?
  4. 开源项目的开发模式和非开源项目有何异同?
  5. 项目开源很多人可以提供修改、debug、补丁、这些内容的审核和测试该如何高效进行?

我对开源软件开发的疑问_喝水小魚的博客-CSDN博客

开源软件有什么样的类型,所有的开源软件都是完全免费开源,可以用于教学甚至商业用途吗?

开源领域著名事件:知名开源库Faker.js的作者Marak Squires,选择主动恶意破坏该个项目,并且不仅“删库跑路”、还注入了导致程序死循环的恶意代码,使得全球大量使用该项目的个人与企业都受到了不小的影响,请问开源的发展方向是否包含给开源作者带来合理的利益?

开源软件可能会包含世界各地众多的代码贡献者,请问如何保证代码的正确合理,审核机制是什么样的?

如何使用开源代码,如何检索所需功能的项目,请问如何 快速上手开源代码的利用?

如何对开源项目做出贡献,如何依据自己的能力确定合适的开源项目进行开发?

关于“开源”的问题_半人481的博客-CSDN博客

  1. 如何保证开源项目中的补丁是无害的?对于恶意或无意识的制造漏洞有怎样的判定方法?又如何进一步约束。
  2. 开源社区的审查者需要具备什么程度的知识和能力?才能正确审视各种开发者提交的代码。
  3. 什么样的开源项目才能在不断地迭代发展中仍具有鲜活的竞争力?哪些类项目或什么情景下的项目更适合开源?
  4. 是否有完全致力于开源的工作者?他们是否有日常的收入来源?
  5. 新人从哪些开源项目入手比较好?有没有一些有价值的参考教程。

我对开源软件开发管理的五个疑问_Streamin'的博客-CSDN博客

  1. 开源软件是通过怎么样的审核机制来保证软件本身的健康性,避免错误和冗杂代码对软件进行破坏的呢?
  2. 在开源软件的开发过程中,应该怎样确定自己的开发方向?
  3. 如何查询开源软件的各个开发版本?
  4. 开源软件的基础操作教程?还不清楚。
  5. 开源软件的使用协议怎么查询?可以用作私人的软件吗?

refer.

有关链接 如何成为一名黑客

logging

  • 220901 ZQ init.+pub

Comments


大妈的多重宇宙 - YouTube

全新自媒体系列...科学幻想,读书,说故事...

订阅 substack 体验古早写作:
Zoom.Quiet’s Chaos42 | Substack


蟒营®编程思维提高班Python版

**2021.01.11** 因大妈再次创业暂停定期开设, 转换为预约触发:
  • + 任何问题, 随时邮件提问可也:
    askdama@googlegroups.com

Copyright 2001-2023 by Zoom.Quiet
Content licensed under the Creative Commons attribution-noncommercial-sharealike License.
Contact me via , mail ,github or gitlab . Tip me via || (ATOM)