Microsoft發布了采集自.NET Core SDK用戶的遙測原始數據集。數據集的時間跨度是從2016年第三季度到2017年第二季度,為了解當前開發人員使用SDK的情況提供了一個視角。據Microsoft的Rich Lander介紹,今后Microsoft將每季度提供一次遙測數據集,數據集將以開放數據共享署名許可(ODC-By,Open Data Commons Attributions License)提供。
數據反映的是從命令行使用.NET Core的情況,因此未涉及.NET Core的Visual Studio用戶。.NET Core SDK 1.X采集如下應用信息:
正在使用的命令(例如:build、restore等);命令的退出碼(ExitCode);對測試項目所使用的測試運行程序;調用的時間戳;運行時節點中是否存在運行時ID正在使用的CLI版本;操作系統版本。Lander指出,對于.NET Core SDK 2.X系列,遙測進一步采集下述應用信息。應注意的是,每個從命令行運行.NET Core SDK的機器,對應于一個匿名并唯一的ID:
dotnet命令的參數和選項,用于確定使用該產品的更多細節信息。例如,采集dotnet new的模板名稱,采集dotnet build --framework netstandard2.0所指定的框架。遙測只采集一些給定的參數和選項,而非任意的字符串。
容器,用于確定SDK是否在容器中運行。這有助于Microsoft確定是否應進一步提供更多的支持容器的工作。
命令的持續時間,用于確定一個命令運行的時間。這對于識別那些值得深入調查的性能問題十分有用。
目標.NET框架,用于確定所使用的目標框架,以及是否指定了多個框架。該應用信息對于了解最廣泛使用的.NET標準版本情況,以及需要什么樣的使用指導是十分有用的。
哈希MAC地址,用于確定機器的加密ID。該ID是匿名且唯一的。這對于確定使用.NET Core機器的總體數量十分有用。考慮到用戶的反饋意見,Lander稱這些數據將不會對公眾發布。
必須加以重申的是,是否參與.NET Core SDK遙測項目是一種可選的行為,但是采用了默認為參加的方式。這意味著,如果開發人員不希望參與其中,將必須去設置一個環境變量(即DOTNET_CLI_TELEMETRY_OPTOUT)啟動禁用。此外,Lander重申了遙測并非.NET Core運行時的組成部分,因此應用信息采集只針對.NET Core SDK用戶。
Microsoft的.NET Core團隊不僅擴展了所采集的應用信息數據的范圍,而且正根據他們從中獲得的實踐經驗去改進.NET Core 2 SDK。首先,團隊將會為不同的Linux提供統一的構建版本,而非為每個其所支持的發布版(例如Red Hat、Debian等)提供一個單獨的版本。其次,一個對macOS用戶利好的消息是,OpenSSL不再是必須的。團隊正為實現從源代碼構建.NET Core 2而做一些改進(此前并未提及),使得.NET Core 2 SDK更易于加入到Linux發布版的軟件包架構中。
有意思的是,在不同的操作系統上,使用得最多的命令是不同的。
OS X(macOS):“restore”使用得最多;Linux:“run”使用得最多(達一千一百萬次,遠高于第二名“restore”的三百萬次);Windows:“build”使用得最多。.NET Core SDK本身并不記錄用戶的IP地址,但Microsoft的服務器會做記錄。客戶的IP被截為三個八位的字節,這使得Microsoft可以追蹤全球范圍內的SDK使用情況。對于從操作系統層面看,.NET Core SDK開發人員使用Windows最多,占71%,使用Linux的占18%,而使用macOS的占11%。
如果對這些已提供的數據集感興趣,可以直接從Microsoft獲取。(需提請注意的是,這些數據集是一些很大的文件,大小從188M到516M不等。)獲取地址分別為:
查看英文原文: How Microsoft Uses the .NET Core SDK Telemetry