Python之父重回决策层

在Guido van Rossum(吉多·范罗苏姆)卸任BDFL(“终身仁慈独裁者”)一职半年多之后,Python社区迎来了新的治理新方案:指导委员会模式,而经过投票Guido van Rossum也成为五大指导委员之一,Python之父Guido重回决策层。

BDFL:全称是 Benevolent Dictator For Life(终身仁慈独裁者),该位置被赋予绝对的最终决策权,因为龟叔具有PEP的最终决策权,而反观PHP改进则全部是由社区投票决定,所以被称为”独裁者“;而“仁慈“这一词说明龟叔为人很好,不像linux大佬那样不服就怼,还回回能赢,哈哈!

事件一、龟叔创Python

Guido von Rossum(以下简称:龟叔)是荷兰人,生于1956年1月31日。1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位。

龟叔接触并使用过诸如Pascal、C、 Fortran等语言。这些语言的基本设计原则是让机器能更快运行,因为早期个人电脑配置极低内存可能就一百多kb,所以早期语言很难能实现什么内存管理、垃圾自动回收、面向对象等,那会让你的电脑直接卡死! 但是到了上世纪90年代,计算机得到了快速的发展,硬件的性能越来越好(所以在90年代大量的面向对象语言被开发:Python、Visual Basic、Ruby、Java、JavaScript、PHP),所以Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松而简洁的编程。

ABC语言让龟叔看到希望。ABC是由荷兰的数学和计算机研究所开发的。20世纪80年代中旬Guido在该研究所工作,并参与到ABC语言的开发。ABC语言以教学为目的。ABC语言希望让语言变得容易阅读,容易使用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣。
如下面是一段来自Wikipedia的ABC程序,这个程序用于统计文本中出现的词的总数:

HOW TO RETURN words document:
   PUT {} IN collection
   FOR line IN document:
      FOR word IN split line:
         IF word not.in collection:
            INSERT word IN collection
   RETURN collection

HOW TO用于定义一个函数,PUT是赋值,是不是和Python有很多相识之处。

但是因为硬件性能和语言本身存在的缺陷等原因此语言并没有流行起来,而1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承,所以python就被发明了。1991年,第一个用C语言实现的Python解释器公开发行。

事件二、龟叔离职

2018年7月12日,龟叔通过开发者邮件组宣布要“移交权力”,促使他作出此决定的导火索是 PEP 572这个改进提案,该提案获得通过后的三天内龟叔收到了太多的反对意见,龟叔在邮件中有这样一句话:“我从未想到需要为一个 PEP 费上这么大的劲,并发现有这么多人鄙视我的决定”,从这句话可以看出大佬已经心力憔悴了。。。

  • 龟叔离职后接受外媒 InfoWorld采访,其中就聊到这此次退出决策层背后的隐情:https://www.oschina.net/news/98455/guido-van-rossum-resigns
  • 龟叔邮件原文链接:https://mail.python.org/pipermail/python-committers/2018-July/005664.html,以下翻译自google翻译)

PEP:全称是Python Enhancement Proposal(改进提案),社区通过PEP来给 Python 语言建言献策,每个版本你所看到的新特性和一些变化都是通过PEP提案经过社区决策层讨论、投票决议,最终才有我们看到的功能。

而这个引发大佬生气的改进提案PEP 572究竟是个什么功能呢?

PEP 572:新增了赋值表达式:=,这个表达式是不是和赋值符号=很像呢?其实他们的功能都是一样的:给变量赋值,那区别在哪里呢?猪哥给大家举一个简单的栗子:
befor:

i = 3 + 5	# 这个叫赋值语句
if i:
    return i

after:

if (i: =3 + 5):	# : =这个叫赋值表达式
    return i

可以看到新增的赋值表达式使代码更加简洁,而且这真的只是一个轻微的语法变化,不知为何会引发如此大的震荡,可能很多人早就对龟叔大佬不服了吧!

这个改进将在python3.8版本中使用,目前python3.8开发到了alpha 02版本,喜欢尝鲜的朋友可以去官网下载来玩玩:https://www.python.org/downloads/release/python-380a2/

事件三、新的治理方案

随着龟叔的撂蹶子,Python的未来之路牵动了万千开发者的心。没了首领,Python 今后的发展会怎么样?社区将如何运作?谁来领导 Python 这门语言和社区呢?这些问题不得不解决,而用什么样的方式解决,这就需要先由社区讨论并最终决定。

