我们需要什么样的开源教育?

点击上方“开源社”关注我们

| 作者:庄表伟

| 编辑:沈于蓝

| 设计:宋传琪


文章缘起

写这篇文章的原因,是和几个朋友的闲聊。再之前,是因为看到了几篇文章

  • 2020-12-18 《欢迎加入!开放原子大学首批开源讲师认证计划》

  • 2021-03-03 《开放原子大学认证中心公布核心专家名单》

  • 2021-03-12 《开放原子大学认证讲师2021年春季培训课程发布》

  • 2021-03-24 《开放原子大学将于3月27日开展“首批认证讲师”考试》

  • 2021-04-06 《开放原子大学“认证讲师计划”首考顺利完成》

不,我不打算为这些文章,一一给出链接。我只是在想:这一口槽,该从何吐起?最终,我觉得,仅仅吐槽这些讲师招募、快速培训与认证考试计划,是不够的。我得认真的谈一谈,我对于开源教育,到底是一个什么看法?

1

招式与心法

我很喜欢用武侠小说里的“招式”与“心法”的对比,来讨论知识与经验传递中的很多问题。之前,我曾经用这个比喻,来讨论敏捷软件开发在企业内部的应用问题。招式好学、心法不易,盲学瞎练,伤人伤己。

在开源领域,其实一样可以使用这一比喻。我们这些开源领域的“业内人士”,可以从国内外的开源社区实践中,发现很多招式。比如:源代码开放要有配套的License,世界范围内,开源的 License 有哪些。我们的代码仓库应该有一份质量较好的 README 文件。我们应该考虑开源社区的治理、运营以及激励机制。世界范围内,其他开源社区与开源基金会是如何运作的?企业在开源领域,有哪些好的实践等等。

这些全是招式!

至于开源背后的心法,还有待总结。相比其他的学科,开源领域远远不到成熟的程度,更谈不上总结出心法了。

在没有深入总结的基础上,通过速成的方式,培养“讲师”,再让他们去培训其他“想要学习开源的人”。我觉得就是:以其昏昏,培养昏昏,再使人昏昏。

2

开源教育的形式

要讨论开源教育,应该采用何种形式,首先应该确认:开源这门学科,究竟处于何种发展阶段?

咱们可以胡乱的类比一下:数学这门学科,已经非常成熟,几千年的历史,大师辈出,群星璀璨,甚至连理论范式被颠覆这种事情,都已经经历过好几轮了。物理、化学也差不多,可能化学还稍微年轻一些。不过也有几百年的历史了。

再晚一些的学科:各种现代工程学、社会学、心理学、管理学,也有了一~二百年的历史了。这些学科,可以算是处在蓬勃发展期。

但是:计算机出现至今不到 70 年;软件工程出现至今,大概是50多年;自由软件的定义是 1989 年诞生的,开源的定义是 1998 年诞生的。假设,开源已经是一门学科,我们甚至可以说:开源这门学科的幼年期,才刚刚开始。

这个时期的学科教育,我认为主要应该依赖三种形式:

案例分析

首先是分析已知的开源案例,包括开源项目的案例,开源社区的案例,开源企业的案例,开源基金会的案例。这方面,《大教堂与集市》做出了极好的榜样。但是,随着时间的不断向前,案例分析需要一轮一轮的进行。分析变化与趋势,分析内涵与外延,分析区别与联系。

深入实践

其次是投入具体的实践,咱们这个学科,还远远不到坐在书斋里,阅读一大堆“田野报告”,就能够分析总结出理论框架的程度。我们还需要大量的来自社区的,鲜活的经验总结。需要大量的,来自一线参与者的体验与反思。如果我们现在开展理想中的开源教育,首先就需要把学生们,都赶到社区里去,摸爬滚打,体验生活。

研讨总结

在开源教育的课堂上,研讨会应该是一种必不可少的形式。因为,没有哪个老师,有资格侃侃而谈,而下面的学生,只需要记笔记就好。有太多的问题,大家都没有确切的答案,只能教学相长,互相启发,共同探索。老师与学生,组成一个教/学共同体,只有这样,才能不断取得一些成果。

3

开放性理论的范围

我想要描述的开源这门学科,需要研究的不只是“开源软件(Open Source Software)”,而应该是一个更加广泛的领域。我愿意将其描述为:“开放性理论(Openness Theory)”。

开放性人格

经验开放性(Openness to experience)是大五人格理论中的五种人格特征之一。它表明了一个人的开放程度。在性格测试中,一个具有高度经验开放性的人喜欢尝试新事物。他们想象力丰富,好奇心强,思想开放。经验开放度低的人宁可不尝试新事物。他们思想封闭、文字性强,喜欢按部就班。

