CodeLab近期有很多有趣的进展,我试着梳理CodeLab近况,让关心我们的人及时获取信息,以便了解如何参与其中。

目前CodeLab的两个里程碑仍在推进中,所以我们暂时没有大规模动作。许多热心的志愿者来邮件问目前有什么事可以帮上忙。大家不必着急,三月份我们的两个里程碑都将达成,之后需要大家一起推进的事多着呢。

今晚坐动卧去杭州,明天一早到,往后的几天将会在江浙一带,与几个团队碰面。陆续有公司希望与我们建立合作。

明天的行程里,上午与杭州地区热心的CodeLab志愿者碰面,下午与网易团队碰面。

我平时出行喜欢挑在夜间。夜间随火车穿梭在荒山野岭,手机信号不好,网络接近于无。周围无一物熟悉,无一人熟悉,窗外灯火与乡村变幻不定。日常被远远甩在身后。车上的这段时间,无事处理,无所挂怀,于是心境澄明得很。再适合写作不过了。

废话不说,开始我们的梳理。

未来

在梳理近况之前,先来鸟瞰一番CodeLab的未来。

随着对手头事物的推进,我们逐渐看清了Codelab的未来。关于它将走向何方,我们将做什么,以及不做什么。

CodeLab志愿者@Finn帮忙梳理的这张图,包含了我们未来将要做的事情。

这张图中的很多计划,此前在关于codelab.club做了阐述。

我将规划的内部版本也放出来。

这个版本包含了许多代号,除非你是CodeLab铁杆粉,且时间充裕,一直在跟进我们的所有进展,否则里边名词太多,看起来不如上边一张图容易理解。能将更多信息透明总是好事,所以一并开放出来。以后我们谈论具体事务,还要经常用到这两张图。

下边我们将围绕图中板块,来介绍CodeLab的近况。

codelab-adapter

codelab-adapter截止到目前(2019.02.18)已经推出了第七个大版本。在近期的更新中,我们对其做了大量改进,我们从Smalltalk和Bret那儿学习设计原则,也从他们那儿学会思考,关于什么是好的创造工具。

changelog记录了codelab-adapter近期所有的改进。

近期我们增加了许多有趣的特性,包括:

内置微信插件

相信这是个killer app级的extension。我们已经将其做到了开箱即用,削减了所有不必要的复杂度。

它可以用于以下场景

说声晚安

codelab-adapter已经接入了主流的智能家居设备,在微信插件加持下,我们可以做到用微信控制家庭设备,睡前关灯再也不用喊天猫精灵,一喊睡意全没了,给自己的账号发条晚安就行:)

下雪天不想起床关灯? 读书困了不想起床关灯? 我就是懒不想起床关灯? 没关系的,懒惰是创造者的美德:)

发一条晚安信息,房间与你一同进入睡眠模式。

芝麻开门

codelab-adapter正在接入智能门锁(深圳绿米公司赠与了我们智能门锁,希望一起探索这块的合作可能)。

设想你组织了个party,每次有人按门铃都得去开门,是不是很烦躁?

把参与者拉到一个微信群,他们一到门口,在群里吼一身芝麻开门, 门即刻自动打开。 codelab-adapter一端连接微信,一端连接智能门锁。要做到这点,只需在Scratch中拖几块积木,将它们拼一起即可。 这便是我们期待的编程教育。

想你的夜

我们正在接入脑电波传感器。当你想念某个人的时候,脑电波传感器一旦捕获到你的情绪,立刻触发微信积木块,给心上人发送一条来自远方的惦念。

来看个简单的演示:

支持在web页面启停插件

通过支持在web页面启停插件,开发者可以自己构建插件管理UI!如此一来,你可以将codelab-adapter当作后台服务。这能够避免用户在多个工具中来回切换,减少不必要的认知负担。

任何能够降低用户使用门槛的改进,我们都将竭力去做。

提高开放性

codelab-adapter希望构建开发者生态。

所以我们关注开放性, 在这方面我们做了不少工作:

CodeLab相信一个好的工具,应该是灵活的,工具的作者无法穷尽使用场景,尤其当它是一个创造性工具的时候。如果我们我们宣称已经打造了一个完整的封闭生态,意味着这个工具支持的创造也十分有限。