于是,Python 社区共提出了 7 种治理方案,分别是 PEP 8010、PEP 8011、PEP 8012、PEP 8013、PEP 8014、PEP 8015 与 PEP 8016。这些提案都汇总在 PEP 8000 之下,其中最终胜出者,将决定 Python 未来的发展方向和方

2018年12月17号,经过94位核心开发者投票,最终PEP 8016:指导委员会模式当选为新时代的 Python 社区治理方案。

PEP 8016 治理方案采用指导委员会模式,其特点是引导治理的迭代,其中提出了不信任投票,也就是弹劾机制,可将任期内的当权者赶下台;它严格限定了在委员会里,只允许少于 50% 的成员是企业(5 人委员会里最多有 2 个);并且关注到核心开发者的选举/淘汰、如何更新治理提案等问题。PEP 8016 也提出了新的 PEP 流程,目前的 PEP 流程是提案人确定 PEP 的选题方向,提案人负责收集与整合来自整个社区的反馈。然后,相关领域的专家们汇总全部讨论,并开启为期 14 天的审查,之后进行社区投票。如果一个 PEP 很有争议,任何专家成员都可发起动议来拒绝通过它,这需要超过 2/3 的票数。PEP 8016 的 PEP 流程:理事会在必要时可直接地批准/否决 PEP,但最好是设置流程来避免这样做决策,例如,将决策权委派给团队或者 BDFL 代表。

这种治理方案有点和联合国安理会的治理办法类似,同样五个委员,同样具有一票否决权。
投票结果链接:https://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_fe2b74aea628b45

事件四、龟叔当选指导委员

2019 年2 月 4 日,在为期两周的投票后,Python 社区选出了新治理模式下指导委员会的 5 名成员,在17位候选人中龟叔以得票数第一当选!

我们来看看指导委员会的职能:

  • 维护 Python 语言及 CPython 解释器的质量与稳定性
  • 尽可能使做贡献是便利的、包容的与可持续的
  • 巩固核心团队与 Python 软件基金会的关系
  • 为 PEP 建立恰当的决策流程
  • 为贡献者与核心团队寻求共识
  • 当其它所有方法都失败时扮演“最终裁决法庭”的角色
  • 这个治理模式是借鉴自 Django 项目,详细内容参见 PEP-13。

值得一提的是龟叔是自荐成为候选人的,并且是 17 名候选人中最早自荐或被提名的几个人之一,说明大佬还是心系python千千万万的开发者;回忆起同样回归的linux之父,我想这些语言之父对自己发明的语言而言肯定会有一种难以割舍的情怀!

Python未来发展之路

看完整个事件的始末,我有种喜忧参半感觉,忧的是python社区治理方案看似从专制走向民主,但谁又能确认这不会沦为新一轮的决策层斗争的开始,因为此次事件的根本原因在于核心开发意见不一致造成,而增加决策人员的增加,势必会造成更大更多的意见不一致,那时决策层是否会产生更大的矛盾?是否会影响python每一年半一次的发布周期?喜的是龟叔的回归我想对千千万万的Python开发者们无疑是一个巨大的好消息,有种武侠小说里帮主归来的感觉。希望在帮主的带领下Python一统江湖!

参考:
1.https://www.python.org/dev/peps/
2.https://my.oschina.net/editorial-story/blog/2989027

原文地址:https://www.cnblogs.com/pig66/p/10502648.html

时间: 2024-10-12 02:31:03

Python之父重回决策层的相关文章

Python之父重回菠菜平台开发决策层,社区未来如何发展?

春节假期菠菜平台开发,需要的请找dsluntan.com,结束了,大家陆续地重回到原来的生活轨道上.假期是一个很好的休息与调节的机会,同时,春节还有辞旧迎新的本意,它是新的轮回的开端. 在 Python 社区里,刚发生了一件大事,同样有开启新纪元的意义:在"Python 之父" Guido van Rossum 宣布卸任 BDFL(终身仁慈独裁者)后,Python 核心开发者们历经半年多的时间,终于为新的治理方案选出了第一届的"执政成员". 2 月 4 日,经过为期

Python 之父的解析器系列之三:生成一个 PEG 解析器

原题 | Generating a PEG Parser 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公众号作者) 声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议.为便于阅读,内容略有改动. 首发地址:https://mp.weixin.qq.com/s/ojSq6u9FC0xlBDncuoKczw 我已经在本系列第二篇文章中简述了解析器的基础结构,并展示了一个简单的手写解析器,根据承诺,

Python之父|仁慈的独裁者

Guido van Rossum,Python之父,就是他用一部英国喜剧<蒙提·派森的飞行马戏团>(Monty Python and the Flying Circus)命名了这门语言.1989年,他在荷兰创造了Python(果然名字里有Van的都是荷兰人吗): 1991年初,Python发布了第一个公开发行版,而后,被无数程序员所使用. 在Python社区,他被人称为"仁慈的独裁者"(Benevolent Dictator For Life),据说这一名字也是取自那部电视

Python之父新发文,将替换现有解析器

花下猫语: Guido van Rossum 是 Python 的创造者,虽然他现在放弃了"终身仁慈独裁者"的职位,但却成为了指导委员会的五位成员之一,其一举一动依然备受瞩目.近日,他开通了 Medium 账号,并发表了第一篇文章,透露出要替换 Python 的核心部件(解析器)的想法.这篇文章分析了当前的 pgen 解析器的诸多缺陷,并介绍了 PEG 解析器的优点,令人振奋.这项改造工作仍在进行中,Guido 说他还会写更多相关的文章,我们就拭目以待吧. 本文原创并首发于公众号[Py

Python 之父再发文:构建一个 PEG 解析器

花下猫语: Python 之父在 Medium 上开了博客,现在写了两篇文章,本文是第二篇的译文.前一篇的译文 在此 ,宣布了将要用 PEG 解析器来替换当前的 pgen 解析器. 本文主要介绍了构建一个 PEG 解析器的大体思路,并介绍了一些基本的语法规则.根据 Python 之父的描述,这个 PEG 解析器还是一个很笼统的实验品,而他也预告了,将会在以后的系列文章中丰富这个解析器. 阅读这篇文章就像在读一篇教程,虽然很难看懂,但是感觉很奇妙:我们竟然可以见证 Python 之父如何考虑问题.

从 Python 之父的对话聊起,关于知识产权、知识共享与文章翻译

一.缘起 前不久,我在翻译 Guido van Rossum(Python之父)的文章时,给他留言,申请非商业用途的翻译授权. 过程中起了点小误会,略去不表,最终的结果是:他的文章以CC BY-NC-SA 4.0 许可协议进行授权.部分对话如下: CC 协议是一种授权许可协议,我曾看到过几次,但了解不多,所以便查阅了相关的内容. 本文主要是作个记录,既是加深自己的理解,也给有需要的同学一个参考. 二.著作权.著佐权与自由版权 对于知识产权,通常有如下几种说法: All Rights Reserv

Python 之父的解析器系列之五:左递归 PEG 语法

原题 | Left-recursive PEG grammars 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公众号作者) 声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议.为便于阅读,内容略有改动. 我曾几次提及左递归是一块绊脚石,是时候去解决它了.基本的问题在于:使用递归下降解析器时,左递归会因堆栈溢出而导致程序终止. [这是我的 PEG 系列的第 5 部分.其它文章参见这个目录] 假设

python threading父进程不死,子线程不退出..如何才能使用完线程后回收线程?

最近使用python的多线程 进行并发的ping操作,其中使用in_queue和out_queue两个阻塞队列,来确保线程安全.发现一个问题, 就是,创建多线程的主进程只要不退出,它(主进程)所创建的所有线程不会被杀死,只是状态均为sleeping状态而已,这样会有一个问题,就是linux系统分配给每个用户所开进程最大数目是有限制的,如果一个进程比如flask或者django在运行后,理论上不会退出的,这样会创建出越来越多的线程,早晚会达到上限,这样系统不能分配任何资源给这个用户了.... 代码

标准爬虫初探,来自Python之父的大餐!

首先不得不承认自己做了标题党,本文实质是分析500lines or less的crawl工程,这个工程的地址是https://github.com/aosabook/500lines,有兴趣的同学可以看看,是一个 非常高质量的开源工程集合,据说要写一本书,不过看着代码提交记录,这本书面世时间应该不会很快.这篇文章写得很渣,错误一定要提啊... 网络爬虫从一个或若干初始网页的 URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件