顺序执行

回忆上次内容

  • 上次写了10000行代码
  • 10000行代码 都是写在明面上的
  • 人家一下载​​py​​ 文件
  • 就能看个明明白白
  • 修改或者运行程序都很方便
  • 这程序全都这么公开出来
  • 大家随意修改
  • 好么?
  • 编写程序的人怎么挣钱呢?

编辑

软件授权

  • 很多的商业软件的软件
  • 用户不能看见源代码
  • 更不能改写源代码

编辑

  • c4d 或者 photoshop
  • 都看不到源代码
  • 只能下载可以运行的安装包

编辑

  • 软件是随着计算机从无到有的
  • 这种可以无限复制的东西怎么会成为商品呢?

公开信

  • 比尔·盖茨给计算机爱好者写了一封公开信
  • 他把私自拷贝软件的人定义为盗窃者
  • 雇佣人手写Basic程序
  • 把爱好和乐趣变成了雇佣关系

编辑

  • 软件公司越来越多
  • 软件制作逐渐从爱好者的分享
  • 变成了商业公司盈利的手段
  • 利润确保商业软件公司可以扩大雇佣规模
  • 使得软件行业进化加速
  • 销售的对象是许可证
  • 序列号(licence)
  • 成就了最大的软件公司
  • 微软(microsoft)
  • 这种许可证是什么时候有的呢?

许可

  • 由软件商进行授权
  • 用户通过付费得到使用的授权许可

编辑

  • python不一样
  • python是开源的
  • 直接就能看到源代码的
  • 开源的软件有利于
  • 分享
  • 传播
  • 演化
  • python也有许可证
  • 现代的许可证 license
  • 给用户更多权利
  • 而不是向用户索取利益
  • 比如 GPL 许可证

GPL

  • GPL 又称为 Copyleft
  • 这是从 Copyright 来的
  • copyright 有多个含义
  • copy 是复制
  • right 是权利
  • copyright指的就是复制的权力
  • 图书时代复制靠的是雕的版
  • 所以copyright也指​​版权​
  • 那copyleft呢

编辑

  • copyleft 后面是 left
  • 表示这是和 copyright 完全相反的
  • 著佐权
  • 这是谁提出来的呢?

stallman

  • 理查德·马修·斯托曼出生在纽约
  • 从小喜欢计算机

编辑

  • 长大了之后加入了哈佛和MIT
  • 成为一名计算机工程师
  • 在mit的人工智能研究所工作
  • 当时的mit是黑客文化的核心所在
  • stallman 被称作 rms

自由软件

  • 面对商业软件公司的崛起
  • 软件从爱好者的玩具
  • 变成了商人谋利的工具
  • 软件行业由于商业利益而变得封闭
  • 1983 年
  • 30+岁的时候rms辞了 MIT 的工作
  • 发表了著名的 GNU 宣言
  • 目标是创建一套完全自由的操作系统
  • GNU (GNU's not unix)
  • 当时他说「软件的自由就是人类的自由」

编辑

  • 这里面说这自由包括 4 个层面的概念
  • 自由运行软件
  • 自由学习和修改软件源代码
  • 自由再发布软件
  • 自由发布修改后的软件产品
  • 这就是最开始的自由软件运动
  • 根据这些原则发布了新的许可证类型

许可证

  • 典型的新许可证就是GPL

编辑

  • GPL 授权对被授权者是有要求的,重点强调:
  1. 和大部分开源软件一样,作品放在这里,你可以用,作者不为任何物理损失负责
  2. 如果你,基于这个作品衍生了新的作品,那么这个新的“作品”,必须符合 GPL 协议,否则你就失去原作品的授权
  3. 符合 GPL 协议的作品,在提供给它的使用者的时候,必须同时提供该作品的 GPL 源代码,不能对使用者做出限定
  • 为什么会有GPL呢?

媒介变化

  • 这是由软件本身的媒介特性决定的
  • 我们先看看之前的媒介
  • 报纸、杂志、书籍
  • 都需要具体的纸张和油墨的原子做成产品

编辑

  • 需要造纸厂、印刷厂
  • 也需要邮局、书店、图书馆

视听媒体

  • 黑胶、磁带、cd都需要物理原子的制造
  • 和物理原子的存储和物流

编辑

  • 胶片拷贝、录影带
  • 也是如此

编辑

  • 原来都得有个物理介质
  • 存储、运输都有费用
  • 所以唱片公司、影视公司需要经营这些

计算机时代

  • 现在内容都是计算机中的0101
  • 不需要物理的原子作为介质了
  • 也不需要专门的空间存储
  • 更不需要专门的运力做物流

编辑

  • 基本单位从原子变成了电子
  • 就连打开这些媒体的软件
  • 也一样都是0101
  • 就连这些软件所用的系统
  • 也一样都是0101
  • 就连开发这些软件的工具
  • 也一样都是0101
  • 复制传播的成本几乎为零
  • 大公司视图收取软件许可证的思路被自由软件运动抵抗
  • 很多软件开发者把源代码公开出来

开源运动

  • 自由软件运动有很强的人文色彩
  • 开源运动对于软件就事论事

编辑

  • 吸引着大量用户参与其中

linux内核

  • 一个大二的学生叫 Linus
  • 对编程很感兴趣

编辑

  • 开发出来了 Linux 内核

编辑

  • 在 0.02 版后
  • 来自世界各地的程序员加入到了 Linux 内核的开发中
  • Linux 也是用 GPL 协议开源
  • 传染性开源
  • 是因为只要用它你也得开源

著作

  • 1997 年
  • 出了一本非常有名的书——《大教堂与集市》
  • 被誉为说是开源界的圣经
  • 开源运动的宣言
  • 作者 Eric Ryamond

编辑

  • Eric Ryamond 把普通的这种商业公司和包括 GNU 的这种开发模式
  • 比作教堂
  • 有详细的蓝图、模板,有一步一步的操作流程
  • 把 Linux 这种开发模式比作是集市
  • 没有强制性的分工
  • 任何人也可以随时离开
  • 这些是在大公司里面没有的
  • Eric 实际上觉得这种 Linux 的开发模式
  • 比大公司的官僚主义的模式先进自由得多
  • 这也就是他成功的原因
  • 他把这种模式和通过这种模式产生出来的代码叫做开源软件
  • 自由软件运动逐渐变成了开源运动
  • 开源运动比自由软件运动现实
  • 但是开源软件可以被社会和法律所接受吗?

法律

  • 开源协议最终被在法律上面被承认了
  • 通过 Jacobsen vs Katzer 这个案子
  • Bob jacobsen 在开源网站 Source Forge
  • 建立了 JMRI (java modell railrode interface)
  • 该项目的部分源代码被 Matt Katzer 与其公司 KAMIND 利用到产品中
  • 但没有遵循条款
  • 该产品没有提及原作者的名字
  • 没有说明源代码来源
  • 没有将所开发的新版本软件放在指定的开源网站上供公众下载
  • 也没有在软件包中说明该版本软件与 Jacobsen 开发的标准版软件的区别

编辑

  • 2006 年
  • Jacobsen 向旧金山联邦法院起诉 Katzer 与 KAMIND 公司侵害著作权
  • 并据此向法院提出临时禁令的申请
  • 要求法院下令禁止 Katzer 与 KAMIND公司继续发布、销售侵害著作权的产品

编辑

  • 最终胜诉
  • 形成判例
  • 国内的现状如何呢?

国内现状

  • 目前国内市场定制开发软件的需求越来越少
  • 现在更多的是网站和移动应用
  • 把代码藏起来是没有用的
  • 源代码的开放是发展的趋势
  • 开放源代码可以让更多人才参与开发、修改和传播
  • linux、debian、vim、python、firefox、blender、unreal 都是开源的
  • 已经形成潮流

编辑

  • 这样的个人软件开发者主导的开源项目获得了巨大成功
  • 参与的人越多
  • 知名度越高
  • 项目就越多人参与
  • 参与的人越多
  • 知名度越高
  • 项目就更多人参与
  • 开发者和参与者因为项目的活跃
  • 有大量的赚钱机会
  • 从而有更多时间可以投入项目

软件之外

  • 不但软件
  • 硬件、游戏、甚至虚拟角色歌姬等等方面
  • 开源项目也越来越多
  • 甚至riscv的cpu架构都已经出现了

编辑

  • 我们所学的python就是完全开源的软件
  • python3的这个程序的源程序在哪里呢?

cpython

  • python游乐场 的源代码是完全公开的

编辑

  • 不过时代的洪流是从最早的水滴开始的
  • 在开源没有兴起之前 python 是如何发展的呢?
  • 看到上图中的这个人了么?
  • 更新代码最多的人
  • 也是最早写python代码的人
  • 他就是python语言之父
  • 他叫什么名字呢?
  • 他是怎么把自己的python项目做成世界第一的语言的呢?

总结

  • 计算机本身的特性决定
  • 计算机保存传递的是电子
  • 而不是原子
  • 这就使得存储和分发的成本几乎为零
  • 在这样的物理基础上
  • 出现了自由软件运动
  • 从rms提出的free software 开始
  • 到gnu研发的各种软件
  • 自由软件运动之后出现了开源运动
  • 提倡把源代码开放
  • 也被大量的商业公司所跟随
  • python其实是
  • 一个典型的开源项目
  • 自由软件标志性的语言

[oeasy]教您玩转python - 0006 - 自由软件运动和开源运动的更多相关文章

  1. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  2. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  3. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. StackOverFlow & OutOfMemory

    StackOverFlow & OutOfMemory 两者都为 Error,广义上的"异常" StackOverflow 通常为 Java 虚拟机栈内存不够,JVM 对方 ...

  2. 最全SpringBoot日志配置-按照日期和日志级别进行归档

    指定日志文件路径 在 spring的配置文件中配置: logging: config: classpath:logback.xm 日志配置 <?xml version="1.0&quo ...

  3. UILabel的DrawDrect方法

    一.问题 如果继承UILabel实现自己的一个Label,并且在子类的DrawRect方法中留空,什么都不写,会发生什么? 代码如下: VC @interface ViewController () ...

  4. jq 下载带上token设置form表单并且兼容ie8

    先在publice公共资源里面或者自己随便写一个函数自己记得调用就行 先加载form表单组件 /** * 添加form下载组件 * @param {*} wrp */ appendFormDownlo ...

  5. LeetCode 715. Range Module Range 模块 (Java)

    题目: A Range Module is a module that tracks ranges of numbers. Your task is to design and implement t ...

  6. 如何基于Perl实现批量蛋白名转换为基因名?以做后续GO与KEGG分析

    众所周知,在完成蛋白组学组间差异蛋白筛选后,往往要做GO与KEGG功能富集分析,这就需要我们首先将蛋白名转换为基因名,或者找出基因ID.将蛋白名转化为基因名可能涉及不同的转换工具或数据库,这里有几种常 ...

  7. PMP 变更专题

    在浏览器Console中输入下列对应命令 document.getElementsByTagName('video')[0].requestPictureInPicture()--进入画中画 docu ...

  8. MySql 增、删、改、查数据库

    前言 之前几天写了MySql 的GROUP BY 语句和 JOIN 语句,今天补一下创建数据库.表的语句.首先假设已经暗转好MySQL 数据库,然后创建数据库.表. 创建数据库 create data ...

  9. CentOS7学习笔记(四) 系统运行级别

    什么是运行级别 在CentOS系统中包含七种运行级别,例如命令行或图形化界面就是最常用的运行级别 运行级别的两种表示方式及作用 运行级别 运行级别 作用说明 0 poweroff.target 关机 ...

  10. 一次phoniex表查询报出 org.apache.hadoop.hbase.NotServingRegionException

    org.apache.hadoop.hbase.NotServingRegionException: SYSTEM.STATS,,1607503004410.334266e1a9b7d9859dbfb ...