在過去五年我一直參與 Durgapur Linux用戶組。我一直爲各類開源項目進行貢獻。我爲開源貢獻的主要緣由是很是享受當你發送一個補丁或PR(pull request 提交問題)到一個開源項目的感受。當數以百萬計的人在天天的生活中使用你的一些代碼時,這會讓你感到幸福。node
經過Google Summer of Code和 Super Student,不少人與我聯繫。他們都有相同的問題。python
如何開始?我懂x、y、z語言。我應該對哪一個項目貢獻?我如何能過濾出一個bug?因此,我想寫一篇博客文章來將嘗試回答這些問題。可是,首先讓咱們瞭解什麼是開源軟件。linux
開源軟件是指計算機軟件的源代碼是公開,在各類許可證下可修改和改進分發。「What is open source?」(「開源是什麼?「)是一個很好的解讀。git
我相信讀幾行代碼比讀500頁書更值得的事實。當你追隨優秀程序員編寫的代碼,在你編碼時,你會自動傾向於使用一些很好的實踐。程序員
甚至我在大學裏學軟件工程課題前,我就已經實踐了版本控制系統,調試器,任務跟蹤,持續集成工具這些知識,這都是因爲貢獻了一個開源項目。github
你讓一個優秀的簡歷從人羣中脫穎而出。貢獻開源軟件能夠幫助您構建在線的形象。web
可是,這些好話還不能足夠幫助你開始。apache
首先和最重要的事情是選擇一個你選擇的編程語言。一旦你完成了選擇編程語言,尋找一個你可能會感興趣的項目。django
Open Hatch適合像你這樣的初學者。Open Hatch 的搜索頁面能夠基於語言項目篩選出bug。Mozilla也有不少基於編程語言過濾的項目, What can I do for Mozilla?(我能爲Mozilla作什麼)
我如何發現bug?
老實說,找到一個bug對於一個初學者真是一個辛苦的工做。我面臨一樣的問題。但我將把如何找到easy bugs(簡單的缺陷)和開始爲大型組織貢獻的方法列出來。
Fedora Easy Fix page 列出了全部你能夠開始的easy fixes(簡單的修復)。每一個項目列出了你須要聯繫的項目的維護者。
Fedora基礎架構倉庫包含一些easy fixes。在issues(任務)倉庫部分尋找EasyFix標籤。https://github.com/fedora-infra
Mozilla的開源項目很是簡單。給新貢獻者提供了不少的入口。
這個網站基於你選擇的編程技術爲你推薦項目。一旦你決定了你的項目,它會帶你到相應的mozilla項目。
Bugs Ahoy網站尤爲適合新的貢獻者。網站基於各類項目好比JS Engine,Devtools,Firefox OS等分類成‘Easy bugs’ 和 ‘Mentored Bugs’。
可是,若是你不知道哪一個項目以哪一種編程語言爲基礎。Bugs Ahoy基於編程語言對easy bugs進行了分類,主要有Python、Java、Shell、JS、C / C++、HTML / CSS。你可使用組合過濾來選擇合適的bug來開始。
Mozilla對已經參與的某個團隊的項目進行羅列,包含:
若是你想開始爲KDE貢獻,尋找 Junior Jobs(初級職位)標籤。像每一個組織同樣,KDE也包含了如何開始KDE項目的部分。
Getting Started – http://techbase.kde.org/Contribute
入門 – http://techbase.kde.org/Contribute
Building a KDE Application – http://techbase.kde.org/Getting_Started/Build
構建KDE應用程序 – http://techbase.kde.org/Getting_Started/Build
KDE Guide for a new contributor – http://flossmanuals.net/kde-guide/
新貢獻者的KDE指南 – http://flossmanuals.net/kde-guide/
IRC – #kde-devel on Freenode
IRC – #kde-devel on Freenode
Mailing List – https://mail.kde.org/mailman/listinfo/kde-devel
郵件列表 – https://mail.kde.org/mailman/listinfo/kde-devel
OpenStack也是一個優秀的可參與項目。OpenStack項目分爲各類組件:Swift, Glance, Nova, Horizon, Keystone等。每一個組件都有本身的頁面。若是你去 OpenStack Wiki主頁,您能夠看到分別列出的組件。
每一個組件頁面包含到倉庫的連接,bug追蹤器(Launchpad),文檔等。OpenStack把初學者級別bug叫作「容易摘到的果子」。
開始 – https://wiki.openstack.org/wiki/How_To_Contribute
若是你是一位開發者 – https://wiki.openstack.org/wiki/How_To_Contribute#If_you.27re_a_developer
文檔- docs.openstack.org
IRC – #openstack-101, #openstack on Freenode
IRC – #openstack-101, #openstack on Freenode
尋找「容易摘到的果子」 Click here!
地球上的大多數人據說過維基百科這個名字,但未想過爲它貢獻。維基百科靠維基媒體基金會支持。Mediawiki使用簡單標籤標記他們的easy bugs。Click!
開始 – http://www.mediawiki.org/wiki/Gerrit/Getting_started
如何成爲一個Mediawiki迷 –http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
在本地安裝Mediawiki – http://www.mediawiki.org/wiki/MediaWiki-Vagrant
IRC – #mediawiki
IRC – #mediawiki
如今這個連接很重要
煩人的小bug – http://www.mediawiki.org/wiki/Annoying_little_bugs
「Gnome-love」是標記那些初學者開始GNOME的easy bugs的可愛標籤。若是你曾經訪問GNOME主頁:「參與」連接在頭部菜單欄清晰可見。不管如何這是你不用搜索的連接:)
GNOME維護一個新手指南: https://wiki.gnome.org/NewcomersTutorial
若是你想知道如何提交你的第一個補丁,讀這篇文章 : https://wiki.gnome.org/GnomeLove/SubmittingPatches
若是你想構建代碼,從這裏開始構建: https://wiki.gnome.org/GnomeLove/JhbuildIntroduction
文檔: https://developer.gnome.org/
Apache, http://community.apache.org/newcomers/index.html
Apache維護了至關多的項目。project.apache.org列出了超過140個項目,每個你均可以開始作貢獻。新來者的部分是如何在Apache開始的簡單說明, http://community.apache.org/newcomers/index.html
參與Apache軟件基金會: http://www.apache.org/foundation/getinvolved.html
我是一個有幾年經驗的Python / Django活躍開發者。因此,我增長了如何開始爲Python / Django貢獻
開始用Python貢獻,請查看開發人員指南( http://docs.python.org/devguide/ )。它首先告訴在你的系統克隆倉庫,繼續告訴你如何檢查easy fixes。
開發人員指南提到,你如何開始作文檔的修復,而後修復小bug。一旦你瞭解了,你能夠開始對付easy bugs。
讀物: http://docs.python.org/devguide/fixingissues.html
任務跟蹤: http://bugs.python.org/
簡單的任務: http://goo.gl/NzJuDp
Django是一個基於Python的web框架,它被一些很是大的公司使用,例如Disqus,Instagram,Transifex等。若是要開始爲Django貢獻,請去 Contributing to Django頁面。
這個頁面列出了郵件列表,IRC頻道,任務跟蹤的連接。
參與Django: https://code.djangoproject.com/#Gettinginvolved
像大多數開源項目,Django也有針對新貢獻者的easy fixes。
小且簡單的改進 – https://code.djangoproject.com/wiki/LittleEasyImprovements
簡單的 – https://code.djangoproject.com/query?status=!closed&easy=1
「小且簡單的改進」提到的任務還有,爲文檔發送補丁,編寫測試或者或者改善代碼庫。
Django維護一個建議新貢獻者的頁面: https://docs.djangoproject.com/en/1.6/internals/contributing/new-contributors/
開源貢獻並非強制你只爲一個著名的社區作貢獻。互聯網上存在巨量開源項目,像Github,SourceForge,Google Code,Bitbucket等。我也確信的事實是僅僅開源貢獻並不會起到幫助。一我的須要在爲項目工做時讓想法從他大腦中流出。
我想你會喜歡從一個不錯的blog post(博文)引用的幾行話:
You shouldn’t become an artist so you can be famous, but because there’s art inside of you that will kill you if you don’t let it out.
You shouldn’t found a startup to make money, but because it’s your life’s work.
And you shouldn’t hack on open source projects because someone told you that your GitHub profile is your new resume, but because you want to code socially.
你不該該爲了你能夠出名而成爲一個藝術家,而是由於若是你不讓你內在的藝術釋放出來,它會殺了你。
你不該該爲賺錢而開始,而是由於它是你一輩子的工做。
你不該該由於有人告訴你github概要就是你新的簡歷而深刻到開源項目,而是由於你想讓編程社交化。
一旦你開始貢獻,你開始經過IRC,郵件列表與人交流。我強烈建議你去看看組織遵照的禮儀。一般看看這個演示文稿來獲得一個簡要的瞭解。 http://www.shakthimaan.com/downloads/glv/presentations/mailing-list-etiquette.pdf