99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代python之父重回決策層,未來如何發(fā)展?
python之父重回決策層,未來如何發(fā)展?
2020-10-22
收藏

作者:豌豆花下貓

來源:Python貓

python 社區(qū)里發(fā)生過一件大事,有開啟新紀(jì)元的意義:在"Python 之父" Guido van Rossum 宣布卸任 BDFL(終身仁慈獨(dú)裁者)后,Python 核心開發(fā)者們歷經(jīng)半年多的時(shí)間,終于為新的治理方案選出了第一屆的“執(zhí)政成員”。

經(jīng)過為期 2 周的投票,Python 社區(qū)選出了第一屆的指導(dǎo)委員會的 5 名成員:Barry Warsaw、Brett Cannon、Carol Willing、Guido van Rossum、Nick Coghlan。

前段時(shí)間,回顧過python 之父的退位風(fēng)波、翻譯了各種治理提案的匯總介紹、也分析了核心開發(fā)者的投票意向。隨著第一屆指導(dǎo)委員會成員的確定,Python 社區(qū)將迎來一個新的安穩(wěn)的過渡期。本文的意義,就是向各位 Python 開發(fā)者/學(xué)習(xí)者/愛好者宣告這個好消息。

核心開發(fā)者的自治模式迎來如此重大的轉(zhuǎn)變,這本就是一件值得關(guān)注的大事。Python 社區(qū)的未來走向與此息息相關(guān),而這種治理模式的成敗,也會為其它技術(shù)社區(qū)提供極好的參照系。

1、指導(dǎo)委員會是什么?

關(guān)于指導(dǎo)委員會(Steering Council),它是 7 種治理方案中最晚被提出,但卻最被廣泛接收的一個,最終經(jīng)過投票成為了社區(qū)里新的治理方案。該治理方案以 5 人組成的指導(dǎo)委員會作為最高決策層,并允許在必要的時(shí)候,將決策權(quán)委派給其它團(tuán)隊(duì)或開發(fā)者代表。

指導(dǎo)委員會擁有至高的權(quán)力,但它的行事原則是:boring、simple、comprehensive、flexible and light-weight,具體而言則是,通過設(shè)定一系列的基礎(chǔ)性的、清晰的、靈活的、輕量的規(guī)則及流程,來“指導(dǎo)”社區(qū)的治理工作。

指導(dǎo)委員會可以直接行使某些權(quán)力,例如批準(zhǔn)或駁回 PEP、更新項(xiàng)目的行為守則、跟軟件基金會一同管理項(xiàng)目資產(chǎn)等等,然而,過分行駛權(quán)力的方式并不受鼓勵。指導(dǎo)委員會與其它治理提案的關(guān)鍵區(qū)別就在于,它將扮演規(guī)則制定者的角色,指導(dǎo)、引導(dǎo)以及協(xié)調(diào)社區(qū)工作,只有在關(guān)鍵時(shí)候,才會行使最終的裁決權(quán)。

指導(dǎo)委員會的職能是:

  • Maintain the quality and stability of the Python language and CPython interpreter,維護(hù) Python 語言及 CPython 解釋器的質(zhì)量與穩(wěn)定性
  • Make contributing as accessible, inclusive, and sustainable as possible,盡可能使做貢獻(xiàn)是便利的、包容的與可持續(xù)的
  • Formalize and maintain the relationship between the core team and the PSF,鞏固核心團(tuán)隊(duì)與 Python 軟件基金會的關(guān)系
  • Establish appropriate decision-making processes for PEPs,為 PEP 建立恰當(dāng)?shù)臎Q策流程
  • Seek consensus among contributors and the core team before acting in a formal capacity,為貢獻(xiàn)者與核心團(tuán)隊(duì)尋求共識
  • Act as a "court of final appeal" for decisions where all other methods have failed,當(dāng)其它所有方法都失敗時(shí)扮演“最終裁決法庭”的角色

這個治理模式是借鑒自 Django 項(xiàng)目,詳細(xì)內(nèi)容參見 PEP-13。

2、指導(dǎo)委員會的成員?

指導(dǎo)委員會的固定成員是 5 人,最多允許兩人來自同一家企業(yè)。換屆頻率是每個Python發(fā)行版本。成員可連任。支持不信任投票(即彈劾)。