有黑客精神的开发者要问了: “说了半天开放性,那你们源码究竟什么时候开源? 对于我们这些黑客来说,破解它虽不难吧,但你知道的,麻烦多在破解之后,读一堆注释不清晰的源码,不是什么愉快的经历,尤其是它还一直在迭代更新。如果codelab-adapter能主动公开源代码,并附以清晰的注释和文档,将更容易赢得我们尊重”

别急别急,我们也认同开源不是甩出一堆糟糕的源码,它需要清晰的注释、完整的文档,以及一群热情的开发者。就像Django/Keras/Home Assistant这些社区所做的,而Scratch在开源这块做得并不理想。

codelab-adapter目前迭代更新很快,在realktalk协议发布之后,我们将迎来一次大更新,以实现该协议,因为dynamicland试图打造的用以支持创造的环境,也正是codelab所追求的星辰大海。在这个里程碑之后,codelab-adapter将正式发布v1.0版本,此后codelab-adapter将趋于稳定,那时我们将开源所有的源代码。

CodeLab是一个非营利组织,开放是我们追求的目标之一。


其他的重要改进包括:

  • 添加web调试(Debug)页面
  • 内置Python kernel插件
  • 内置树莓派(Raspberry Pi)插件
  • 支撑多个client并行作为UI
  • 将消息用作内部管理机制
  • 允许跨域访问websocket/REST API

所有改进列表参考changelog

谍照

这部分的最后一节,我们放出codelab-adapter下个版本的谍照。

codelab-adapter的下一次大更新中,将使用pyqt5作为UI库。目前已经完成了90%的迁移工作,一旦测试完成, 确保了稳定性,我们就会发布。

在线社区

CodeLab正基于Scratch3.0构建在线社区。

我们致力于实现以下目标:

  • 理解Scratch3.0的架构设计
  • 理解Scratch拥有强大兼容性的原因
  • 梳理Scratch3.0产品背后使用的一些设计原则
    • 表现与实现的分离
    • 事件驱动
    • 面相对象
    • everything is message
  • 按照Scratch一贯的设计原则,独立实现Scratch并未开源的部分。确保之后能随着Scratch一同升级,架构上保证向后兼容。
  • 顺着Scratch的思路,对Scratch作出改进。

总而言之,我们希望通过这些分析,获得定制scratch的能力,但同时又能与上游的官方版本保持兼容。我们重视官方对Scratch的改进。与其说我们重视他们技术能力,不如说我们重视他们对教育和社区的深刻理解,这些是极为稀缺的,它不是技术问题,也不是资金问题。我们希望能随时将官方的改进merge回我们调整后的项目中。我们不希望做出硬分叉。

为了实现这个目标,我们付出了很多努力,写了不少技术文章:

所有的这些工作,都分享给了技术社区。

截至目前,我们已经完成了主要后端API,线上社区将全面接入codelab-adapter,技术层面,它将会是全球连接能力最强大的积木化编程社区之一,我们私底下觉得没有之一,哈哈,我们就私底下说说,大家别外传。希望3月份,新社区能与大家见面。

4月8号,我们将赴MIT,向Scratch团队展示我们取得的进展,试图推进工具链的整合,也希望将我们在技术上的许多探索,能够合并到全球社区中。

Neverland

抛开线上社区,另一个里程碑是Neverland。

Neverland目前还在装修中,按计划,它将三月中旬投入使用。

我们尽可能避免甲醛材料的使用,在投入使用前,将做一次去甲醛处理,测试有害物质合格之后再投入使用。

新的探索方向

CodeLab目前做了大量有趣的技术探索,仿佛是一个由技术驱动的组织,我们的确关注技术,但我们更关注教育,CodeLab将制作内容,但我们不会制作code.org或者Tynker正在做的东西,目前的内容已经高度同质化,我们会追随使命去探索。CodeLab在内容上的探索,将如同我们在技术上的探索一样独特。

目前CodeLab志愿者@MT和@Eric正在探索两个方向,我们暂时将其命名为

  • CodeLab Mindstorms
  • CodeLab 未来社

最终采用的名字将由两位发起人来确定,他们目前还没有想好名字。

