工控網首頁
>

新聞中心

>

業界動態

>

如何在GitHub上開源一套受歡迎的組態軟件

如何在GitHub上開源一套受歡迎的組態軟件

2018/3/27 16:30:41

工控小瀅:老壞貓是個有故事的人。上次,小編約他做了篇《組態軟件測評∣WinCC、Citect、LabVIEW、InTouch、Ingnition,你更喜歡用哪個?》(想知道老壞貓的個人簡介,請點擊~),讀者反響熱烈。

為啥找到老壞貓來做測評?下面這篇他的自述或能說明答案。

有一天,我在GitHub上開源了一套組態軟件SharpScada


2017年國慶,我在GitHub上開源了一套C#寫的組態軟件SharpScada。


SharpScada一經推出之后,反響超出預期,收獲的星星已達486,月均100,在C#語言的總排名612位(目前C#開源項目總數接近20萬個),國內C#開源項目排名24位,SCADA/HMI/工控項目排名第一位。


GitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git作為唯一的版本庫格式進行托管,故名GitHub。它于2008年4月10日正式上線,除了git代碼倉庫托管及基本的Web管理界面以外,還提供訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,超過180萬個企業和組織使用GitHub。

SharpScada地址:https://github.com/GavinYellow/SharpSCADA


雖然在群星薈萃的GitHub不算什么,和那些成千上萬星星的大牛項目更是沒法比,不過C#及.NET生態圈在開源界只是后起之秀,人氣遠不及javascript、JAVA這些老前輩,我對這個項目的表現已經很滿意了。


開源之后,有很多素不相識的同行給我點贊,他們也好奇我為什么要做這個開源,開發的過程是怎樣,等等?;叵肫饋恚斈曜约菏窃鯓訌木幊滩锁B,一步步成長,中間的甘苦只有自己知道,但是把經驗教訓、個人感悟寫出來,或許能對同道有所啟發。


半道出家,找到最合適我的“碼農”角色


我本人并不是科班出身的碼農。大學之前我并不知道自己對什么職業感興趣,在父親建議之下選擇了機電這種萬金油行業,但是很快發現自己對機械毫無興趣。大學期間(小編注:筆者2000年大學畢業),編程已經逐漸熱門起來了,我也曾經試圖涉獵,但看了幾本《C++入門經典》這類的書之后決定放棄。其書有國產教材的通病,晦澀難懂,充斥術語,讓我對編程產生畏難心理。


但這段時間也不是一無所成,我發現了自己對數學的愛好,業余攻讀了離散數學、編譯原理、數學建模,雖然只是走馬觀花,但對我之后的編程之路大有裨益。


這樣渾渾噩噩地度過了大學時光之后,并沒有什么一技之長,只能搞搞本行。不過我給自己定了個目標,如果三十歲之前找不到自己真正想做的事情,就埋頭研究機械吧。


幸運的是,很快我就因為一個偶然的機會踏上了碼農之路,找到了最適合我的職業。


當時是一個做ERP的朋友需要搞定一個機電行業的老板,拉我做說客。項目談成了,朋友嫌單子小要求多,放棄了。我卻因此對軟件的設計產生了興趣,并愿意接下這個單子,自己試試。


現在想來,也實在是當時年輕,無知者無畏,在對需求分析、代碼實現幾乎一無所知的情況下就敢做如此承諾。但也因為這個機會,逼得我白天上班,晚上熬夜研究代碼,每天睡眠時間不足四小時。這樣過了半年,項目做了個半吊子,從此卻迷上了編程,一發而不可收。


這半年時間,我從最基本的概念開始學起,比如最基本的數據庫的連接、數據庫建表,VB語言+Visual Studio6.0編程環境,到關系數據庫設計、存儲過程、面向對象。每一個概念都力求吃透,理解不透就網上百度,如果一個概念沒想明白,晚上睡覺都不安穩。這樣半年多的魔鬼經歷,讓我建立了編程語言+編程環境+數據庫設計的基本概念,對程序設計有了基本的理解。后面再學習新概念,就輕松多了。


如果說我有什么天生的碼農特質,大概有兩點:興趣+完美主義。


第一是我不信“行行出狀元”,我只能從事我感興趣的事業。

第二是我一旦產生興趣,就會進入狂熱狀態,而且有完美主義(或者說強迫癥)傾向,這點在我打電腦游戲狀態下尤為突出,明明通關了還要反復提高難度自虐;而在程序設計領域,就表現為一開始就高度重視程序的架構和質量,用了一種方法實現卻并不滿足,總是在追尋“最佳”解決方案,設計哪怕一個小項目,也以“類庫”的標準要求自己,力求用最少的代碼,還要高性能、高擴展。


這種習慣對我的成長尤為重要,雖然一開始比較累,明明可以快速搭建的項目,卻逼的自己搜集大量資料,比較各種方案,反復推敲。但是一旦造好輪子,未來這些代碼庫都是你的財富,做新項目就可以順手拈來,越做越輕松。


埋頭苦干不抬頭的碼農絕對不是好碼農,只有對自己熟悉的領域駕輕就熟、可以抽出時間在新領域進一步的提升,才是正道。


為什么要做開源SCADA?


隨著軟件水平的提升,我也轉型成為了一枚掛著“電氣工程師”名號的碼農。當時主要工作是開發工控上位機程序,單位需要一套新系統,除了能實現設備監控,還有一定的生產管理功能。


而我當時目睹了在西門子WINCC基礎上二次開發的各種不適,如VB腳本功能有限、WINCC編程環境復雜龐大、對非西門子設備的通訊是老大難問題,等等。


