做爲全球最大的開放源代碼託管平臺,Github在上週迎來了它的十歲生日。自從2008年正式上線以來,Github上面匯聚了數以千萬計的開發人員和各類項目,它幾乎成爲了開源的代名詞和風向標,各大軟件巨頭都紛紛支持,在廣大程序員心目中,也更是精神圖騰通常的存在,坊間戲言它是最大的同性交友平臺。html
我本身對開源瞭解很少,而且能力也有限,一直沒有在這方面有所貢獻,但我確定和你們同樣都是Github的受益者。今天這篇文章一方面是但願藉此爲Github慶生(原本是上週想寫,但一直沒有時間),另外也是由於最近有開源社區的朋友邀請我有機會談一談這些年Office 開發(尤爲指Office 365開發)中對開源平臺的支持,這方面我多多少少知道一點,就斗膽寫出來,也算是向「開源」精神致敬吧,請你們參考。git
本文以及這個系列文章都是託管在
Github
上面,用markdown
這種自由奔放的輕量級標記語言寫成,使用的工具Visual Studio Code
也是開源的,歡迎到https://github.com/chenxizhang/office365dev 上面來提issue
,歡迎給我star
以鼓勵,歡迎fork
這個repo
而且經過pull request
提交你的看法。程序員
微軟這幾年內部進行了深入的轉型,爲外界所熟知的除了有業務方向的變化、組織的調整、股價的飛漲以外,時不時會有一些讓業界「看不懂」的新動做,過去的很少說,今天最新的一個勁爆新聞是微軟也要推出本身定製版本的Linux,不由讓人感慨這世界到底怎麼了。github
但要論起微軟在開源方面的努力,其實在多年前就開始了。2006年先後,微軟發佈了Codeplex網站,當時也是規模不小的開源代碼託管平臺,微軟本身有不少著名的項目,都是在這個平臺上面開放源代碼,包括ASP.NET等,但後來的故事你們也差很少知道,隨着Github的崛起而且成爲事實上的標準,微軟將幾乎全部項目遷移到了Github,而且於2017年12月份正式封存了Codeplex(目前繼續提供只讀查詢,和下載服務)。docker
2014年4月,微軟宣佈成立.NET基金會,同時宣佈釋出.NET編譯器平臺Roslyn,做爲開放源代碼軟件。11月釋出在服務器上運行的.NET Core源代碼,交由.NET基金會管理,鼓勵自由軟件社羣參與將.NET軟件平臺移植到Linux與Mac OS上。基金會由開源社區的大神Miguel領銜,管理着55個正式的項目,很多業界的知名公司也是基金會的重要成員,包括Google,三星等。npm
值得一提的是,.NET基金會的源代碼也是託管在Github上面的,地址是 https://github.com/dotnet。gulp
回到Github上面來,據不徹底統計,目前微軟員工參與Github的人數是全世界最多的,全部項目得到Star總數組織排名全世界第三。下面我有一個不徹底的統計,能夠看出近四年來,微軟在Github上面的貢獻穩步攀升的表現,目前的Repository數量至少有 2054 個。數組
目前在Github上面,微軟最受歡迎的40個項目以下服務器
那麼,咱們來看看Office 365的開發,到底跟開源有什麼關係呢?在Github上面,微軟除了有一個最大的組織(https://github.com/microsoft)外, 還有兩個跟Office 365開發直接相關的組織,他們分別是markdown
SharePoint開發十大最受歡迎項目以下所示
Office 365開發中star數量超過100個16個項目以下
以上是微軟產品組不斷貢獻出來的一些項目。接下來,我還要談一下在Office 365開發的不一樣層面是如何支持開源平臺的。目前來講,咱們通常將Office 365的開發分爲以下幾個領域
使用 Microsoft Graph API 輕鬆鏈接到可加快工做效率的數據 – 郵件、日曆、聯繫人、文檔、目錄、設備以及在這些數據中發現有價值的信息 —— 不誇張地說,若是說員工和知識是企業的兩大無形資產的話,那麼Microsoft Graph就是一個寶藏,它不只表明着如今,也意味着將來極大的可能。
爲了讓Microsoft Graph可以極大地方便開發者調用,從一開始的設計理念,就是要支持全部的開發平臺 —— 不論是開源的,仍是不開源的。這一點是由Microsoft Graph的工做機制來保證的 —— 它就是一套標準的REST API。
這些API都是返回Json數據格式,並且徹底基於OData的規範設計,支持標準的查詢參數。
除了REST API ,微軟也有針對主流的平臺提供了SDK,能夠加快開發的速度。
我此前有過一篇文章專門介紹這個主題,這裏簡單地整理幾個要點。
要開發Office Add-in,你如今有多個選擇
下面我演示一個基本的步驟
安裝環境(NodeJS,Visual Studio Code)
安裝Office Add-in項目生成器 npm install -g yo generator-office
建立項目 yo office
在Visual Studio Code中編輯和調試項目
Visual Studio Code的話題也許三天三夜都講不完,但經過上述的介紹,你們能夠看到如今開發Office Add-in是一種全新的體驗,你可使用你最熟悉的編輯器,搭配你最喜歡的框架來工做。
與Office Add-in同樣,我此前也已經有專門的文章介紹和演示了SharePoint Framework的開發體驗,這裏也僅僅是將與開源相關的內容重點整理給你們參考,SharePoint Framework開發的最便捷步驟以下:
安裝環境(NodeJS,Visual Studio Code)
安裝模塊 npm install -g yo gulp
安裝SharePoint Framework 項目模板 npm install -g @microsoft/generator-sharepoint
建立項目 yo @microsoft/sharepoint
推薦使用React
運行和調試項目 gulp serve
在Visual Studio Code中編輯項目(圖略)
部署項目 gulp bundle
,gulp package-solution
Microsoft Teams是Office 365中一個重要的創新,它能夠將團隊協做提高到一個新的層次。從另外一方面,開發人員也能夠在這個平臺上面擁有全所未有的能力,例如:
聽起來有點複雜,但其實作起來真的不難,請參考下面的步驟
安裝環境(NodeJS,Visual Studio Code)
安裝Teams項目模板 npm install yo generator-teams -g
建立Teams項目 yo teams
在Visual Studio Code中編輯項目
你能夠經過上面的步驟快速建立一個Microsoft Teams應用,可是要作出來一個真正可用的App,你毫無疑問還須要更多的時間,請參考官方的文檔 https://docs.microsoft.com/zh-cn/microsoftteams/platform/
上面提到的Office Add-ins、SharePoint Add-ins、Teams App開發,你能夠看到針對NodeJS都提供了第一優先的支持,這是實實在在地愛開源啊。但我也必須說明的是,Office Add-ins
、SharePoint Add-ins
、Teams App
的開發支持任何的開發平臺,由於他們說到底就是一個標準的Web應用,只不過尚未像NodeJS這樣上升到工具和模板層面(這個能夠經過開源社區你們努力來實現),因此你可使用ASP.NET Core
、Python
、Php
等進行開發,而且能夠很方便地經過 docker
等一系列技術來實現devops。對,你沒有聽錯,Office 365的開發固然也能夠實現devops
。
關於如何在docker中運行ASP.NET Core跨平臺應用程序,我此前有一個文檔能夠參考 http://www.cnblogs.com/chenxizhang/p/7148657.html, 本書的範例是用ASP.NET Core編寫,而且部署到了Azure的docker環境中。
本文帶領你們回顧了一下開源及社區的發展、微軟在開源方面的努力,以及具體在Office 365開發的四個領域如何張開雙手擁抱開源。一千我的的心目中有一千個哈姆雷特,但開源的精神應該只有一個,它不只僅是開放源代碼,它是一種開放的心態;同時開源須要更多的人蔘與、去貢獻,只有這樣,咱們的「源」頭活水纔會生機勃發,愈來愈"開"闊。筆者今年的小目標是除了維護以前的一個小的開源項目外,爭取參與到微軟官方的幾個大的Office 365開源項目中去作一點貢獻,也但願看到更多的開發人員參與進來。