是的,你没有看错,经过漫长的等待,我们终于发布了 Typecho 1.2.0 正式版。这个版本的开发经历了如此长的时间,以至于我无法一次性列出这么长的详细改进列表。
原文地址:
除了修复了很多bug以外,我们重要的改进有如下几点:
- 新的编辑器实时预览自动跟随效果,以及主题内预览功能
- 后台界面对移动端的适配
- 新的安装程序
- 进入 PHP 7.2 时代,以及对 PHP 8 的更好支持
- 对容器化的更好支持
除了新功能,大家也可以发现我们的版本号规则有变化。新的版本号会采用常规的3组数字组成,比如 1.2.0
。它适合小步快跑的开发模式,具体的解释可以看这篇文章。
这个小小的软件记录了我们很多人生命中最美好的时光,大家用它在缤纷多彩的互联网上留下自己的印记。快乐,伤痛,成长,迷惘,时间无情地流过,我们却让它有了意义。这时我们再回头来看 Typecho 的名称组成:轻击键盘,静候回音。在你写下文字的时候,涟漪已然产生。
而于我来说,十多年前键盘敲下的第一行代码,也不知不觉产生了这么大的回响。在这春回大地之际,感怀之余,未免又对未来心生希望起来。让我们大声宣布,Typecho 回来了!
关注 Typecho Github 的朋友应该已经发现,最近 Typecho 的 dev
分支更新频繁,其它相关项目也有动作。沉寂许久之后,我也决定开始继续推进这个项目了,不过距离上次更新已经是三四年前了。虽然开发版一直在修复 Bug,但是小打小闹未免也太糊弄人了。所以我就简单说说这个新版本的开发计划吧。
版本号的变化
首先最直观的改变是版本号的变化,之前是大版本/时间版本
这样的形式,比如1.1/17.10.30
,代表的是在2017年10月30日发表的1.1版本(看到这个日期,脸不禁又红了)。这个版本号模仿的是ubuntu的发行版,它比较适合于每年固定日期发行固定版本的形式,跟 Typecho 目前的开发状况不太符合,所以新的版本号会采用常规的3组数字组成。比如1.2.0
,前面两部分是大的版本号,重要更新的时候会变化,最后一位适用于微小更新,针对一些微小的bug修复更新。新的版本规则可以让 Typecho 的版本发布更加灵活,小版本更新也可以更频繁。
向 PHP 5 说再见吧
Typecho 刚发布的时候还是 PHP 5
流行的时代,PHP 7
还是个新鲜玩意。转眼间沧海桑田,PHP 8
都已经走上舞台,我们还有啥理由为是否支持 PHP 5
挣扎。更高语言的版本除了带来更好的执行效率以外,最重要的是新的语言特性的提高了编程的效率。因此 Typecho 的整个项目将整体转向 PHP 7
,更确切的说是 PHP 7.2
。考虑到兼容性我们暂时将最低的语言版本放到 PHP 7.2
,当然我们强烈建议你使用更新的 PHP
版本,比如 PHP 7.4
或者 PHP 8.0
。
升级到 PHP 7.2
后将给 Typecho 代码带来如下变化:
- 类名全部由下划线风格转向反斜线的
namespace
风格// 之前的代码 new Typecho_Widget_Helper_Form(); // 之后的代码 use Typecho\Widget\Helper\Form; new Form();
- 编码风格建议统一使用PSR-12
- 更强的类型约束,所有的接口参数和返回值都将加上类型约束,所以大家在使用的时候也要更加注意规范。
- 我们移除了大量过时/无用的代码。
这个更新目前正在dev分支开发中,目前 Typecho
命名空间的代码基本都已经改造完成。得益于新设计的自动加载系统,老的类命名和使用方法也将得到兼容,所以你不必担心之前的插件和主题用不了。
老的安装脚本可以说非常混乱,里面各种乱飞的代码都带有深深的时代印记,因此我们基于原生的 UI 组件开发了新的安装脚本,相比界面上的改变代码更是彻底重写。除了交互更加便捷,而且现在也支持在命令行通过环境变量静默安装,这就我们下面的改动创造了条件。
拥抱容器化
如果说这几年服务端架构最大的进步是什么,那无疑是微服务了。而微服务的基础容器化也早已走入寻常开发者的视野,无论是 k8s 还是 Docker 都要求代码部署的时候针对容器化作出相应的设计。新版的 Typecho 在这一块取得了很大的进步,目前我们的官方容器已经正式推出:
- Docker Hub: https://hub.docker.com/r/joyqi/typecho
- Github: https://github.com/typecho/Dockerfile
官方 Docker 镜像支持 PHP 7.3
PHP 7.4
PHP 8.0
,并且运行环境支持FPM
Apache
Cli
等模式,操作系统可以选择debian
或者更小巧的alpine
。我们使用了 Github 的流水线做全自动化编译提交,除了发布新版本时会自动编译以外,每晚也会自动发布一个 nightly
版本(目前只有这个版本,并不是正式代码,建议测试使用)。Dockerfile的文档还在书写中。
Github Actions 等持续集成的工具让开发的发布测试工作更加高效,我们目前也设计了很多有趣的流水线。
后台界面移动端适配
手持设备访问已经成为了一个刚需,所以你现在可以看到一个可用的手机界面。针对手指位置,我们还将菜单从顶部放到了底部。
写在最后
不知不觉 Typecho 已经走过了超过十年,值得庆幸的是这么多年过去了,我仍然对软件开发饱含热情。这么多年以来也一直有 Typecho 的用户通过各种渠道给我提出改进意见,各种催更也渐渐成了一个梗,我也时常为无法回报大家的关注而焦虑。在后续的开发中,我希望能以科学的方法来管理这个项目,让它更加高效持续地运转。
这是一个纷繁的时代,信息渠道已经多到快让人喘不过气来。而个人博客这种来自互联网初期的载体,似乎与这个环境显得格格不入。它就像大海中的小岛,在海浪中显得那么不起眼,但它的存在本身就彰显了一种意义。无论是波涛汹涌,还是风平浪静,它都在那里,而你的心也就找到了一处可以停靠的港湾。