于是,萌生了自己做一套組態系統的想法。當時的我已經從菜鳥升級為老鳥,雖然依舊帶著當年不會寫代碼就敢做ERP的楞勁,但我已經具備了一定的項目分析能力和程序設計經驗。在搜集大量資料,仔細分析了OPC規范,我認為自己開發一套組態系統還是有可能實現的。


然而,這個想法很快被單位否決了,因為大家都認為我靠個人力量做出能替代老外大公司的軟件,實在腦洞有點大,也沒有列入工作計劃。


但我并不死心,業余自己搞。結合自己多年的代碼庫,從實現一個OPC客戶端開始逐步向設計組態軟件的目標逐步靠攏。就這樣若干年,OPC客戶端-OPC服務器-西門子驅動-WPF界面控件-VisualStudio設計器擴展-表達式編譯器,這些組態軟件的零部件,一個個生產出來了。最后就有了SharpSCADA這個麻雀雖小五臟俱全的系統。


我的設計目標,就是四個字:多快好省。多,就是驅動類型多,適應的行業多???,就是設計速度快,用搭積木的方式構建系統,同時運行速度盡可能快。好,就是系統穩定,界面美觀,擴展性好。省,就是完全免費,省錢省力。從開始構思項目到現在,將近10年時間,可以說目前正在越來越接近這一目標。


設計這套系統的時候,GitHub和開源社區在國內并不流行,網上能找到的開源庫并不豐富,尤其是工控開源庫更是奇缺,很多時候要靠自己從頭造輪子,親身經歷,實在很累。而.NET在國內發展的并不好,其他語言的程序員看不起甚至排斥.NET,認為.NET做不了大系統,這不行那不行,甚至不少.NET程序員居然有自卑感,讓我頗為不平。所以,我萌生了將這個項目開源的想法。


如何開發一個受歡迎的開源系統?


項目從去年十月份開源到現在,反響良好。我在推出項目之前,為項目如何推廣先做了一番構思。


首先我選定了Github和國內的碼云兩個平臺發布。Github是全世界最大的開源平臺,人氣極旺,影響最大,發展趨勢最好;而碼云作為國內最大的開源平臺,在國內訪問流暢,也可以與Github很方便的同步,相當于git的國內鏡像。


研究分析了幾個Github上頗有人氣的項目,我得到幾點結論,并做了實踐,取得了不錯的效果:

??越有人氣的項目,越受關注

當然前提是你的項目要足夠好。

但是你作為一個業內無名小卒,無論項目多好,大概很久都是零Star,因為根本不會有人關注到。Github上幾千萬個項目,據說8成以上從來沒有一個Star,而Star越多的項目吸引的眼球也越多,參與者如果發現項目確實不錯,也會介紹給朋友、同事,同時你的項目被google、百度等大引擎收納的概率也越大?,F在項目我即便不做任何推廣,每個月通過搜索引擎和程序員網站也能獲得不少點擊。


??要自己做推廣

為了在項目初始階段獲得點擊,必須做相應的推廣。

我想到了國內最大的程序員網站博客園和CSDN(小編注:專業IT技術社區)。但用了CSDN后發現一個問題,因為我籍籍無名,發出去的文章根本沒有人推薦,也不可能登上CSDN頭條,想在CSDN獲得流量和人氣只有你積累一定聲望之后。

而博客園顯然更為“親民”,編輯如果覺得你的文章不錯,就有可能上首頁推薦。因此,我認真構思了第一篇博客,花了一番心思搞的圖文并茂,果然很快上了博客園首頁推薦和頭條,一下子為項目獲得了大量點擊和star(兩周內就超過了100),算是旗開得勝。也因此一發不可收,連續寫了十篇博客,成為一個系列,并多次登上博客園首頁甚至頭條,為項目帶來了人氣,也認識了一大批博友。


??英語要好,最好要有雙語支持

我的項目雖然反響尚可,但提出issue和push的次數很少,大部分都是國內同行下載。雖然也有國外朋友提出英文版,怎奈我的英文水平實在拿不出手,一直沒有動作。國外的程序員感覺更有分享精神,熱心參與,積極提交問題和改進,而國內大概因為大家都苦于生計,個人時間也有限,看的多,參與的少。如果這個項目想獲得進一步的發展完善,應該推出英文版的說明,并及時解決提交的問題。

心聲


這個項目得到了業內前輩和眾多網友的鼎力支持,在此表示感謝。下面我會繼續完善這個項目,尤其是在目前欠缺的Web展示、三維顯示、分布式數據庫等領域開拓。但我一個人的精力是很有限的,希望能有更多熱心工控、熱心開源的朋友參與進來,為.NET社區及國內工控行業的發展盡自己的一份努力。


工控小瀅:雖然俗語有云“男怕入錯行”,卻被老壞貓的“一根筋兒”打敗,而立之前能與自己的興趣“喜結良緣”,真真讓看官們由衷地感到欣慰??吹揭唤z機會,十年磨一劍地苦心鉆研,如果這都不是我們所提倡的“工匠精神”,還何以稱之?


工控小編相信,手機屏幕前還有諸多低調的“隱身大拿”,歡迎你們撕掉“隱身衣”,和我們分享你們早已習慣了的默默鉆研及不俗的成果~

歡迎留言,等著你~



投訴建議

提交

查看更多評論
其他資訊

查看更多

ZEISS GEAR PRO 一鍵搞定特殊齒輪高精度測量

PCB板制造企業推薦?迅捷興科技:以“一站式”協同,賦能硬件創新全程

卓世科技與華沿機器人簽署合作協議 共筑工業具身智能產業新生態

伽利略(天津)技術有限公司斬獲2026機器人勇士挑戰賽雙料桂冠 四項大獎

金發科技亮相2026 CHINAPLAS國際橡塑展,以“塑造·循環·創想”驅動可持續未來