台式计算机系统,尤其是基于Linux的台式计算机系统,比80年代和90年代的典型个人计算机复杂得多。我们可以通过回顾来学习。我们能否制作一个友好,专注于简单性,简约优雅和可用性的Libre Desktop操作系统?
从前,事情很容易。今天他们不是。当事情变得容易的时候,事情就“开”就可以了,您无需进行太多配置。与今天相反:要配置的东西太多了,所有可以配置的东西都会出错。时光倒流时,一切都可以通过文件管理器中的拖放操作完成,而无需其他工具。与今天相反:文件管理器无法完成太多事情。
其中有些显然会引起争议,人们会告诉我其中有些是倒退的。尽管如此,我还是想指出在80年代和90年代我发现的一些东西比今天要容易得多,并且我想找回一些原始的简单性。
时光倒流:80年代,典型的个人计算机具有一个或多个软盘驱动器(可移动磁盘)。通常,您有一个操作系统磁盘所在的系统磁盘,以及一个或多个应用程序磁盘(一个或多个应用程序所在的磁盘)。这些东西彼此分离-个人计算机可以与许多不同的系统磁盘一起使用,而每个系统磁盘可以与许多不同的应用程序磁盘一起使用。相同的应用程序磁盘也可以与不同的系统磁盘一起使用。
与今天形成对比:从那时起,事情变得一直很麻烦,因为随着内置硬盘的出现,系统磁盘与硬件紧密耦合。突然之间,在同一台计算机上使用多个不同的操作系统变得不再那么容易了。同样,将应用程序安装到系统分区中,从而“嫁接到”操作系统上。突然之间,在多个操作系统上运行相同的应用程序,或者在不同的物理计算机(甚至是相同类型的计算机)上可互换地运行相同的操作系统实例,已经变得不那么容易了。绝对最坏的情况是,例如Windows计算机,其中操作系统将仅通过焊接到主板上的内置磁盘运行,并且应用程序通过应用商店和DRM机制绑定到操作系统中。结果是,实际上只能将计算机与一个操作系统实例一起使用,并且将一组应用程序紧密集成到其中。即使是大多数当代开放源代码系统在这方面也没有什么更好的选择,因为在那里,一个操作系统通常还假设其拥有整个磁盘(或至少一个完整分区)的专有权,而应用程序则紧密地捆绑在一个操作系统中。系统实例。曾经很简单的事情-选择要引导的操作系统实例,并选择要在其上运行的应用程序已经变得非常麻烦。
我们如何简化:通过使用可移动介质将引导卷与硬件断开连接,通过不让磁盘假定磁盘具有自己的专用分区来使操作系统与磁盘断开连接,而不是通过“将它们“嫁入”操作系统分区。允许无限制的物理磁盘与硬件一起使用。允许无限的操作系统彼此并存于同一磁盘上(在空间允许的情况下)。通过使应用程序与系统分开,允许它们与不同的操作系统实例一起使用。
时光倒流,轻松完成:无需配置引导程序。只需插入一个(或多个)可启动软盘,可启动SCSI硬盘(如USB)或其他可启动设备。这些可能在计算机内部或外部连接。
我们如何简化:编写一个GUI引导加载程序,该引导加载程序将取消所有文本模式,并且仅引导已“受祝福”的磁盘(例如,通过设置EFI变量),而无需在引导时进行进一步配置。
时光倒流:如果有多个可引导磁盘,则可以使用简单的选择器从操作系统中选择从下次启动计算机时将引导的计算机。
与今天形成对比:带有复杂文本的屏幕,只有一名操作系统开发人员才能理解。
我们如何简化:编写用于“祝福”启动卷的GUI并将选择存储在NVRAM中。我认为EFI对此有规范,但是是否有简单的GUI工具可以与Startup Disk控制面板的优雅风格相配?
时光倒流时:您只需一次进行某些设置(例如,时区,键盘语言),并且无论您从哪个启动盘启动,它都可以工作,因为事情存储在逻辑板上的一块内存中。
与今天相反:每个操作系统管理自己的首选项,并且不共享。结果是,如果我在一个系统中设置了诸如时区或键盘语言之类的内容,则并不意味着其他系统对此有所了解。自己尝试一下,在您的计算机上投放5个操作系统-时钟在所有操作系统中正确显示的机率是0%。即使这5个操作系统都是不同的Linux发行版。
我们如何简化:标准化时域和键盘语言之类的EFI NVRAM变量,并加以利用。
时光倒流:在典型系统中,文件数以百计。
与今天形成对比:典型系统中有数十万个文件。对于普通用户而言,至少要复杂数千倍,并且实际上是难以理解和无法管理的。
我们如何简化:通过将属于文件的文件分组为文件系统中可管理的不透明单元来封装复杂性。使每个应用程序一个文件。例如,在Haiku操作系统中,每个应用程序是一个程序包,每个程序包是一个文件,该文件循环装入文件系统以使其内容可访问。同样,AppImage遵循“一个应用=一个文件”的理念。使操作系统成为一个文件。想到了为引导而循环安装的Linux Live ISO。 SystemImageKit显示在Linux上可行。
时光倒流时:我能够告诉每个人它在做什么以及在哪里查找是否出了问题。
与今天对比:也许没人知道他们每个人在做什么。
时光倒流时:您在屏幕上看到的对象给您的印象是它们是实际的东西,并且每个对象在系统中只有一个并且只有一个在屏幕上的表示形式。例如,一个应用程序只有一个图标,并且在系统上仅存在一次。例如,您使用相同的图标来启动,移动,复制,删除,更新应用程序,或将其移入或移出开始菜单。
与今天相反:您在屏幕上看到的对象使您清楚地知道它们不是事物本身,而只是查看计算机中实际发生的事物。特别麻烦的是,每个对象在系统中可以有多个屏幕上的表示。例如,一个应用程序可以显示在系统中的许多不同位置:在桌面上,在一个显示桌面的窗口中,在启动中,在程序包管理器中,在开始菜单中。例如,您需要根据要启动(开始菜单),移动(不可能),复制(不可能),删除(程序包管理器),更新(程序包管理器)应用程序还是使用同一应用程序的不同表示形式?将其移入或移出开始菜单(开始菜单编辑器工具)。
我们如何简化:确保系统上的每个对象(例如,一个应用程序)只有一种表示形式,并且只能存在于一个位置。
时光倒流时:文件管理器的每个窗口都会在屏幕上保留对象的排列。每个文件仅位于一个窗口中,该窗口可能具有与其他窗口不同的设置。
与今天相反:无论您如何组织文件,下次打开窗口时它们的显示方式都不同。每个文件都可以在多个窗口中显示,这会导致混乱(即使在现代Mac上也是如此)。
时光倒流:每个应用程序由一个文件组成,该文件包含程序代码和所有相关资源(图标,菜单,图形)。后来“一个文件”变为“一个目录”,但基本思想保持不变-可以通过拖放来“管理”应用程序。
与今天形成对照:一个应用程序由许多文件组成,这些文件分散在文件系统中,因此很难手动管理应用程序,因为没有一个文件或一个目录可以简单地复制,移动,在文件管理器中删除。
时光倒流:可以将应用程序拖放到任何地方,它仍然可以运行。就那么简单。在系统中没有假设应用程序必须位于文件系统中的某个位置。
与今天相反:将应用程序安装到通常在系统分区上的固定位置。如果该磁盘已满,您将无法轻松地将应用程序放置在其他地方,并期望它仍能正常工作。
时光倒流时:您可以根据需要拥有多个版本的应用程序。
与今天相反:许多系统都假定周围只有一个版本的应用程序。
我们如何简化:删除系统上每个应用程序应该只有一个版本的假设。
时光倒流:您在物理介质上获得了一个应用程序,并且可以确定物理介质包含在符合系统要求的系统上运行所需的所有应用程序。甚至数十年后,如果您拥有兼容的系统和应用程序介质,则可以像回到过去一样运行该应用程序。
与今天形成对照:软件是在假设每台计算机都已连接到Internet且属于操作系统的软件存储库可用的前提下构建的。两者都不总是正确,这使得脱机(“气隙”)计算机的运行变得比必要的困难,并且使得运行我们现在正在运行的软件几乎不可能,例如,从现在起数十年后,所有存储库都将运行。长时间离线。
我们如何简化:在机器处于离线状态的前提下构建软件。 (如果它们在线,则是例外,而不是规则。)默认情况下,不允许第三方软件具有除系统附带的依赖以外的任何依赖。要求将应用程序需要运行的所有其他内容与该应用程序私有捆绑在一起。
时光倒流:您可以每2–3年选择购买主要(功能)升级,并且很少(例如每年1-2次)免费获得次要(质量)更新。您做出了明智的决定,是否以及何时应用升级或更新以及对哪些应用程序进行升级。通常,只有在有特定原因时(例如,您想要的功能或正在运行并需要修复的错误),您才应用更新。系统通常在完全相同的软件配置上运行数月甚至数年。
与此形成鲜明对比的是:系统越来越成为“移动目标”,因为操作系统和应用程序都可以通过随意更新自身来更改,而无需用户有意识地做出决定。绝对变态是“强制性自动更新”,在某些组织中很常见,在这种情况下,用户只有在某些中央系统管理员确定要在计算机上安装更新(甚至需要重新引导计算机)的情况下,别无选择。是时候这样做了。在较小程度上,诸如Windows之类的商业操作系统以类似的方式将更新强加给用户,并且甚至在某些开源系统中也存在这种趋势,其中假定系统的所有部分都应保持“最新”状态(I一直将其称为“移动目标”。今天,质量控制中存在一定的“草率”现象,因为这种假设是您可以一直将更新推送给用户。结果是,像Firefox或Chrome这样的应用程序每年都有多个“主要”版本,而实际上没有用户可见的更改。 (敏捷的开发方法和持续发布是一回事,但不要与始终将半熟的东西推向桌面最终用户的假设相混淆。)
我们如何简化:使所有更新仅在用户的明确请求下发生。仅当用户主动请求更新特定应用程序时才更新应用程序。并行保留新旧版本,以便用户可以在它们之间来回切换,直到用户决定不再保留旧版本为止。不要假设仅因为用户希望更新应用程序X,他们也希望所有其他应用程序或操作系统也要更新。仅当有足够的新功能真正可以证明更新合理的因素时,才提供主要的应用程序更新,并且总体上尝试将更新降至最低。仅当软件经过深入的质量控制后,才将更新发布给用户。确认更新是用户的负担(它们花费了带宽,时间,并且是以前工作系统的潜在问题根源),应该是罕见的例外,而不是规则。
时光倒流时:“个人”计算机是在这样的假设下构建的:一台机器可以为一个用户提供服务,并且没有密码或其他措施使得为了“安全”而使用该系统变得很麻烦。对于大多数个人计算机系统,“用户帐户”的概念在整个80和90年代都不存在。
与今天形成鲜明对比的是:系统感觉是为大型组织中的多用户操作而设计的,那里有系统管理员,而不是拥有个人计算机的单个用户。您被要求创建一个帐户来登录自己的计算机,即使在像Raspberry Pi这样的小型硬件上也是如此。对系统进行某些更改需要您知道并使用“管理员帐户”。 (我不是管理员,也没有管理员;我只是“简陋”的用户。)
我们如何简化:默认情况下,一个不受限制的用户进行所有操作。如果要使用多用户和密码,则该密码应为选择加入且可选。
时光倒流时:使用计算机并没有产生使用痕迹。如果您从锁定的磁盘上运行MS-DOS或Macintosh系统,则不会有任何更改写入系统。
与今天进行对比:尝试从只读磁盘运行Windows。可能吗在现代系统上,使用计算机会将用户执行的每项操作留下很多痕迹,例如,在日志文件中,该文件跟踪带有时间戳的应用程序的每次启动。更糟糕的是,永久性Cookie可以在重新启动后幸存下来,因此在线服务可能会随着时间的推移跟踪用户,
我们如何简化:仅将日志文件写入无法在重新启动后幸存的临时内存文件系统中。默认情况下,只读操作系统分区(或文件系统映像)。两次重启之间没有持久状态,没有重启后仍然存在的cookie。
时光倒流:如果您从锁定的磁盘上运行MS-DOS或Macintosh系统,则不会将任何更改写入系统,并且您可以合理地确定系统不会自行更改,并且可以继续运行几十年。在磁盘上构建校验和以审核其完整性很容易。
与今天进行对比:尝试从只读磁盘运行Windows。可能吗在现代系统上,操作系统假定它可以随意更改某些内容,因此,某些内容可能会崩溃。在不断变化的系统中,几乎不可能进行有意义的校验和来审计系统的完整性。
时光倒流:某种类型的每个系统的行为或多或少都是相同的,可预测的方式。在Word的每次安装中,工具栏中的第三个图标对于每个人都是相同的图标。提供电话支持很容易,因为两个系统看起来完全一样。
与今天形成对比:一切都可以配置的事实使一切变得复杂,因此,没有两个系统是相同的。您不再可以确定工具栏上的第三个图标与您的邻居相同。用户界面中的元素在各个版本之间重新组合的趋势会加剧这种情况。
我们如何简化:Sane默认设置适用于大多数用户,可配置性越小越好。轻松恢复为“默认配置”。避免在不同版本的用户界面中更改事物的位置。
时光倒流时:系统可能数十年不变。到目前为止(2019年),我收到Windows XP用户的支持请求。而且,我仍然可以在公共信息亭系统上偶尔看到MS-DOS或Windows 2000引导屏幕。
与今天形成对比:内置的过时功能,预计操作系统将在短短几年内不再起作用。
我们如何简化:在假设系统可能会持续运行数十年的前提下构建系统。
是的,我真的很想要一个简单的个人计算机系统。没有帐户,“安全”,持续不断的强制更新。轻巧的系统,用户可以在其中(至少在较高级别上)了解和理解系统的所有组件,并且位于驾驶员座椅中。没有真正或虚拟的“管理员”。可以在脱机模式下可持续运行数十年的系统。在本文中,我希望能清楚地说明我的意思-不仅是界面上的“糖衣”,而且还消除(或至少封装了)现代系统堆积的许多行李和复杂性,然后重新想象一下,在80年代和90年代,个人计算机系统的简洁性最终就“发挥了作用”。
是时候制作一个新的个人计算机系统了吗?不要误会我的意思,这与克隆古代Mac的外观无关。它将把该系统的精神,简洁和优雅带入当今的计算机世界。 1980年代最初的Mac的精神,为2020年代进行了重新构想。
我目前知道最接近此功能的系统是Haiku。完美吗?一定不行。它在概念上是否正确?是的,在很多情况下。