在开源社区,我们会发现大量的社区成员,具有鲜明的开放性人格特征。那么,我们应该如何找到这些人,激励他们,帮助他们,与他们一起协作?

另外,我们是否有可能更多、更好的培养这种人格特质?这些都是需要研究的领域。

开放式教/学


开源教育,当然需要“开放式的教与学”,但是在开源之外的领域,这种教学形式,是否可以、应该、值得被推广?一个奉行做中学的共同体(Learning by doing Community)应该如何被建立起来,并运作良好?

我们需要与教育领域的专家一起合作,来探索这些方面。

开放式协作

开源软件的协作模式,当然是一种“开放式”的协作模式。我们看一个社区,人们自由来去,自由表达,自由贡献。在某种集市的状态下,完成了正规化大团队,无法完成的工作。

这样的一种协作模式,是否能够推而广之,应用到其他的领域?不仅仅用来开发软件,更可以用来创造更多其他的智慧成果?

如果在这方面能够有所探索,那将是开源对于其他领域非常大的贡献。

开放式工程

从传统软件工程到现在的大量依赖开源的软件工程,最大的区别在于:可控性下降,未知的风险在不断累积。令人感到两难的是:我们却又无法退回到所有的源代码,都在自己的公司里,完全依靠自己写出来的时代。因此:探索开放性的软件工程,成为一个迫切的需要。


当然,这样的一种工程难题,不仅仅出现在软件领域。在全球协作式的供应链生态下,我们所面临的众多工程难题,都是由开放的不确定性带来的。因此:开放性工程,也许是一个值得多门工程学科,互通有无,互相帮助,共同探索的领域。

开放式组织

一个开源社区,是一个典型的开放式组织。不过还有很多其他类型的“社区/Community”,以及开放式企业。

如何定义一个开放式组织,如何创建与运营一个开放式组织,如何保持组织的活力与创造力,如何衡量一个开放式组织的优、劣、成、败?

以及,如何将我们所在的组织,变成一个更加开放的组织?

这些都是有趣却又困难的问题。

开放式度量

所有以上这些,我们希望能够展开的研究,除了定性的分析,当然还需要定量的比较与研究。如何定义合理的概念模型、数学模型?如何判断与获取数据,如何测量、如何计算?

我们能够得到哪些数据?又应该如何理解这些数据?如何运用这些数据?

总之:这些问题都很难,很需要更多朋友,一起来研究。


4

展望

以上的这些内容,还仅仅是一个草草思考的半成品。还有很多领域,我没有提到。例如:开源与公益、开源与商业、开源与法律等等。另一方面,要将这个学科创立起来,我们还需要和很多其他学科的专家一起合作,不仅仅是:计算机科学家、教育学家、法学家。还应该包括:社会学、人类学、经济学、管理学,甚至历史学、哲学和伦理学家。

总之,我们这些人有一个巨大的妄念,希望能够逐步探索,将这门学科创立起来。

写这篇文章,也是希望有更多的有缘人能够看到,能够和我们一起来做这样的探索!


Welcome to the Open Source World!

开源社简介

开源社成立于2014年,是由志愿贡献于开源事业的个人成员,依“贡献、共识、共治”原则,所组成的厂商中立、公益非营利的开源联盟,是最早以“开源治理、国际接轨、社区发展、开源项目”为使命的开源组织。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,旨在共创健康可持续发展的开源生态,并推动中国开源社区成为全球开源体系的积极参与及贡献者

相关阅读 | Related Reading

GitHub Insights from 860 Million Event Logs of 2020

重磅|《GitHub 2020 数字洞察报告》正式发布

源来是你第四期发布啦

欢迎大家点击阅读原文查看原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌十年,我的认知被彻底颠覆

这个问题是提给自己的,算是对我 Google 十年的一个小结。强调“不装逼”,主要是提醒自己不要陷入下列俗套:离职后靠黑前雇主、八卦前雇主、揭秘前雇主搏出位(这条是恶行)满足大众猎奇心理吹嘘自己,贬低他人…

redis灵魂拷问:19图+11题带你面试通关

又到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套redis面试题,助力大家通关。1 redis为什么响应快1.1数据保存在内存中redis数据保存在内存中,读写操作只要访问内存,不需要磁盘IO。1.2.底层数…

趣图:BAT程序员的一天对比

这是一张流传网络的BAT的一天对比图:你看懂了吗?数据与算法之美用数据解决不可能长按扫码关注

教你如何用Harbor 私有镜像仓库搭建

一、Harbor是什么? Docker有个形象的比喻叫集装箱,kubernetes是舵手,而Harbor是港湾,其实是用来保存容器镜像的仓库,企业使用docker、kubernetes时,一般都需要个私有镜像仓库的,Harbor就是其中的…

接好!畅销数学界的科普书,我们免费送!

