» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 30 12
发新话题
打印

[数码手机] ZT:关于google的不作恶:有感于android被踢出linux kennel

这又不是什么大惊小怪的事情,android自己玩一套驱动框架,而且android本身还没merge进mainline,那么依赖于android驱动框架的那些驱动程序(由硬件厂商提交,与google无关)又有什么理由继续呆在mainline呢(脱离了android框架,这些驱动根本不能工作)。再说了,同一个tree下,哪里能容你另起炉灶从内部搞分化,所以kernel组织以后拒绝google将android源码merge进mainline的申请也是极有可能的(那可得苦了我们),但是你可以继续维护属于你自己的分支和发布相应的patch,这样的分支不要太多

merge进mainline就意味着:
1 紧跟kernel版本的更新而同步,我们知道kernel版本更新是非常快的,api在几个月里能老母鸡变鸭,这势必增加维护的人力
2 coding style与kernel统一,比如你不能使用奇怪的函数名变量名等等
3 庞大的开源社区支持,无数人会第一时间git到新版并进行测试、提交bug以及参与到你的项目组里来分担你的工作,这一点能很大程度地抵消掉上面两点对原开发者的不利因素

不进mainline的原因多种多样:当年ntfs无法套到vfs框架里,所以ntfs-3g这种fuse才会出现;reiserfs不能进mainline是因为reiserfs小组leader说话太冲,得罪了kernel组的成员;yaffs不进mainline的原因比较强,似乎是作者觉得紧跟kernel的api更新太累,而且嵌入式系统一般都喜欢用旧的kernel(可怜的我就特别喜欢追新

[ 本帖最后由 henvelleng 于 2010-2-6 01:09 编辑 ]


TOP

关于google不作恶是老话题了,google从诞生时起到现在一直就是这样,android不过是google式做法的延续。google可以说是这个世界上享受到开源社区福利最多的公司没有之一,至于它贡献了什么,是不是抵得上它从开源社区得到的好处,见仁见智。但是有一点,google没有按照开源社区的发展模式和精神走,尽管它因为精于研究授权协议而至今没吃上什么大官司,但google因为钻协议空子而惹来的争议一直不断



TOP

以下是原文,大意是,android源码因为对kernel改动过大不能接受,无法通过审核,无法merge into mainline,由此将连带使得所有基于android的驱动(由硬件厂商提交的)全部无法通过审核(android刻意使用自己的锁使得驱动不能在非android平台上运行),现在希望google能修改android代码以便通过审核(个人认为可能性很低)

As the Android kernel code is now gone from the Linux kernel, as of the 2.6.33 kernel release, I'm starting to get a lot of questions about what happened, and what to do next with regards to Android. So here's my opinion on the whole matter...

First off, let me say that I love the Android phone platform. Until last week, I used my developer G1, that I bought, every day. It worked wonderfully for me, and as a user, I was more than happy.

I'm also very happy about Android from a technical perspective. It's amazing that Google has taken the Linux kernel, and nothing else from a "traditional" Linux system, and created a portable and robust phone platform. It's so different that you can drop in a "real" Linux system image on top of the Android system, and they both work just fine with no changes needed.

Android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unified application layer that programmers can write to that will work on all phone platforms that integrate it. Because of this, all of the existing "Linux Phone Consortium" groups are doomed and will probably close up silently very soon now, if they haven't already.
What's wrong?

So, what happened with the Android kernel code that caused it to be deleted? In short, no one cared about the code, so it was removed. As I've stated before, code in the staging tree needs to be worked on to be merged to the main kernel tree, or it will be deleted.

But there's a much bigger problem here.

The Android kernel code is more than just the few weird drivers that were in the drivers/staging/android subdirectory in the kernel. In order to get a working Android system, you need the new lock type they have created, as well as hooks in the core system for their security model.

In order to write a driver for hardware to work on Android, you need to properly integrate into this new lock, as well as sometimes the bizarre security model. Oh, and then there's the totally-different framebuffer driver infrastructure as well.

This means that any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google's kernel tree, causing it to fail to build in the kernel.org tree.

Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.

Now branches in the Linux kernel source tree are fine and they happen with every distro release. But this is much worse. Because Google doesn't have their code merged into the mainline, these companies creating drivers and platform code are locked out from ever contributing it back to the kernel community. The kernel community has for years been telling these companies to get their code merged, so that they can take advantage of the security fixes, and handle the rapid API churn automatically. And these companies have listened, as is shown by the larger number of companies contributing to the kernel every release.

But now they are stuck. Companies with Android-specific platform and drivers can not contribute upstream, which causes these companies a much larger maintenance and development cycle.
What would be needed to get the Android core code merged?

When the Android code was merged into the staging tree, a number of kernel developers reviewed the code and pointed out places that needed to be cleaned up, and changed, in order for it to be accepted. A number of these changes will affect the kernel/userspace boundry, so some changes to the Android userspace logic would also need to be changed if these kernel changes are made, preventing anyone except a Google employee from making the changes necessary.
So, what to do?

I really don't know. Google shows no sign of working to get their code upstream anymore. Some companies are trying to strip the Android-specific interfaces from their codebase and push that upstream, but that causes a much larger engineering effort, and is a pain that just should not be necessary.
Hope

I do hold out hope that Google does come around and works to fix their codebase to get it merged upstream to stop the huge blockage that they have now caused in a large number of embedded Linux hardware companies.

I've privately offered in the past to help this work get done, and am doing again here publicly. But I need the help of the Google developers to make it happen, without them, nothing can change.

The good news is that it looks like all of the kernel/userspace api changes will have no affect at all on any Android code higher up the stack (like applications), so all of this work can be done with no problem in the overall system.

I'll be giving a talk about this whole Android mess at the CE Linux Forum 2010 conference. Hopefully it improves before then, otherwise CELF will be continuing the long-held tradition of having keynotes in which the presenter yells at the attendees for all of the bad things they are doing.

posted Tue, 02 Feb 2010 in [/linux]


TOP

引用:
原帖由 masterfish 于 2010-2-6 01:51 发表

就是这样
所以linuxer的理想主义者们很痛苦
大家只是希望google能正视自己,勇敢地展示自己真实的一面,不要再欺骗蒙蔽天真的群众了

TOP

android虽然没有违反GPL,但是google的做法不可能促进linux的商业化,而是背道而驰,分流了开源社区的资源

商业公司为linux贡献代码,可不是在做慈善事业,这是个良性循环

RMS是不讨人喜欢,这位大胡子叔叔越来越极端,连linus都不怎么鸟他,但不能就此否定开源精神

TOP

还有,从来没有人说过open source == free,阻碍open source进程的最大障碍在于商业代码本身的不干净

TOP

GNU的想法是:一个程序只专注做一件事情,并将它做到最好,最终使用者将许许多多这样的程序串起来使用。分流意味着,同样的事情有重复的项目在做,那么开源社区的资源就被浪费了一半,无论是测试的人还是开发的人。我们不需要这样内部竞争

对于商业公司来说,开源意味着以较小的代价对外宣传自己的产品和技术,会引来很多人来使用、测试、提交bug和改进的建议。至于是不是能引来commiter来贡献代码,那不是短期需要考虑的事情。如果真有人提交代码,那么说明这个开源项目已经成功运作起来了,已经有足够数量的用户了,以至于能吸引到外面的开发者的眼球和兴趣(至少这意味着他本人承认了可用性所以在使用该软件并对其代码架构和技术含量给予了较高评价),这个时候公司完全可以考虑直接给报酬甚至是招安,没有任何问题

google为什么会引来争议?因为它没有把自己improved feature回馈给社区。google不能被当作普通的用户来看待,它在用开源社区的成果提供服务直接谋取金钱,而普通用户仅仅只是使用,他们主要做到在使用之便时向身边人宣传就已足够,哦不,实际上他们仅仅只是使用就已足够

TOP

当前几乎所有参与open source项目的开发者和公司(我们暂且可以把RMS和其信徒们排除在外),都是利字当头的,这没有什么问题,是双赢的结果。那么谁坏了规矩,破坏了开源社区的生态环境,谁就要付出代价,这本身也是规矩

TOP

improved feature……你在开源软件的基础上做了修改和添加,增加了功能或是提高了性能,但是呢,你偏偏没有把这些patch回馈给社区,而是自己闷在肚子里了自己管自己在用,说的就是这个事情。GPL没有对这种行为作出干涉

至于你再开其他的开源项目,那是另外一回事请,这年头谁都知道开源 != 慈善事业,大家都是为了钱为了市场推广为了打造品牌为了用户的使用体验回馈。这个事情是一码归一码,你偷了别人的东西,然后开了家饭馆营生,两件事情没有联系

TOP

googlecode只是一个平台,类似于sourceforge,任何人都可以在上面发布开源项目,注意是任何人

代码是否优雅的问题,明显是借口,这个不解释了

至于版本的问题,之所以google会面临这样的问题,正是因为它没有把代码提交给社区而是自己闷头在维护才导致如此大量的工作,这完全是颠倒因果逻辑。只要coding style符合规范,并且代码本身有价值,就可以通过审核进入mainline,然后社区里有的是人会帮你改进,包括kernel频繁升级导致的api变化,会有人会帮你维护你的代码,以及测试和除bug、大量的改进建议等等。这才是正常的社区流程。另外,由于程序员是在工作时间写的代码,所以提交的代码不仅有程序员自己的署名,还应该有公司的title,偷偷patch的说法不能接受

TOP

至于养一个开源社区的标志性人物,连微软也做过这样的事情

我们从kernel.org上下的kernel里是不会有android的部分的,去年年底在staging line上因为无法通过审核被删除了,否则在即将到来的2.6.33上我们就能看到android的部分了,当然现在看来在以后相当长一段时间内都不可能有了

android是开源的,无论有没有merge into mainline,它都是开源的,可以在android主页上git到源码。而显然google自己内部维护的kernel分支并没有开源,这就是惹怒大家的原因

TOP

有没有反馈,直接翻看changeLog即可,代码是否优雅,android我们都看到了

TOP

android被T不是因为没人关注,没人关注没关系只要有用能跑就行。真正的原因(即使不说真正,但至少是最官方的原因吧)前面我贴了,那个是kernel组的代表关于为什么T掉android的说明原文

TOP

引用:
原帖由 jun4rui 于 2010-2-7 18:27 发表



我觉得你这个说法太扭曲了,试问:刚才我说得三大Linux高手在Google维护Linux,那么他们上班维护的代码不算Google,下班维护的代码算Google的吗?

你这样说,Google岂不是里外不是人?
出钱养一个审核成员啊,他原来在干什么事情现在还是继续干什么事情,这个和robert love那种不同,robert love在novel的时候是主导开发suse桌面系统的,后来加入google的android开发组,工作内容都变了

TOP

引用:
原帖由 jun4rui 于 2010-2-7 18:29 发表



那请问你在这里面找到google字样没?
http://www.kernel.org/pub/linux/kernel/v2.6//ChangeLog-2.6.18
连微软都提交代码的,这又能说明啥?

TOP

 30 12
发新话题
     
官方公众号及微博