首先要勇於邁開這一步,不用把這件事情想的很困難,即便是 spring 這種級別的項目,普通人也能夠參與進來。java
有的人一上來就想着給開源項目貢獻核心代碼,這其實很是不現實,特別是 spring 這種級別的項目,代碼須要嚴格要求按照官方要求來編寫,而且須要編寫全方位的測試用例。提交以後還要被 spring 官方層層嚴格審查,常常一、2個月都不必定能合併到主分支中。git
因此能夠從最簡單的地方入手,好比文檔、註釋、簡單的邏輯錯誤等。這些地方不只容易入手,並且經過官方審覈的概率也更大些,合併速度也更快。github
有的人可能又要說了,這算什麼,這也算貢獻。的確,這些都是些小事,但若是有1萬我的作了這些小事,加起來會對該項目產生巨大的幫助。redis
另外這些小事能夠幫你入門這個項目,爲以後核心代碼的提交打好基礎。spring
雖然提倡給開源項目作貢獻,但也沒必須專門去研究某個開源項目,除非你特別想參與到該項目中。c#
像我,更多的是在工做中發現了問題,而後順手解決一下,舉手之勞嘛,人人爲我,我爲人人。工具
說了這麼可能是但願你們不要好高騖遠,即便是很小的問題,遇到之後順手解決一下,也是對開源事業的一種貢獻。post
接下來,我會經過一個很是簡單的案例來展現如何爲 spring 項目貢獻代碼。測試
在我封裝Redis 操做類的時候(參考基於 RedisTemplate 自定義 Redis 操做類),發現ui
spring-data-redis-2.1.11.RELEASE-sources/org/springframework/data/redis/core/ListOperations.java
下 leftPush() 方法與描述驗證不符,並且給的redis的網址和命令也是錯的
相似的狀況還有 177行的 rightPush() 方法
剛開始和大部分人的想法同樣,這種小事懶得去管,後來想了一下,可能有人會所以而產生誤解,因而仍是嘗試着去給官方修復一下,也算是爲 spring 項目作點小小的貢獻。
有人可能想說不就改個註釋嗎,這算什麼貢獻!對於這種人我只想說,就是由於有你這樣的人,因此這個小小的錯誤才一直留到如今尚未修復!
整個過程主要分爲5步
點擊 fork 就會拷貝一份當前項目到你本身的倉庫
去本身的倉庫把項目下載下來
而後在本地修改好後,提交,push到你的遠端。
spring 項目對縮減等代碼格式有要求,參考 Spring 項目 貢獻準則 準則裏面提供了格式化的工具
注意,spring 項目使用製表符縮進而不是4個空格
Spring JIRA 是Spring 官方的錯誤跟蹤器,對外開放,支持中文,註冊也很簡單,直接經過github受權。
建立好以後,在裏面添加一個問題,儘可能填寫詳細點,例如
以前那個方法與描述不匹配的問題已經被解決了,無法演示。這裏展現的是一個新的問題。(是的,我後來又發現有註釋寫錯誤了)
建立好後會自動生成票據,如圖中的紅框
把它拷貝下來以後會用到
獲得 DATAREDIS-xxx 這個票據後,就能夠 pull requests 了
檢查你的代碼,沒問題就建立
最關鍵的一步來了,這裏面提到的每一步都要仔細閱讀,寫的是 spring 對提交的格式和其餘的一些要求
瞭解完條條框框後,開始正式提交
注意,紅框中填寫的內容要符合 spring 的要求
確認無誤後提交
提交以後等待審覈
若是你是第一此貢獻代碼,還會要求你簽署一個協議。
你提交以後,會有人來處理,若是官方以爲沒有什麼問題會合並你的提交,以下
完成合並以後,主分支代碼也變成你修改後的樣子,而後該項目的貢獻者中也會有你的名字