感谢一直以来的关注与支持一直以来感谢大家对超级数学建模的关注与支持!我们热爱数学,对于数学的可爱、魅力以及神秘,我们也与大家一起探索!我们也热爱分享,把每一次的数学趣味、专业知识分享给大家!此时此…

仿豆丁百度文库网页版阅读器完整解决方案

Java平台要实现类似豆丁百度文科的文档在线阅读,总体思路是讲doc docx等文件格式利用openoffice转换成pdf再用swftools转为swf。再用flexpaper组件显示swf。 此过程涉及软件(实测) openoffice3.2(window) swftools-2011-01-23-1815.exe(window) openoffice3.1.1(lin…

这表白代码让我虎躯一震!

大家都见过哪些让你虎躯一震的代码?就是瞬间让你怀疑人生的那种靠着这个代码成功脱单........那天边和自己喜欢的姑娘聊天 边刷微博,碰巧就刷到了这个图,结果当时脑袋一热就给人发过去了,但没想到对方直接就同意啦哈哈哈哈至于现在…

android cpp做成so库,android so库、jar包生成和使用

搞了很久的Android开发了,一直在使用别人(第三方的sdk),所以今天突发奇想,自己搞一个NDK项目提供给其他app使用。本篇文章就从ndk环境到SDK生成、使用一起说说。废话 不多少开始动起来吧!!一、Android studio ndk环境点…

AgileConfig - 轻量级配置中心1.2.0发布,全新的UI

AgileConfig自发布以来有个“大问题”-UI太丑。因为当初这个项目是给自己用的,连UI界面都没有,全靠手动在数据库里改配置。后来匆匆忙忙使用bootstrap3简单的码了一些界面就发布出来了,易用性上也做的不够好。对此我一直耿耿于怀。终于在过年…

如何解开机器学习的面纱?

目前,人工智能的应用日渐广泛。而作为人工智能核心的机器学习,是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说&a…

Net与Flex入门

开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF(ActionScript Message Format)协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信。 另外还可以轻松的实现及时文字沟通、视频语音通信等及时交互系统的开发。 Fluori…

MAUI来了

各位很久没有和大家说端的开发了,技术发展特别快,我不知道还有多少国内的开发人员还坚守用Xamarin,但是.NET的迭代变化还是让国内.NET社区热闹起来了。去年虽然疫情,但微软还是在Build上发布了MAUI。微软这次把MAUI完全整合到了.N…

编程到底难在哪里? 从一个美国实习生的故事说起

记得之前组里来了一个美国实习生小伙子,很极客的那种,干活快,一天能给你写2000行代码(我复查的速度跟不上他写的速度),让做什么东西,上午告诉做个这个功能,下午就能在测试环境跑起来演示了。跟他单独开会的…

温故知新,DotNet Core SDK和.Net CLI十八般武艺

简介.NET命令行接口 (CLI) 工具是用于开发、生成、运行和发布.NET应用程序的跨平台工具链。https://docs.microsoft.com/zh-cn/dotnet/core/tools/SDK.NET SDK (Software Development Kit) v5.0.201.exe里程碑发布日期.NET Core 2.1.x (servicing)LTS (Long Term Support) rele…

谁说数学没用,一旦我们用在赚钱上,全世界都害怕

今天来说说“量化”投资这个门派的开山祖师、美国“赌神”——爱德华 索普。爱德华 索普是一位大教授,天才数学家,非常喜欢扑克牌博弈游戏。一般人玩扑克也就只盯着眼前输赢,爱德华 索普却花了两年时间利用早期的IBM计算机和概率论中的凯利…

2021年春招Elasticsearch面试题

1、Elasticsearch是如何实现master选举的?1、对所有可以成为master的节点根据nodeId排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。 2、如果对某个…

android qq红包,Android实现QQ抢红包插件

又想到快要过年了,到时候还不知道群里要发好多红包,所以我将之前在网上宕的一份微信抢红包的代码修改了一下,实现了QQ抢红包!可以支持抢QQ拼手气红包,普通红包,口令红包,现在再也不怕20年单身手…

8个Python高效数据分析的技巧

不管是参加Kaggle比赛,还是开发一个深度学习应用,第一步总是数据分析。这篇文章介绍了8个使用Python进行数据分析的方法,不仅能够提升运行效率,还能够使代码更加“优美”。一行代码定义List定义某种列表时,写For 循环过…

NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

咨询区 JDawg:我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示:HttpResponseMessage response new HttpResponseMessage(HttpStatusCode.OK); response.Hea…

一个免费兑换iPhone X的机会,就这样被你错过了

嗨~我是大家最爱的小树,第一次写文,有点小鸡冻!!!小树此行是带着超模君的礼物来的哦!上周准备会员周回馈粉丝的时候,超模君突然决定要送模友们:iPhone X !!&a…