Postmarket OS手机上的Sceak Smalltalk

2020-08-26 13:32:09

早在2007年,当Openmoko刚刚兴起的时候,我编写了一个基于Erlang的用户空间,它已经能够接听、拨打电话、接听和发送短信了。项目停滞不前:Openmoko GTA01太慢了,它的电源管理太原始了,而且Erlang的GUI功能太简陋,不值得进一步的工作。

现代手机硬件要强大得多。是时候再次尝试一下移动个人电脑的想法了吗?

上周,我在我之前的手机三星Galaxy S7上安装了Postmarket OS(使用Postmarket OS的Samsung-herolteconfiguration)。

PostMarketOS被证明是一个设计精美的系统,很容易理解和修改。内核和Alpine Linuxuserland的基础安装在手机上干净、容易,并且作为一个开发平台运行良好。我期待着更深入地了解Postmarket OS。

在电话上运行HTOP显示了一台多么令人惊叹的小机器!如此强大的力量。大量的内核,大量的内存。有足够的空间来探索移动个人计算的不同愿景。

然而,内置的演示程序,如Weston演示程序(如右图所示),目前仍有很多不尽如人意之处。也许Postmarket OS中包含的其他一些用户界面选项可以让我更接近日常使用的手机--但我对运行自己的软件很感兴趣!让我们大干一场吧。

Postmarket OS是一个简单、干净的Alpine Linux发行版。您可以首先通过USB网络SSH进入它,然后使用nmcli配置wifi,设置SSH密钥,然后通过wifi使用SSH直接访问它。

为了尝试通过/dev/input绘制到帧缓冲区并读取TouchScreeninput,我编译并运行了几年前编写的一个又旧又脏的帧缓冲区hacki。结果(如左图所示)令人振奋:该程序以每秒30帧的速度毫不费力地对数万个点进行动画处理,对触摸输入做出响应。显示是通过对mmap的帧缓冲器的蛮力epexel输出来实现的。它甚至不使用全芯。

PostMarketOS将一部手机变成一台功能齐全的Linux机器,完全控制所连接的硬件,开发者可以在通常的地方使用常用的工具访问一切。

但是UNIX工具不适合移动个人计算平台。我们还需要别的东西。

从20世纪中期开始,我就喜欢使用Squeak Smalltalk实现、与之一起开发并为其做出贡献。

所以我在手机上编译了Cog Smalltalk虚拟机,利用了最近发布的64位ARM支持代码。

看哪,它跑起来了!右边显示的是手机本身运行的尖端的、完全最新的Squeak6.0-alpha图片(点击这里或点击图片查看embiggen)。

从这里,我可以使用现代Smalltalk环境的全部功能来试验新想法。

我之前的Openmoko实验在一定程度上是在系统的GUI方面失败的;GTK+via Erlang可以很好地进行快速原型设计,但对于一台日常可用的机器来说,它并不能真正胜任这项任务。

我记得让Squeak在我的GTA01上运行,看看它是否能提供一个可行的UI。然而,我记得我被Smalltalk环境的期望和手机的真实感之间的匹配所阻碍。

Screeak想要一个鼠标和键盘。它采用显示器大小的显示,从窗口小部件和字体大小到窗口管理,无所不包。要在手机上工作,除了现有的工具包之外,它还需要一个基于触摸屏的、高DPI的用户界面。

Smalltalk在语言方面和系统设计方面,在Erlang大放异彩的领域也存在一些弱点。

我学到了很多关于设计交互系统的好方法,而且。

因此,我认为使用Erlang/Syndicate风格的Actor来构建一个基于Smalltalk的手机用户空间,或许可以使用基于cgroup的子虚拟机和镜像,效果会很好。

修复微小字体(映像中的DPI-Change支持代码需要工作,而VM中的支持似乎不存在(?)),

思考如何构建移动电话的参与者监管层次结构和数据空间(可能借用了我早先基于Openmoko Erlang的用户领域的一些设计元素),以及