[筆記] MSDN 的授權方式

我自己也是 MSDN 的愛用者 (MVP 當選者可選擇訂閱 MSDN 一年),它提供了我在開發軟體時所需要的充份支援,包括開發工具,資料庫,作業系統,伺服器軟體以及 Office 等應用程式等資源,至少在軟體部份已經可達到自給自足的程度了...

MSDN 本身也分成四個等級,最高級的是 MSDN Ultimate Subscription,內含幾乎除了遊戲,設備 (Windows Phone, XBOX) 和家用軟體 (ex: Microsoft MapPoint) 以外所有的微軟軟體,而且版本都是專業等級人士在使用的。也因為軟體很多,所以有些人或公司就覺得那麼多套軟體不用很浪費,而把軟體發給其他像業務,HR 或秘書等人使用 (Office 就是如此),只是這樣做是違反授權合約的。MSDN 的 End-User License Agreement (最終使用者授權合約) 中,已明白的表示 MSDN 的授權是以單一使用者 (single user) 為授權主體 (EULA 1-b.),也就是說即便它的軟體資源很豐富,但它就只能授權給一個人使用,而這個人通常會是開發人員,或是建置測試環境的 IT 人員。
除了授權主體外,因應軟體開發,測試,展示等需要 (例如建置 Lab Management 環境),被授權的使用者還可以自由在不同數量的電腦硬體上安裝隨附的 Windows Server 2008 R2, SQL Server 2008 R2, Exchange Server 2010 或是其他伺服器軟體,以及 Office 等桌面應用軟體,這些都不需要額外的授權費用。不過這有個但書:這些硬體不可以是生產環境 (Production Environment) 的硬體,如果是生產環境的硬體,就違反了授權合約。不過 Team Foundation Server 是例外,如果訂閱等級是在 MSDN Professional 以上,就會授予安裝一套 Team Foundation Server 在生產環境中,因為 TFS 的目的就是作為系統開發的輔助,所以授予 TFS 在生產環境的使用也是很正常的。
而生產環境的定義,基本上除了下列行為以外的,都算:
開發 (Development) -規劃,設計軟體架構,使用 Visio 或 Visual Studio 2010 繪製 UML;使用 Visual Studio 2010 撰寫程式碼或使用輔助工具或第三方工具 (ex: NuGet) 協助開發工作與產製部署程式 (安裝程式) 等。
測試 (Testing) -使用自己開發的軟體與相關必要的軟體組成測試環境 (testing environment),以測試與評量自己所開發的軟體是否合於規範以及品質項目,包含使用 Visual Studio 2010 Test Edition, Visual Studio 2010 Lab Management 或是 Visual Studio Team Foundation Server 來控制或管理測試工具。
展示 (Demonstration) -建置必要的軟體組成環境 (ex: SQL Server, Exchange Server, SharePoint Server) 以讓自己開發的程式可以對外展示,展示包括講演 (seminar, conference),書面文件 (paper or documentation),實際操作 (demo) 等,而且不可以透過展示讓被授權者以外的人透過自己開發的服務來存取 MSDN 內附的軟體 (ex: SQL Server)。
因此 MSDN 內附的軟體基本上是只授權給一個開發人員使用,對團隊而言,如果團隊中的成員會接觸 (touching) 到開發工具或使用 MSDN 內附軟體所建置的測試環境的話,就必須要為會接觸到的成員採購足量的 MSDN 授權,至於要採購何種等級,就要看團隊成員接觸到的軟體是由哪個等級提供的,以最低等級為標準 (ex: 如果是 SQL Server,則採購 Professional Subscription 即可,但若是 Exchange Server, SharePoint Server 等,就必須要採購到 Premium Subscription 以上的授權了)。順道一提的是,每份 MSDN Professional 以上的訂閱等級,都內含一個 Team Foundation Server CAL 的授權。
另外針對前述的展示,只要是有包括 Windows Server 2003, Windows Server 2003 R2, Windows Server 2008 與 Windows Server 2008 R2 等軟體的訂閱等級,都會授予最多 200 個匿名的終端機服務 (Terminal Service License) 或遠端桌面授權 (Remote Desktop License),以讓遠端的客戶可以連入開發人員的展示機並觀看開發好的系統或程式的展示。
不過,雖說 MSDN 只願意授予像 Office 這樣的軟體開發與測試的權利,但微軟還是很佛心的,在授權合約中額外授予了被授權的使用者可在一台設備中安裝 Office Professional Plus 2010, Visio Premium 2010 , Project Professional 2010 這三種軟體的生產環境使用權。
除了上面說的這些情況外,還有幾個要注意的地方:
如果安裝 MSDN 內附軟體 (包含 Windows,像用 Windows 7 或 Windows Server 2008 R2) 的電腦有用到除了開發,測試與展示以外的用途 (ex: 玩遊戲,收發 email 或編寫非開發過程的文件) 時,必須要額外取得 Windows 作業系統的授權,像是透過購買新電腦取得 OEM 授權等。
如果透過虛擬環境來建置開發與測試環境,則不論是 Hosting 或是 Guest VM 以及內含的軟體 (例如使用 VM 來設置 SQL Server 資料庫),都必須要是以開發,測試或展示性質為條件,如果超出這個範圍,就必須要取得生產環境的授權。
MSDN 授權開發人員可在不同的電腦上安裝開發工具 (ex: 公司,家裡或是其他需要的電腦),但前提是安裝與使用開發工具的人必須是同一位被授權者。
降級使用權 (Downgrade),MSDN 授權開發人員可以使用 MSDN 內附軟體的早期版本,簡單的說,只要擁有 MSDN Visual Studio 2010 Professional 的訂閱授權,即可使用 Visual Studio 2008 Professional,而內附軟體 Windows Server 2008 R2 也可以降級使用 Windows Server 2008 或 Windows Server 2003 或 Windows 2000 Server 等。不過,若只有取得 Visual Studio 2010 Professional 而沒有取得 MSDN 訂閱的授權時,就只能使用 Visual Studio 2008 Professional 或更早的 Visual Studio 版本。
可轉散布元件 (Redistribute Components),Visual Studio 2010 授予開發人員列示於 REDIST.TXT 中的軟體元件清單,DLL,MFC 二進位程式,MDAC 二進位程式,ATL 二進位程式或其他已編譯為二進位執行碼的 EXE/DLL 等,但 LIB 不在可轉散布的範圍內,且不同系統 (ex: Commerce Server, Exchange Server, SharePoint Server) 也許會有不同的可轉散布元件清單,不過基本上只要有取得 Visual Studio 或是不同開發工具的授權,並透過相關 SDK (ex: Windows SDK, .NET Framework SDK, ...) 文件列出的元件 (ex: CDONTS.DLL, CDO.DLL) 所開發出來的程式,其相依元件都是可以轉散布的。
最後要提的是,MSDN 訂閱如果是透過一般管道取得的,除了 Subscriber Downloads 有期限以外,軟體本身是永久授權,不會受到到期的影響,但若是透過像 BizSpark, WebsiteSpark, Microsoft Partner Program (ex: Action Pack) 等計畫獲得的,則有可能會是非永久的授權,要看各計畫提附的 MSDN EULA 來決定。
如果上面有寫不清楚的地方,一切以 MSDN EULA 和 Visual Studio 2010 and MSDN Licensing Whitepaper 的說明為準。
PS: 以上內容為我個人閱讀 EULA/Licensing Whitepaper 後所得到的心得,不能完全作為法律解釋依據,若有發生衝突時,以 MSDN EULA 為最終解釋之法律文獻。