從 SDWebImage 談如何為開源軟體做貢獻

酷酷的哀殿發表於2016-10-07

SDWebImage 談如何為開源軟體做貢獻

相識 – 知我者謂我心憂,不知我者謂我何求

今天和別人聊天時,扯到了這個非常著名的開源庫。算算日子,我和 SDWebImage 已經認識 3 年零 11 個月了。將近四年的時間,說短不短,說長不長。

作為 iOS 開發者,我接觸的第一個庫就是 SDWebImage(第二個是 ASIHttpRequest),研究時間最長的也是 SDWebImage
剛學完基礎知識,開始做專案時,我就用到了這個圖片快取庫。下面的程式碼是我從 SDWebImage 身上學到的第一個知識,也是最重要的一個知識:如何設計一個接受多個可選引數的方法,並讓呼叫方能夠簡單地使用。

對於初出茅廬的我來說,這份程式碼帶給我的除了上面的知識以外,我還學會了如何給現有的類寫 擴充套件,第一次見識了 block威力 ……

實際上,通過這個專案,你還可以學到更多,比如,如何通過 NSData 判斷圖片的型別,如何管理多執行緒佇列……

相知 – 悲莫悲兮生別離,樂莫樂兮新相知

不知何時起,我註冊了 github 賬號,關注(watch)了這個開源專案。

對特定專案進行 watch 操作後,該專案任何新的 conversation(合併提交,建立新的 issue,有人回覆 issue)都會產生一個未讀通知。

隨著我對它的瞭解也越來越深,我發現了一系列令人震驚的事實:

  • 這個庫僅僅是由兩位開發者維護者更新
  • 歷史最悠久的未關閉 issue 出自 2011 年
  • 幾乎所有的版本都有大小不一的 bug(crash、獲取錯誤的圖片、回撥無法執行……)
    這些事實一次次地令我感覺震撼,作為一個擁有 15824 個 star 的開源庫,它是如此的脆弱。於是,我成為了一名志願者,我努力地幫助開發者團隊解決 issue。

相殺 – 消滅bug,是所有程式設計師的夢想

Bug 是所有程式設計師的噩夢,而上面的 bug,有很多是在特定情況下才會發生的,是無法僅僅依靠開發團隊來避免的。作為該專案的成果享有者,我們是否可以做出一些自己的貢獻呢?

大部分的開發者可能會覺得自己無法貢獻程式碼。那麼,我們是否可以充當該專案的測試人員呢?

我在下面簡單的列出了一些普通開發者能做些什麼(主要以 SDWebImage + CocoaPods 為例)。希望各位讀者能夠一起為開源軟體做貢獻。

SDWebImage 的當前版本號為 3.8.2

  • 在專案的短期開發分支使用 pod 'SDWebImage', '~> 3.8.2',並定期執行 pod update
    可以快速收到 bug 修復版本,可以幫助驗證是否已經解決 bug。
  • 在專案的長期開發分支使用 pod 'SDWebImage', '~> 3.8',並定期執行 pod update
    可以快速收到小的功能更新版本,可能需要修改專案程式碼,有較小的概率有 bug。
  • 在新的專案中使用 pod 'SDWebImage', '~> 3',並定期執行 pod update
    有重大版本更新時,有很大概率需要修改專案程式碼,有較大的概率有 bug。
  • 定期根據版本更新修改 Podfile
  • 發現相關bug 後,請及時建立 issue。點此建立

後記

SDWebImage 4.0 版本已經在路上,該版本提供了更加細粒度的控制載入請求,相容 Swift 3,使用了最新的 OC 語法……

樂觀估計,我們年底前能用到該版本。

寫作本文時,SDWebImage 收到了 15824 個 star。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

從 SDWebImage 談如何為開源軟體做貢獻 從 SDWebImage 談如何為開源軟體做貢獻

相關文章