比尔盖子 博客

Android, ROM与Fork

写在前面:希望你们不要吐槽我这个标题故意用英文。

刷机

为何刷机?

包括但不限于:

  1. 获得常规的系统更新;
  2. 获得官方不提供的系统更新;
  3. 获得没有定制内容和扣费陷阱的纯净版系统;
  4. 用官方系统实在不爽,刷成第三方;
  5. 官方系统很不错了,但是自从看到第三方ROM后,递归成了上一条.
  6. 真的有强迫症.

不爽的理由包括但不限于是:

  1. 性能底,系统卡顿;
  2. 操作不便或不符合自己习惯;
  3. 界面不美观;
  4. 系统存在bug;
  5. 系统的可定制性差.

刷机浪费生命?

很多人在学会刷机,或者拿到一款适合刷机的手机(http://www.google.com/nexus) 之后,就会不停地刷机,更换各色ROM,直到变成诸位所说的刷机狂人。但实际上,尝试过各种ROM后,最终大多数人都会忠于一种ROM不再更换,因为这些人知道了到底用那种ROM才能让自己活的更好,一旦不再更换ROM,连刷机都要省事的多,3分钟搞定,你能说这是浪费生命?

对,这不是浪费生命,浪费生命的是不停地刷。但是迟早也要递归成上面这种情况的。如果没有,我也说这是浪费生命。另外,对于用Nightly这种每天更新的版本的人,一定是处于要跟踪系统的变化,刷一次Nightly的成本(时间、精力)很低,如果没有强迫症,生命是不会被浪费的。

ROM

我对国内论坛上发布的各色ROM的看法

国外的很多ROM,是对Google AOSP基础之上的大规模代码修改,能大幅改善系统的使用体验;而国内BBS上贴的这些,更多是仅仅美化了框架,或者精简了一下应用程序,意义确实不大。不过也不应该否定这些ROM的意义。

Fork的意义

我之前说过我要做一个新的ROM,结果就被来自新浪微博@Micromacer工作室轰了。

非得重新做一个?那么多zip补丁,apk补丁,手动替换都可以,我做个新的干毛?

可能我之前没说清楚。我说做一个新的ROM,不是在AOSP上面重新发明轮子,是在一个成熟的ROM,比如Cyanogenmod的基础之上,Fork出来,进行三次开发。开发完之后,不但自己用,也发布我的ROM,让大家一起用,不但让大家从我的修改中受益,而且按照林纳斯定律(有趣的是这个定律不是Linus Torvalds而是Eric S. Raymond提出来的):

足够多的眼睛,就可让所有问题浮现。

如果我所作的修改能被Cyanogenmod官方接受并进入官方的代码库,那么我的工作就告一段落,我还会将以后开发的东西也加入进去;如果没有被接受,我相信仅仅是不符合Cyanogenmod团队的哲学,而并不是这东西没有意义(你知道想让你的新点子进入Linux主线内核,有多难吗?),我会独立维护我的ROM。这就是开源软件和自由软件开发重要的一部分。

另外,我为什么不发布一个补丁,而是弄个新的?这个问题就有些搞笑了。所谓的“补丁”有两种:

  1. 通用型的修改(精简系统应用)
  2. 针对某一个软件的某一个版本的修改(4.0.3升级到4.0.4的增量包)

当然,第一种里面也可以包括第二种。那么补丁的意义是什么呢?我总不可能为了修复一个bug,而去重新安装吧。而一旦打上补丁以后,旧的东西就变成新的东西了。也就是说,如果我给这个东西打个补丁,和我发布一个新的东西的效果是一样的。补丁的存在完全就是为了节省网络带宽和重新安装的成本。我完全可以Fork掉Cyanogenmod,然后与原版的文件做个比较,发布个补丁。关键是,打上这个补丁以后,原版的Cyanogenmod不也就变成我的ROM了吗?那我还不如发布个完整的ROM呢。

怎么,即使这样,也只让我发布补丁?那,MATE为什么不发一个安装到Gnome2的补丁;Ubuntu基于Debian,发布一个补丁也就行了啊??

Categories: IT生活

整理Gnome3的桌面 » « 灯!等灯等灯!

1 Comment

  1. 当刷机已成往事。

发表评论

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Copyright © 2023 比尔盖子 博客

Theme by Anders NorenUp ↑