向Linux內核提交代碼是否需要很高的水平?

如果向Linux內核上游開發社區提交代碼是否需要很高的水平?應該從什麼做起?是不是審核非常嚴格。


你可以看看這個 patch ,233333

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=authorq=LQYMGT


並不需要. 我水平就很差.

我只是個業餘程序員, 主業是獵頭. 當我還是個實習生的時候就修復了內核里用efi的nvram做pstore後端時的bug. 後來我及時換了方向, 就沒再更多的涉獵內核相關的東西.

不過也有收穫, 就是linux-efi的maintainer Matt Fleming主動在linkedin上面加我然後給我一些技能+1了. (然而他跳過了我最擅長的"賣萌"技能是要鬧哪樣啊!)

更何況, 你可以從提交注釋/文檔的修正做起. 我的第一個patch就是修復efi nvram相關注釋.


不完全需要,不管能力大小,都能為內核做貢獻。

有時候bug的fix,就是一行。譬如,我最近的一個fix。

diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c

index 52f2645..9b88413 100644

--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c

+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c

@@ -461,7 +461,7 @@ static void clusterip_tg_destroy(const struct xt_tgdtor_param *par)

clusterip_config_put(cipinfo-&>config);

- nf_ct_netns_get(par-&>net, par-&>family);

+ nf_ct_netns_put(par-&>net, par-&>family);

}

這個commit,修復了一個引用計數泄漏。改動很簡單,但不改的後果也很嚴重。。。。


初生牛犢不怕虎,啥都不用怕,發現問題就思考,就想辦法,然後了解Linux社區的運作模式,檢索相關問題是否已經在新的內核裡頭解決了,或者相應郵件列表是否已經有patch在排隊,或者剛開始,更簡單點,直接扔patch到合適的郵件列表。

好吧,重點來了,到底如何貢獻,是有流程的,看看我幾年前寫的幻燈:

1,如何往官方Linux貢獻代碼

http://www.tinylab.org/contribute-source-code-to-linux-mainline/

2,git得用熟了,另外一個幻燈

http://www.tinylab.org/git-usage-hello-the-git-world/

最新的一篇:給 Linus 扔個 patch 吧,

http://tinylab.org/upstream-patches-to-linux-mainline/


我補充個和 @LQYMGT 相似的例子,提交者是位 4 歲小女孩,大概是迄今最年輕的內核貢獻者了:

kernel/git/torvalds/linux.git

Documentation: fix formatting to make "s" happy

"That letter [the last s] is sad because all the others

have those things [=] below them and it does not."

This patch fixes the tragedy so all the letters can

be happy again.

Signed-off-by: Maisa Roponen &

[The author being 4 years old needed some assistance]

Signed-off-by: Tero Roponen &

Signed-off-by: Jonathan Corbet &

所以說不需要,但是需要能夠發現問題所在,當然有時候能不能提交也要看你的起跑線啦。


並不需要~跟旁邊的maintainor搞好關係~ 就很容易啦, 一般的改動也就幾行代碼,不太需要什麼高深的技術


推薦閱讀:

如何學習及利用開源代碼?
為什麼除了 Microsoft 以外的開發者都用 Linux / Unix 內核而不像 Microsoft 一樣自行開發內核?
RHCE(Red Hat Certified Engineer)紅帽認證工程師在面試的時候作用有多大?
為什麼許多常見軟體有 Windows 和 OS X 版,卻沒有 Linux 版?

TAG:Linux | Linux開發 | Linux內核 | 操作系統內核 |