版本3.0.0是灰机wiki的正式版本,上线时间是2022-11-15。自版本2.0.12起,灰机的发布采用滚动更新,每个维基的版本可能会有差异。请参考特殊:版本确认当前维基版本。

正如博客:七周年,新的起点中所说,经过近半年的努力,我们终于完成了升级MediaWiki版本的准备!

本页面会对本次升级事宜进行详细的说明。

升级安排

升级方式

为了保证数据安全,我们会采取停机升级方式,所以在升级期间所有站点均会无法访问

升级时间

如果不出意外,我们将会2022年11月21日(星期一),让狗头人选择一个心情好的时间,剪断服务器的网线然后开始升级,目前期望的升级时间是在1天左右结束

升级流程

  • 拔网线:拔网线看似简单实则不然,早不得一分,也晚不得一分,掐的位置要准,拔的力量要稳,如何准确拿捏那其中的奥秘,是一门艺术
  • 煮一壶咖啡:“升级还是不升级”,这是一个哲学问题,讨论哲学问题时,美味的现煮咖啡是必不可少的
  • 执行升级脚本:小小几K的升级脚本,凝聚了诸多生活在灰机之中的犬科生物几个月的毛发
  • 开几局帝国四:据说马里的黄金和食物能从虚空中蹦出来,就像灰机的开发者一样
  • 涂点小人:点击《朱雀青龙》,立刻购买船票!
  • 等待升级完成:狗头人叼来了灰机的零件,(以下来自copilot的自动补完)开始修理灰机,修理灰机的过程中,狗头人会不时的来看看升级的进度,如果升级完成了,狗头人会立刻通知大家
  • 重新开放网站:FBI,芝麻开门!
  • 重新建立搜索缓存:这个重建索引的过程它真的太慢了,不得不放到开放网站之后再做,想来也不会真的有人用自带的搜索吧!

升级详情

本次升级会将核心MediaWiki版本从1.30.0升级到1.38.4,所有保留下来的扩展程序均会升级到适配1.38的版本

为什么要升级

就像春天需要雨水,小人需要狗头人,灰机也需要更好的零部件才能飞的更高更远。

灰机是基于MediaWiki进行二次开发的程序,并且使用了诸多第三方的扩展程序,这些核心和扩展中存在的Bug和问题是灰机很难去难修复和处理的,唯有升级才能解决。

为什么要准备这么久

目前灰机使用的MediaWiki 1.30.0 是2017年底发布的,为了扩展功能,我们进行了二次开发,由于当时经验的不足,在开发过程中对一部分扩展程序乃至MediaWiki本身的功能进行了魔改,导致现在使用的版本,与原始版本偏差较大,近几个月来大家看到的导航栏更新,驾驶室更新,评论更新等,都是我们在逐步用重做的新功能来替代原来的魔改,使原来的程序逐步脱离魔改回到原始版本。

以后的升级

MediaWiki每4个版本会有一个LTS版本(Long Term Support,长期支持版本),这类版本功能比较稳定,下一个LTS版本是1.39(上一个是1.35,再往前一个是1.31,可见我们现在的1.30有多老了),LTS版本之间间隔约为2年

我们未来的计划是跟进所有LTS版本的更新

核心变化

页面作为JS脚本使用时的安全调整

当页面作为JS脚本使用时(使用action=render&ctype=text/javascript调用),新版MediaWiki添加了安全限制,需要页面符合以下条件之一:

  • 该页面处于限制管理员的保护状态
  • 该页面位于MediaWiki(8)命名空间中

不符合以上条件的调用会返回403错误。

可视化编辑器

新版的可视化编辑器会更好用一些,不过基于绝大部分站点的使用习惯(大量模板+模块),推荐还是使用源代码编辑器。

注:刚更新后可能会无法使用

行内css变量

在元素的style属性中使用css变量在1.38中会被视为不安全,该问题会在1.39版本中修复。

  • 例如<span style="color:var(--primary-color)">色色</span>的style属性将不生效。

第三方扩展程序变化

移除

以下扩展程序已经在近几个月的前期准备中移除:

  • SocialProfile:原先诸多功能(如用户页,统计信息,成就,礼物等等)均由此巨幅魔改插件提供,这是升级准备中阻碍最大的插件,总之已经移除了,相关功能后续会重新整理制作
  • Comments:原先的评论插件,第三方的问题在于不好管理,我们重写的版本将可以提供给站点管理员管理功能
  • Flow:流式的讨论(Talk)页,根据这些年的观察,大家更喜欢用QQ群之类的方式进行编辑讨论,这个该扩展占用的数据库资源还是比较大的,所以移除了
  • PollNY:投票插件,这个插件以前安装的原因主要是它是SocialProfile的依赖,与Comments类似,该插件提供的功能难于管理,后续有时间会重做这个类型的交互插件
  • VoteNY:页面评分插件,与PollNY类似
  • Echo:原先的通知系统,通知的内容用处十分有限,而且同样难以管理,目前我们以重做的消息系统替代了该功能,后续也会为消息系统提供更多类型的提醒(例如有人评论了你的评论等)
  • Thanks:感谢!虽然没准备移除它,但是它依赖于Echo插件,所以属于被流弹破片误伤而死,后续有时间会重做这个类型的交互插件
  • BlogPage:就是写本页使用的博客插件,由于这个插件依赖于以上部分被删除的插件,所以一起移除了。Blog命名空间将可以继续使用,编辑权限也会保留,但特殊的Blog界面等功能将暂时失效,后续会重做

调整

以下扩展程序将有所调整:

  • LabeledSectionTransclusion:该插件仅有部分站点开启,后续将仅对这些以前使用该扩展的站点开放使用
  • Tabber:更换为TabberNeue,同样将仅对这些以前使用该扩展的站点开放使用
  • Arrays:以前会随着SemanticMediaWiki的开启而开启,后续将会改为可单独配置开关,由于该插件并不符合MediaWiki未来的发展方向,所以有可能会在某次MediaWiki版本升级时失效,建议不要使用该功能
  • Variables:以前会随着“2.0兼容模式”开启而开启,后续将会改为可单独配置的开关,由于该插件并不符合MediaWiki未来的发展方向,所以有可能会在某次MediaWiki版本升级时失效,建议不要使用该功能
  • ExternalData:以前会随着SemanticMediaWiki的开启而开启,后续将会改为可单独配置的开关

重大变化

Semantic Mediawiki(SMW)

本次升级后,SMW将升级到4.0.2版本。你可能很好奇:“你们不是说更新到3.0.2版本吗?”,这个问题的答案是“由于我们太磨叽,SMW先升到4.0了”。

此次更新的修改,在内部测试下,只有以下改动比较容易影响到现有站点的使用:

  • template arguments = named这个参数被废弃了,修改为named args = 1后即可正常使用

如果在使用中遇到问题还请在群内反馈。其他关于SMW的改动,请参阅帮助:SMW2.5-3.0迁移指南SMW官方站点

灰机提供功能变化

样式变化

新版本尽可能恢复了以前的样式,但不可避免的有少量样式丢失,烦请各位站长在更新后根据变化进行调整

Lua API

通过action=lua调用的Lua API需要进行人工调整,请参考后续的文档

Data命名空间改动

本次升级后,Data命名空间的JSON Schema编辑器和Tabx编辑器均过期,将弃用。

  • JSON Schema编辑器本来也没人用
  • 对于.tabx数据,我们将提供一个新的编辑器。请参阅博客:即将到来的tabx更新
  • 对于.tab数据,我们会后续提供编辑器支持,但仍然建议使用.tabx格式替代。
  • tabx删除行时无法实际删除数据的bug将被修复。

命名空间调整

  • 移除了原Bootstrap(250)命名空间,其中的SubNav(二级导航)和Footer挪到MediaWiki命名空间下
  • Project(4)命名空间,将不再使用站点名称作为名称,一律统一为Project

其他难以预估的问题

有一部分问题难以在测试环境测试,所以可能会在正式环境更新后进行检查,如果发现问题可能会出现功能暂时中止的情况,包括但不限于

  • 捐赠功能
  • 建站功能
  • 可视化编辑器
  • RESTBase API
  • 站点、用户统计