一次不愉快的尝试及思考(4)
用latex的一些总结

一次不愉快的尝试及思考(5)

nonoob posted @ Thu, 14 Jun 2012 19:57:43 +0800 in NoTech , 1231 readers

吐槽一下我对linux桌面应用的不满。

首先,各种桌面环境(或仅仅是窗口管理器)以及会话管理器风格迥异,完全没有一个统一的指挥棒。君不见就连Linux的文件系统结构都还有个FHS,而那个传说中的POSIX不也是考虑到异常混乱而搞出来的吗?各种发行版的包管理器(deb,rpm等)以及同样的包管理器出现的各种不同的package(比如debian的和ubuntu的对bash的打包方式)暂且不谈,看看单是gdm,kdm,lightdm,lxdm,slim,xdm和gnome,unity,kde,openbox,lxde,awesome,wmii,wm的组合就足以让人瞠目结舌了。而关键在于不同的会话管理器的功能不同导致不一定就能发挥桌面环境的功能,而不同的会话管理器的配置和使用的权限本身又非常不统一,这导致了想真正达到自由地定制在很多情况下意味着你需要很强的折腾劲才行,而这可能会无果而终。举个例子,ubuntu下的lxdm无法登陆xfce;slim下登陆时networkmanager会有权限问题;lightdm下退出可能回不到登陆界面。或许让每个用户最为头疼的是某过于当安装了某个桌面环境后会绑定其集成的工具,然而你却看到了另一个发行版的相似的工具也在;你当然会希望删去一些冗余的package,但是其依赖关系往往让你只有删除了整个环境后才可以。当然在硬盘空间如此廉价的情况下,这关键的问题并不在于删去碍眼的包,而在于挑选那些适合的包而让另外一些不可见;但是有这种机制的软件本身却是依赖于桌面环境的(比如gnome有个所谓的main menu的管理,如果将这个设置为每个发行版都必须有的那该多好啊)。那么,去除这些依赖的概念,而让每个软件都静态打包,能不能解决这种用混乱呢?众所周知,这同样不合理。要不还要那么多共享库干嘛呢?多个依赖于一个共享库的打包的程序还需要包这样的共享库都加载了这不是浪费吗?对于小型程序还好,吃资源很厉害的应用多了就扛不住了。况且,要达到一定的整体的体验,这种小件的组合打包方式是不合适的。

其次,选择太多。Python对perl的反叛莫过于一件事只用一种方法去做。而在开源的世界里,看到的是完全的反面。往往是一搜一大堆对某个问题的结果;一问一大堆可以解决问题的软件。比如说关于字符乱码问题,用vim和emacs完全可以解决,但是iconv是一般发行版都会自带的;面向Vimer当然用vim来解决最好了,Emacser亦然,都不用的iconv当然可以,同时还有数以万计的其他工具也可以完成。当然前面这个例子举得非常不好,因为这恰也可以作为其优势。但是一个不能忽视的问题是学会用一种工具是需要时间的,而真正掌握了一门工具的使用是会将写工具的理念也吸收进去的,正如书是传递思想的工具一样,工具也是。而多种理念的混杂导致先要从中选择一种方案,对面临一堆问题的且不想花很久来解决的人来说是不利,因为又引入了另一个问题。另一个例子是在处理乱码这种问题上,居然没有一个必然有效且简单明了的方案。这不禁让人想到了c语言作为这样一门优秀的语言其标准居然没有提供GUI库一样。

再有,由于要顾及多种平台写代码的苦逼作者们不得不花更多的心思来迎合各种环境,那这样的话势必就减少了更多的功能的实现。然而那些发行版为了不得罪开发者也只好将不够成熟的代码加进repo中。众所周知,现在的Linux桌面GUI软件大多都不够稳定。。。最后导致的是尽管有了这么多的应用,但是killer级别的却不是很多。而那些写应用的家伙大多则是基于自己的兴趣而不是以别人的需求为出发点的,这让开源的软件多了一些geek的风格之外也让人有了这些桌面的应用都是toy的感觉。

另外,或许由于Linux的基因问题。x window服务虽然有更多的灵活性;却需要更多的消息传递,这意味着更多的资源消耗(记得有个project正是着手解决这个问题)。而那些gtk,qt的开发库为了兼容性不得不作出牺牲,这导致了很多情况下只有靠硬件的牛逼和绚丽的效果才能和Windows下的应用媲美。

当然,上面的所有观点从反面讲或许正是Linux桌面的优势,这也未可知。

Avatar_small
依云 said:
Fri, 15 Jun 2012 00:07:08 +0800

关于 iconv,它实际上是 iconv 库的一个命令行封装。在 Unix 世界里这很常见。Vim 也是使用 iconv 的。另外,Vim/Emacs 是交互式文本编辑器,而 iconv 命令主要用于非交互场合。它们是互补,而不是选择。

关于 X Window,我是十分喜欢它的网络透明的特性的——除了不能支持不同主机的文件互访。十分可惜的是,XIM 太烂了。

我不知道你说的「那些gtk,qt的开发库为了兼容性不得不作出牺牲」指的是什么,也不知道你说的「和Windows下的应用媲美」是什么?特效么?我觉得在目前,Linux 桌面还是不要搞这个。先做好应用。

Avatar_small
nonoob said:
Fri, 15 Jun 2012 01:40:53 +0800

@依云: 哦,是这样的啊,我一直没在*nix写过正经的c。那windows下vim/emacs也是iconv实现的吗?我也觉得举的那个例子不合理。。。
我的意思是说gtk,qt由于基于x11因此也必须各种进行反复的xi消息传递;然而像windows居然就把gui的模块写到了抽象层底下,效率肯定是不同的。是想说那些应用看起来都很炫。我也觉得不应该搞这些。我总觉得Linux的桌面应用有些像玩具。

Avatar_small
依云 said:
Fri, 15 Jun 2012 01:57:58 +0800

@nonoob: Windows 上 Vim 也可以用 iconv 的。如果不用的话,很多转换(不是所有)无法进行。参见 Vim 文档。Emacs 我不清楚。

GTK/Qt 可以以 X11 为后端,但不是必须的。它们也有 Windows 版啊。我觉得,「Linux的桌面应用有些像玩具」不是因为 X Window 的效率不行,而是没有足够的开发者开发足够多足够好的应用。


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter