學習方法 | 玩開源如何具有“趟坑” 的意識?

阿木每週會做很多技術分享,AirSim教程,ROS小知識各種欄目。但我們發現,“授人以魚不如授人以漁”,我們希望講更多學習方法。在之前的科研雜談也分享過很多研究生階段的學習方法和科研方面的知識。接下來的,阿木實驗室運營部小馬哥,會嘗試分享更多的學習方法相關的東西。如果大家喜歡,會堅持分享。 file 首先我們從大的層面,對於做開源軟件的開發,從邏輯學的角度,我們做任何事,都可以對它進行一個定義,這樣有了定義, 我們就可以更好的進行溝通和討論,在思想上達成一致。很多同學說自己在做開源軟件的開發,我們阿木實驗室的Prometheus項目也是開源,我們很多商業夥伴也有從國外的開源軟件中受益,快速完成產品原型。但我們很少有人去定義“開源”二字。

今天,我們來試着定義“開源”。早期的開源軟件來自國外,所以我們看一下維基百科對開源的定義:

“開源是免費提供可用於修改和重新分發的源代碼。產品包括使用源代碼,設計文檔,或產品內容的許可。”

幾個關鍵詞:免費提供,可修改和重新分發, 源代碼,設計文檔和發佈許可

免費提供 我們現在說起開源,都會想到github,這個程序員最大的社交平臺。只要一句“git clone”,就能將代碼從網絡拉到本地。

可修改和重新分發 我們可以對clone的代碼新建自己的分支,然後修改,生成應用程序。最後可對修改後的源碼依據開源協議,選擇是否開源,或者閉源。

源代碼,設計文檔 這一項基本構成了一項技術的所有,源代碼是技術的體現,設計文檔告訴你如何使用這些源代碼/技術。所以,這一項定義了開源的是一種技術。不是一種思想,一種運營手段或是其他市場行爲。

發佈許可 開源需要遵循發佈許可,常見的有GPL、BSD等等。這些都可以關鍵詞檢索,核心在於規定了你用了開源軟件,在開源基礎上修改後,是否應當重新開源出來。如果想了解更多發佈許可方面,可以參考我們公衆號之前的一篇:《科研雜談 | 開源給我們帶來了怎樣的奇蹟?》: https://mp.weixin.qq.com/s?biz=MzIwNzgxNzg0Mg==&mid=2247512229&idx=1&sn=03a1c4d936faf2eb05384b35782d79f3&chksm=970e6db8a079e4ae29071ad89da02635f2963151afa6b24882cdcb9961343a2850db05956381&token=690759460&lang=zh_CN&scene=21#wechat_redirect

從上,我們可以二次定義一下開源,它首先是一項技術,代表着技術資源。其次,它是免費提供的技術。(多麼美妙的東西!)最後,享用了免費的技術,有相對應的責任和許可。

我們針對免費提供深入一下: 免費提供,免費是相對於收費。收費的技術,例如蘋果手機的核心運行程序,大疆無人機的核心飛控程序,都不是免費的。相對應的,安卓系統的核心運行程序,ardupilot/PX4等飛控程序是免費的。注意,我一直強調免費,是爲了引出下面。

大家可能聽過 “不可能三角”,舉例,在個人投資理財中,有高流動,高收益,低風險不可能三角。例如股市,高流動,高收益,但高風險。銀行存錢,低風險,高流動,但低收益。這三項,你不可能同時獲得。在項目外包中,金錢,時間,項目質量也是不可能三角。即你不可能外包一個項目出去,價格便宜,開發時間又短,項目質量又高。在開源軟件的不可能三角:免費/開源,Bug的數量,版本迭代少。

下面解釋一下:首先“免費”,開源的我認爲是來源於互聯網精神。在互聯網精神中,互聯網是開放和共享的,不是封閉的。這些源代碼,技術資料,設計文檔,本身是一種信息。信息的傳播更是需要開放的,因此推導,這些源代碼(信息),本身也是開放和共享的。互聯網精神,可以參考:互聯網之子: (https://coolshell.cn/articles/11928.html) file

**Bug的數量化:**Bug就是軟件的一些影響正常功能運行的問題。 **版本迭代少:**即版本穩定。版本迭代多需要經常去更新系統,每一次更新,都意味着不確定性與風險。

有初學者,第一次拿到我們提供的P系列或Z系列無人機,知道我們是開源的,滿懷欣喜的買回去。卻發現怎麼這麼不穩定,有時候甚至還需要自己多次校準?其實如果是自己從頭去刷PX4/ardupilot固件,從頭開始摸索無人機, 可能學習成本大概需要3個月的時間。如果用我們做好的產品,並看我們的學習資料,但可能至少也需要1個月的時間。對於我們公司來說,只能儘量縮短這個時間,無法馬上兌現,讓初學者直接掌握這門技術。本質上,我們還是提供服務,讓有學習需求的人,能夠儘量高效的去學習到東西。如果沒有學習意識的同學,其實對於我們是很難的。

最後,本文主題“趟坑的意識 ”,我想闡述的是,發現開源有BUG,很多同學上來可能是抱怨,馬上到處發問題截圖去尋求人解決。互聯網精神倡導人人爲我,我爲人人。其實,阿木實驗室希望,所有玩開源的同學,在發現BUG時,都能有嘗試自我推導和解決的意識,可以能按照我們推薦的步驟:

  • 首先看官方wiki,wiki裏面是否已經有解決方案。多用搜索。
  • 嘗試看代碼,推導代碼的邏輯來提升自己的能力。(重要)wiki本質上也來源於代碼,代碼是最好的不會騙人的說明書。這也是開源最大的殺器。
  • 到微信羣/論壇提問,可以按照這個模式: https://bbs.amovlab.com/forum.php?mod=viewthread&tid=27250&extra=page%3D1 提問有人指引方向後,繼續看代碼推導,尋找代碼的邏輯。
  • 通過文字記錄下問題與解決方案,讓自己的解決方案開源。並嘗試推送到項目。

有了意識,然後才能產生行動。一句話就是做開源遇到問題,先有分析和解決問題的意識。

  • End -

技術發展的日新月異,阿木實驗室將緊跟技術的腳步,不斷把機器人行業最新的技術和硬件推薦給大家。看到經過我們培訓的學員在技術上突飛猛進,是我們培訓最大的價值。如果你在機器人行業,就請關注我們的公衆號,我們將持續發佈機器人行業最有價值的信息和技術。 阿木實驗室致力於前沿IT科技的教育和智能裝備,讓機器人研發更高效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章