現(xiàn)在來看看第一屆當(dāng)選的成員:

  • Barry Warsaw:自1995年起成為核心開發(fā)者之一,榮獲 2014 年的弗蘭克·威利森紀(jì)念獎。目前供職于 LinkedIn(已被微軟收購,也即供職于微軟),業(yè)余愛好是音樂和太極。
  • Brett Cannon:自2003年起成為核心開發(fā)者之一,榮獲 2016 年的弗蘭克·威利森紀(jì)念獎。曾擔(dān)任 Python 軟件基金會的執(zhí)行副主席。目前供職于微軟,負(fù)責(zé) VSCode 的 Python 插件項(xiàng)目。
  • Carol Willing:Python 核心開發(fā)者,Jupyter 核心開發(fā)者及 Jupyter 的指導(dǎo)委員會成員。自由職業(yè),興趣在于科研及教育項(xiàng)目。
  • Guido van Rossum:Python 的創(chuàng)始人,被稱為“Python 之父”,長期領(lǐng)導(dǎo) Python 社區(qū)的發(fā)展,直到此次的退位風(fēng)波。目前供職于 Dropbox。
  • Nick Coghlan:自2005年起成為核心開發(fā)者之一。目前供職于 Tritium。

弗蘭克·威利森紀(jì)念獎

注:弗蘭克·威利森紀(jì)念獎,即 Frank Willison Memorial Award,該獎由 O'Reilly 出版集團(tuán)設(shè)立,頒布給為 Python 社區(qū)做了突出貢獻(xiàn)的個人。設(shè)立于2002年,每年頒布一次。

這些成員都是多年的資深核心開發(fā)者,為 Python 發(fā)展做出過長足的貢獻(xiàn)。最值得一提的當(dāng)然是 Guido van Rossum,他并沒有離開決策層。事實(shí)上,Guido 是自薦成為候選人的,并且是 17 名候選人中最早自薦或被提名的幾個人之一。

在當(dāng)選之后,其他人都在 Twitter 上轉(zhuǎn)發(fā)了好消息,而 Guido 不置一詞。這留下了一個懸念:Guido 出于什么考慮而決定重回決策層呢,又將會扮演怎樣的角色呢?

3、開源技術(shù)項(xiàng)目的發(fā)展?

要發(fā)起一個開源的技術(shù)項(xiàng)目,似乎并不難,然而,要使它推廣到廣大的技術(shù)群體,打造出完整的技術(shù)生態(tài),并且持續(xù)健康地運(yùn)作下去,這就太難了。

今天,看到一則新聞:Bootstrap 5 將徹底移除對 jQuery 的依賴。我不由地想起半年前,Github 也宣布了完全放棄 jQuery。jQuery 是著名的前端開源項(xiàng)目,幾年前一統(tǒng)江湖盛極一時(shí),然而隨著 MVVM 框架的崛起,目前已到了窮途末路的境地。

jQuery沒落,群雄爭霸

這揭示了技術(shù)項(xiàng)目發(fā)展的第一大難題:保持技術(shù)的領(lǐng)先性。近幾年,Python 憑借著在人工智能和科學(xué)計(jì)算領(lǐng)域的赫赫戰(zhàn)功,成為了眾多開發(fā)者追捧的對象,對我等追隨者來說,真是喜聞樂見。樂觀地想,Python 至少還不會因?yàn)榧夹g(shù)原因而沒落。

去年,技術(shù)社區(qū)里還發(fā)生了一件大事:Linux 之父 Linus Torvalds 宣布要無限期休假。這個新聞跟 Python 之父的退位相比,所引起的轟動效應(yīng)可要大得多了。

這兩件事有很大的相似性,引發(fā)了我的好奇心:開源技術(shù)項(xiàng)目所重度依賴的靈魂人物離開了,它們?nèi)绾尾拍芾^續(xù)健康地發(fā)展運(yùn)作?

這個話題對我等小小的邊緣碼農(nóng)而言,實(shí)在是超出能力范圍而無法回答。所幸的是,他們又回歸了。不過對于核心開發(fā)者們來說,這個話題遲早要面對,現(xiàn)在的風(fēng)波就是一個預(yù)警。

Python 社區(qū)貢獻(xiàn)出來的指導(dǎo)委員會治理方案,會帶來什么樣的變化,會引領(lǐng)社區(qū)走向何方呢?拭目以待。



——熱門課程推薦:

想從事業(yè)務(wù)型數(shù)據(jù)分析師,您可以點(diǎn)擊>>>“數(shù)據(jù)分析師”了解課程詳情;

想從事數(shù)據(jù)分析師您可以點(diǎn)擊>>>“大數(shù)據(jù)就業(yè)”了解課程詳情;

想成為人工智能工程師,您可以點(diǎn)擊>>>“人工智能就業(yè)”了解課程詳情;

想了解Python數(shù)據(jù)分析,您可以點(diǎn)擊>>>“Python數(shù)據(jù)分析師”了解課程詳情;

想咨詢互聯(lián)網(wǎng)運(yùn)營你可以點(diǎn)擊>>>互聯(lián)網(wǎng)運(yùn)營就業(yè)班”了解課程詳情;

想了解更多優(yōu)質(zhì)課程,請點(diǎn)擊>>>


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }