[oeasy]教您玩转python - 0006 - 自由软件运动和开源运动
顺序执行
回忆上次内容
- 上次写了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 授权对被授权者是有要求的,重点强调:
- 和大部分开源软件一样,作品放在这里,你可以用,作者不为任何物理损失负责
- 如果你,基于这个作品衍生了新的作品,那么这个新的“作品”,必须符合 GPL 协议,否则你就失去原作品的授权
- 符合 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其实是
- 一个典型的开源项目
- 自由软件标志性的语言
- 是谁制作出了python这个语言呢?
- 我们下次再说!
- github:GitHub - overmind1980/oeasy-python-tutorial: 良心的 Python 教程,面向零基础初学者简明易懂的 Python3 入门基础课程。在linux+vim生产力环境下,从浅入深,从简单程序学到网络爬虫。可以配合蓝桥云上实验环境操作。
- gitee:oeasy教您玩转python教程: 面向零基础初学者的简明易懂的 Python3 入门课程,对没有编程经验的同学也非常友好。在vim下从浅入深,逐步学习。从基础入门学习到爬虫。 作者:oeasy
[oeasy]教您玩转python - 0006 - 自由软件运动和开源运动的更多相关文章
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- C# 泛型里使用四则运算的办法,委托的妙用
直接上代码 public static class TestGenricCalc { public static T Clac<T>(T t1, T t2,Func<T,T,T> ...
- Json.NET Converting between JSON and XML
Json.NET supports converting JSON to XML and vice versa using the XmlNodeConverter. Elements, attrib ...
- nginx学习记录【一】在windows上的安装nginx的教程
1.下载地址 http://nginx.org/en/download.html 2.选择windows版本 如下图: 3.解压并运行 解压到指定目录,如下图 打开cmd,然后cd到那个目录,如下图: ...
- TIM_Cmd()函数引发的思考
在使用定时器的输入捕获进行频率测量时发现用TIM_Cmd()函数关闭定时器后,输入捕获中断还是会被触发,这就很奇怪了,输入捕获是定时器的一种模式,关闭定时器不就意味着输入捕获捕获也被关闭了吗?可是实际 ...
- 拼多多面试:Netty如何解决粘包问题?
粘包和拆包问题也叫做粘包和半包问题,它是指在数据传输时,接收方未能正常读取到一条完整数据的情况(只读取了部分数据,或多读取到了另一条数据的情况)就叫做粘包或拆包问题. 从严格意义上来说,粘包问题和拆包 ...
- scala的基本语法
区分常量和变量 常量 变量 写一行代码,写多行代码,终端代码 数据类型 byte char short int long float double boolean 数据类型与java相似,但与jav ...
- 修改 WIN10 WIN11 操作系统启动菜单名称
修改 WIN10 WIN11 操作系统启动菜单名称 一块硬盘装双系统后,自动更新的启动菜单名称可能无法区分WIN10.WIN11,需要通过"卷2"."卷3"字样 ...
- 快速监控 Oracle 数据库
Oracle 数据库在行业内应用广泛,通常存放的非常重要的数据,监控是必不可少的,本文使用 Cprobe 采集 Oracle 监控数据,极致简单,分享给大家. 安装配置 Oracle 简单起见,我使用 ...
- 机器学习策略篇:详解清除标注错误的数据(Cleaning up Incorrectly labeled data)
清除标注错误的数据 监督学习问题的数据由输入\(x\)和输出标签 \(y\) 构成,如果观察一下的数据,并发现有些输出标签 \(y\) 是错的.的数据有些标签是错的,是否值得花时间去修正这些标签呢? ...
- raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID
背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install ...