8月24日晚,中国开源社区 Landscape 社区畅聊系列直播活动,邀请了凹语言项目联合发起人柴树杉、丁尔男,和临时决策委员会委员扈梦明、赵普明4位嘉宾做客直播间,分享凹语言开源一周年发生的事情。
首先,柴树杉介绍了凹语言项目的起源和成立原因。作为一名从业多年的码农,大学时就对编程语言有所研究,十几年后又对WebAssembly进行了技术实践,他期望设计出一款可生产用的编程语言。在项目初期,对如何进展迷茫和来自各方面的阻力让凹语言项目沉寂了3年,但是国外TinyGo、AssemblyScript和V语言等项目为项目成员提供了思路和参考,并且柴树杉、丁尔男、史斌3位联合发起人深入研究Go语言语法树部分并出版《Go语言定制指南》一书,为凹语言未来发展路线的关键技术提供了理论准备,凹语言项目从开始的想法,到经过3个联合发起人的共同实践,终于启动并在2022年7月完成了凹语言的开源工作。
至于为何取名为“凹语言”,丁尔男介绍到,因为编译目标定为Wasm平台,所以刚开始起的名字是Wa-Lang,也就是WasmLanguage的缩写,后来发现“凹”字的形状跟Wasm的图标挺相似,恰好形状读音双重相似,就确定了“凹语言”这个名字,之后在凹字上简单添了几笔得到凹语言人脸形状的Logo。
在选择开源协议时,凹语言经过多次会议讨论,最终选择了AGPLv3协议,算是对个别网友质疑的回应。选择AGPLv3协议本身没有违背Go语言的BSD协议,在尊重Go语言的基础上,凹语言也希望通过合适的协议保护开发者的合法权益。
在选择代码托管平台时,凹语言将主仓库放在了Gitee上,主要有2个考虑:Gitee作为国内的代码托管平台,具有安全性和抗风险性,能减少Github等境外平台因政治、经济、利益等因素造成的成本风险和代码安全性风险;而且Gitee平台的CLA管理功能刚好为凹语言提供了更便利的工作操作,Gitee的CLA管理在站内完成了贡献者身份确认、协议签署,整个动作整合到了pr流程中,形成了闭环的证据链,这远比线下收发协议文档的方式更高效、更严密。
凹语言社区目前由凹语言临时决策委员会来进行项目决策和主要的开发推进工作。根据临委会章程,语法或运营模式的变更需要由委员发起提案,经临委会投票通过后才能公示生效。除了在自己负责的方向持续推进之外,临委会委员还需要处理各种日常事务,比如开发会议组织、参加各种交流、评奖活动等等。临委会并不是一个封闭的机构,他有项目的贡献者组成,目前项目还处于早期,有意负责具体方向的小伙伴可以和任意委员联系,讨论加入事宜。
凹语言社区目前构建了多种沟通的渠道,包括:国产语言论坛、QQ 群和微信群等,讨论项目发展、编程语言相关话题、热点等内容,以便感兴趣的同学都能参与其中。也会在官网的“碎碎念”专栏中,总结有效讨论,做到每一次讨论不止于表面,能够得到深入有效的沟通和总结。除此之外,社区还会不定期通过腾讯会议的形式,与大家分享凹语言在开发过程中的挑战和收获,不仅让大家了解凹语言的最新进展,同时也分享项目成长的收获。
在激励社区贡献方面,凹语言社区采取了贡献点制度,用来量化记录社区成员的贡献。社区从2022年开始,每年产生10万个贡献点,所有参与项目并产生贡献的人,都可以按照贡献量获得贡献点。贡献的工作可以是代码、文档、参与会议讨论、参与宣传等一切需要花费功夫的工作。随着社区的发展,贡献点也可以用来调整投票的权重,或者作为收益分配的参考。
8月12号,项目组发布了凹语言最小可用产品(MVP),这是凹语言对用户的第一次稍微正式一点的发布,也是对2023上半年成果和开源1周年进展的总结。这个版本实现了大部分的核心语法特性,可以以此为基础进行标准库的开发,同时项目组提供了相对完整的手册文档和免安装的在线环境,便于大家了解、试用凹语言。也开发者们在Playground游乐场进行试用。Playground是一个纯网页版的测试环境,可以直接输入凹语言代码,在线编译运行。如果发现了任何问题,欢迎到Gitee仓库提Issue,也可以进入凹语言官网了解详情。(https://wa-lang.org/)
在凹语言的发展过程中,遇到了很多挑战,作为项目的联合发起人,柴树杉认为心理是最大的挑战,并贯穿项目发展的整个过程。非专业出身、没有资本和光环背书、技术难度和人员变动、竞品等挑战。通过TinyGo、V语言等编程语言项目,逐渐获得创建一种国产开源语言的信心。并且在启动项目之后,通过开源的方法,让项目得到更多开发者的支撑,来抵抗未知的风险。
扈梦明、赵普明是凹语言项目的临时决策委员会委员,也遇到了比较典型的问题。扈梦明说道,作为一个草根开源项目,需要开发者的包容和支持,也需要流量、曝光度等更多的媒体支持。赵普明是在凹语言发展过程中加入社区的“业余爱好者”,编译器开发有着很高的门槛,怎样才能参与到编译器开发呢,赵普明阅读了很多书籍,读到《Go语言定制指南》和《用Go语言自制解释器》这两本书时,通过多方验证对比最终他理清了Go编译器源码,更让他了解到了凹语言。
在凹语言的项目发展过程中,每一位参与者都受益匪浅,收获了独特的体会和感悟。柴树杉说道,编程语言项目是一个需要长期付出却很难见到收益的长期项目,所以凹语言社区目前是由语言爱好者共同发起的、以低成本低效率进行、具备长期运行潜力的草根团队,希望通过开源的方式帮助项目得到更多的支持。扈梦明通过为凹语言提供VS Code 插件支持加入到凹语言社区,但是随着项目的发展,对自己在团队中的角色和定位有了疑问,经过沟通交流,他了解到,只需要找到自己的专长并持续为团队做出贡献,从而实现赋能,就能融入开源社区,实现自身的价值。赵普明负责凹语言中文语法的设计与实现,面对各种各样的质疑和建议,他不断学习和总结各个编程语言的特色,并采用社区决策制度征集意见,然后去写代码、去调试、去改错,探索最好的呈现方式。丁尔男也提到了要克服犹豫,不要被“语言项目高门槛”这一论断阻挡,要迈出第一步,从简单开始,不拘泥于流程,勇敢试错。
面对未来的发展,4位项目成员也表达了自己的期望。柴树杉表示MVP后继续完善标准库,希望在2024年上半年能发布带标准库的MVP,另外围绕标准库,再构建1-2个案例;希望能带动国产语言和社区的发展,并找到更好的职业发展方向。扈梦明对MVP版本之后的规划是不断学习,为社区做出贡献,完善 VS Code 插件功能、继续探索研发其他 IDE 插件相关内容,担起提高凹语言开发体验的责任、重构在线 Playground,并引入新玩法,新特性,为凹语言增加不一样的色彩、参与宿主框架、 FFI 整体工具链的建设中,让开发体验更加完善。丁尔男会继续完成核心语法剩余部分的实现和测试,加入增加SourceMap为调试提供支持等新方向的启动和必要的优化,做到“不做玩具”。赵普明计划继续完善中文语法,做好中英文代码的桥梁,更深入地学习中端优化和后端代码生成的知识,用凹语言中文版开发一个自己设计的应用框架。
4位项目成员也给出了自己的寄语:
柴树杉:如果编程语言是您的真正兴趣,不要被网上各种编译器比你聪明、ChatGPT将淘汰码农行业、龙书是PL必读图书等观点影响,只有自己摸索找到的路线才是最适合自己的。
扈梦明:有趣比有用更有意义
丁尔男:不论结果如何,如果参与者觉得自己获得了一些经验、关注者觉得自己看到了一个还不错的故事,大家都认为自己的时间没有完全白费,那么就意味着项目获得了巨大的成功。
赵普明:书山有路勤为径,码云无边凹作船。
感谢4位嘉宾的分享,也祝凹语言在每个周年,都能得到更多的支持和进步。观看完整视频,可搜索视频号“OSC 开源社区”。
关于中国开源社区 Landscape 社区
COSCLC:中国开源社区 Landscape 社区,是以国内开源社区为单位的社区,旨在通过凝聚社区力量,推动国内开源生态发展。(COSCLC 具体章程等规划正在筹备中,近期公布。)
关于 《COSCLC 社区畅聊》系列直播
《COSCLC 社区畅聊》系列直播由中国开源社区 Landscape 社区(COSCLC) 推出,把目光聚焦于开源项目背后的开源社区和开源作者,让他们来畅聊一下:自己的开源项目因何而起、经历了怎样的发展,开源作者 / 社区在开源过程中的酸甜苦辣、开源项目的运营经验…
每个开源项目的背后都有不同的故事,让我们倾听这些来自社区,来自作者的声音。