CodeLab Mindstorms将关注编程教育,但不准备发表“编程有助于提高逻辑思维能力”之类的陈词滥调。CodeLab Mindstorms关注认知论、学习者的心理模型、建构主义、面向对象、设计原则,CodeLab Mindstorms将翻译和解读这个领域最优秀的探索者所做的工作,这些工作中的大多数已经被遗忘,有一部分正在被复活(如Dynamicland、Scratch Team和艾伦凯正在做的事情),但关注者寥寥,CodeLab Mindstorms将解读约翰·杜威(John Dewey)道格拉斯·恩格尔巴特(Douglas Engelbart)皮亚杰(Jean Piaget)艾伦·凯(Alan Curtis Kay)派普特(Seymour Papert)密契尔(Mitchel Resnick)Bret Victor等人的工作。目前@MT正带着他的学生在推进这块的工作。

CodeLab未来社 由@Eric负责推进,Eric钟情于哲学、禅与科幻小说,居于加拿大,是两个孩子的奶爸。Eric一直热衷于教育事业。

CodeLab未来社 将围绕Neverland这个实体空间,创作关于未来的情景剧。CodeLab未来社将围绕Neverland发生的事,制作有趣的情景故事(想想《生活大爆炸》)。科幻有时候比科普更容易打动人心,关于未来的各种可能性、未来的人们将与怎样的智能机器相处、未来的计算机如何逃出方形盒子成为现实世界的一部分、什么是人们从小应该接受的教育、什么是人性化的技术(Bret正在做这方面的探索),我们希望通过关于未来的故事展示出来。希望那些热爱故事的孩子,燃起对技术的热情。我们描述未来,因为我们准备与你一起抵达它,CodeLab帮助你做好准备,这正是你为何加入其中的原因。

此前在关于codelab.club表述到:

《理想国》里说:“言语是一种比蜡还容易随意捏造的材料”, 它如此灵活,能够用来与朋友逗乐,用来表达你的思想,用来创造诗歌与小说;编程就像言语,它同样可以用来表达你的想法,用来与朋友逗乐,以及,用来创造。它让你与世间的万物沟通,你可以用它创造一个飞行器,制作一个体感游戏,或是让自己的房间变得智能。你可以在朋友生日那天,在Ta进门的一刻,将手中的魔杖一挥,在空中划一个字母L的轨迹,瞬间,点亮房间里五彩的灯光。在codelab.club,你将轻松做出这样的魔杖。如果你愿意,你可以将codelab.club看作霍格沃茨(Hogwarts)。

CodeLab未来社 不准备说教,我们展示一个未来,这里充满魔法,如你所见,但它们都是现实,没有任何特效和后期。任何先进的技术,都接近魔法。

此前一直困于找不到理想的内容创作团队,对于舞台表演,对于如何抓住观众的兴趣,我们毫无经验,如何招到充满创意创作者,我们也没有头绪,近期,已经很大有了突破,我们跨界找到了理想中的一群人 :)

让未来到来。

尾声

搞不懂动卧列车为何没有电脑插座,快没电了,吓得我赶紧进入尾声部分。

来自社区的鼓励

目前技术社区慷慨地给予我们鼓励,包括教育社区、机器人社区以及黑客社区。

国外技术社区,有不少用户在使用CodeLab的东西,包括非营利组织成员、流行电脑杂志专栏作者、孩子他爸、高中老师…

使用CodeLab工具的Scratch用户则他们希望我们在扩展Scratch这块的工作,能合并到官方社区中。

来自硬件公司的赠与

有不少硬件公司试图与CodeLab建立合作,在我们完成手头的里程碑之前,我们无法支出太多时间在合作事项上。在我们无法给出任何承诺的情况下,他们依然赠与我们全套的最新设备(其中有一些价格不菲),他们还建立了技术小组推进对接事项。

即便如此,我们还是需要在此声明CodeLab是非营利组织,对我们来说,使命比建立合作要重要,当然,两者并不是经常冲突,但在早期阶段,时间是我们的稀缺资源,所以我们会优先关注使命而不是合作,有不周之处,望大家见谅。

但我们不希望伤了社区的热心,所以我们努力去构建开放的接入机制,允许任何组织/公司或个人接入我们的项目,我们乐意将万物积木化的能力分享给大家。关于开放机制有任何问题,大家都可以随时邮件联系我们。

感谢目前所有赠送硬件给CodeLab的企业。