Hello, folks
前沿
正文
CEWG是消费电子Linux工作组,具体由Linux基金会下属的消费电子Linux基金会负责,老大是Tim Bird,相关经费应该是直接源自Linux基金会。
CEWG每年有举行类似Google Summer Code的开放项目计划。先来一段Q/A(要耐心看完前两个!):
Q. How is this different from other "open project" systems, like Google's "Summer of Code"?
A. Other systems often require that the submitter of the proposal be the one volunteering to do the work. With CE WG's Open Project Proposal, anyone who can think of a good idea can submit it, (possibly with hinting about someone who might be a good candidate to perform the work).
Of course you can also submit something you are interested in working on yourself, in the hopes that the CE Workgroup will fund the work.
Q. How much money is the CE WG willing to spend on these projects?
A. The exact amount shall remain a mystery. Historically our budget has been around $100,000, and we usually focus on projects in the $10K to $20k range. However, we have exceptions both above and below this amount. The exact amount of funding will depend a great deal on the projects that are proposed.
Q. Are you daft? Why would you let other people suggest ways to spend the CE WG's money?
A. Hey, it's open source. Good ideas can come from anywhere. Note that the CE WG still controls what projects get selected, and hence where the money will be spent. That's one of the privileges of CEWG membership. However, CEWG will publish the list of projects that it will fund, as well as the projects that were not funded. It is hoped that other entities may contribute money or resources to push some of the technologies or features forward, independently or in conjunction with CEWG's contribution.
Q. Where will the proposals be published?
A. Right here on the eLinux wiki. See Project Proposals for 2013
Q. How will CEWG decide on contractors for these projects?
A. After collecting the proposals, CEWG will solicit bids for contractors for these proposals. In some cases, CEWG may proactively contact individuals or groups they think would be good candidates for doing certain work (such as previous CEWG contractors, or people already working on certain projects, who are available.
After talking to various contractor candidates, the CEWG Architecture Group will select the contractors for the projects, contracts will be drawn up, and the work started.
OK,如果看完了基本的内容其实你应该已经知道了。从这个项目中我们可以拿到什么,下面我举例2011年我跟Shydox申请的这个项目为例。
--------------------------------------------------------------------------------------
* 项目提案(Proposal):http://elinux.org/Work_on_Tiny_Linux_Kernel
* 基本描述:这个项目其实是重启整个Tiny Linux项目,目标是Linux内核裁剪。
Contractors: Wu Zhangjin, Shydox, Loyou(申请项目以后才邀请Shydox加入)
* 项目成果:
【注:论文方面记得是2011年那个十一基本上全部耗费在上面,记得那时还没女友,很能宅,跟远在兰州的Shydox一起,熬夜实验实验再实验!主要是Shydox写的论文初稿不尽人意啊,批评一下!相信这家伙论文写作水平已经大大提升了!】
* 项目回报:
1) 社区知名度的提升
2) 对内核裁剪方面的深度学习和思考,特别是Gc section方面。
3) 一共申请了6400$,不过考虑到项目并没有完全按计划完成,只申请并且拿到了3000$左右。
【注:对照项目规模,当时申请的经费太少了,大家应该往美国的最低生活标准靠拢,80$/hour这样子去申请,我当时才申请了10$/hour!还好是兼职,不然没法活 ;-P 不过10$/hour更更容易申请到,哈哈!】
* 未竟事业:提交相关Patch到官方Linux社区。
这个是非常非常重要的内容,因为工作忙碌,后续这部分未能继续完成,Shydox到后期积极性很弱哈,估计实验室工作太忙了, loyou工作也很忙 ;-P
--------------------------------------------------------------------------------------
项目全程由Tim bird亲自跟进,包括经费的申请,经费的申请流程是比较简单的,你自己提交一个项目完成的进度报告,标明相关的工作成果位置,耗费的时间等,就可以按照你早期申请投标时的 经费/Hour 给你转帐支付了,白花花的美金哦 ;-P
Ok,那今年的项目,已经过了Proposal和bid的提交截止时间,只能等明年了。
不过大家可以先熟悉一下大概的流程。
可以自己提交Proposal,也可以看看其他的,如果有,找到自己感兴趣的并且是Tim Bird自己提交的Proposal(因为其他人提交的他们自己可能会去bid,但是Tim bird的提交了很多,其他人参与的可能性更大),找到合适的Proposal,那接着就是准备投标,具体步骤这么来:
订阅完以后好好观察一下...不要随便发Test...不然太菜鸟了~~看看别人都在聊啥,
有兴趣的点子有准备后再发表看法...
B. 准备bid,看这里:
C. 观察邮件列表的动态,在开放以后随时准备bid
D. 等待回复确认...
E. 开始项目...
申请项目源代码仓库,github,
gitorious.org等等,或者直接在咱们开源社区项目管理平台搞,多威风。编写项目文档,为后面写论文啥的做资料准备哈。
制定具体的项目计划。
如果是多个人协同,做好分工安排。
其他....
F. 项目进度管理
每天/每周向Tim Bird报告项目进度。这个为后面要钱做准备啊,要钱是要记录工作量的,给你的Money = 工作量 X (工资 / per hour) = ?
G. 要钱
这个不记得啥时候可以要了,等到了时候,项目进度推进ok,记得Tim bird应该主要叫你申请钱?
下面是我们当时提交的bid,可以做参考:
Bid for 2011 CELF contract projects
1. Title
Work on Tiny Linux Kernel
2. Description
The main work I plan to perform:
* Improve Section garbage collection patches
** Ensure the other features(e.g. Ftrace, Gcov, Perf...) survive with it
** Enhance it for specific architectures (e.g. add -ffunction-sections and
-fdata-sections for specific arch; move the functions and data in assembly
to their own sections...)
* Forward-porting Linux-tiny to latest kernels
* Make kernel more configurable
** ptrace system call ** alram, getitimer, setitimer system call
** "kexec on crash" ** random number generators: /dev/{random, urandom}
** make duplicated features configurable: e.g. emulated software FPU and
hardware FPU support ** kernel and module parameters support
** remove sysfs support of specific drivers for !CONFIG_SYSFS ** convert big static array to configurable variable: e.g. modedb,
ata_device_blacklist ** NR_IRQS, COMMAND_LINE_SIZE, MAX_NR_CON_DRIVER, MAX_NR_CONSOLES ...
3. Schedule
* Improve Section garbage collection patches (4 weeks)
This mainly need to upstream the left patches(at least 4), add arch specific
support (X86, MIPS, ARM and PowerPC first) and add compatibility for the
other kernel features(Ftrace, Gcov, Perf first). Then, at least 10 sub items
should be covered.
On average, consider 8 hours per item, 2 weeks(8 hours per day, 5 days per
week) for primary developement and testing, 2 weeks for upstream may be
required.
* Forward-porting Linux-tiny to latest kernels (4 weeks)
Need to port over than 41 patches from 2.6.32 (have already ported most of
them to 2.6.36) to the latest 2.6.40? If 2 hour per patch, then, totally 80
hours or 2 weeks. Most of them are not suitable for upstream, another 2 weeks
may be required for the upstream candidates(around 10 patches or one quarter).
Since most of them are not suitable for upstream, they will be maintained in
one public source code repository, currently, they are maintained here [1],
later, they will be placed at [2].
* Make kernel more configurable (8 weeks)
This part currently include about 10 items, each one may need about 2 days of
developement and testing, another 2 days for upstream (If applicable),
totally, 40 days or 8 weeks.
4. Indication for qualifications
All of the above proposed items should be available at [2] under GPL v2,
including their source code, commit log and related testing result. All of
them should pass build and boot test on at least one board of these 4 archs:
X86, ARM, MIPS and PowerPC.
Most of the section garbage collection patches, more kernel configuration
patches and some of the Linux-tiny patches should be pushed into mainline (If
applicable), the others should be maintained at [2].
The project at [2] will be maintained all the time, the other ideas mentioned
or not mentioned in the proposal [3] will be implemented/added there. A
corresponding mainling list (the form of such a community) will be created
for this project for persistent maintaining in the future.
5. Cost
Consider 10$ per hour, total is 10$* (16 weeks * 5 days * 8 hours) = 6400$.
6. Contact
Email+Gtalk+MSN: wuzha...@gmail.com
7. Links
[1] http://dev.lemote.com/cgit/linux-loongson-community.git/log/?h=tiny36
[2] http://code.google.com/p/tinylinux/
[3] http://elinux.org/Work_on_Tiny_Linux_Kernel
总结
该开放项目计划有个好处是可以自己提出idea,然后去申请。那意思是说,
如果你私下里头对Linux内核某个方面深有兴趣,并且发现内核里头没有相关
支持或者支持得不好,那么你就可以提交某个项目提案过去,然后自己做
Contractor,能够就申请到经费,然后就去做这个项目,参与Linux官方社区,
最终把相关Patch提交进社区。当然,还有一个思路是,如果你没有啥想法,
也可以直接从别人提交的Proposal里头找一个合适的,申请去做。
多余的话
接下来,我计划重启Tiny Linux项目,如果有兴趣欢迎积极报名参与,最终希望
能够带2~3个大一、大二或者研一、研二的学生参与,提供全程指导。
可以直接回复这个帖子。大体的计划是打算主要针对Android Emulator这个
平台来做,把之前Proposal里头的一些思路重新思考,并整合目前社区里头
的相关ideas,把Linux裁剪相关的工作做得更加全面透彻,最终能够发展
成为Linux下面的顶级子项目就比较好!
* 具体的内容:
阶段一:重新整理和移植Gc section for Linux kernel到最新的3.13,3.14...
并致力于最终合并进入官方社区,并长期维护。
阶段二:重新收集和整理社区当前的所有Tiny Linux相关的idea, slides,projects, 做一份指南在项目首页上,并长期更新维护。
阶段三:在Packt Publishing上再写一本关于Tiny Linux项目的书,全面介绍Linux内核裁剪,后期考虑在国内出中文版。
阶段四:长期主导Tiny Linux项目的社区研发进程。
* 项目对于学生的意义:
0) 打下扎实的计算机基础
1) 通过该项目逐步参与顶级Linux社区,了解相关管理流程,锻炼团队协作,接触国际社区大佬,了解前沿应用...
2) 科研和论文写作(如果全程参与,几篇论文都没问题,呵呵。)
3) 未来工作或者创业(作为切入点,深入Linux内核开发)
如果某个师弟师妹感兴趣,欢迎报名参加,关于经费方面,我先自筹,后期如果ok,等明年再去申请CEWG的Open Project项目或者是Google Summer Code项目。
@Osier,如何在Google summer Code提交项目Proposal并成为导师?是否有相关指南,请share一下 ;-P
BR,
Falcon