{"id":82251,"date":"2020-09-08T09:00:36","date_gmt":"2020-09-08T16:00:36","guid":{"rendered":""},"modified":"2025-06-24T10:51:34","modified_gmt":"2025-06-24T17:51:34","slug":"open-sourcing-tensorflow-with-directml","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/","title":{"rendered":"Open-sourcing TensorFlow with DirectML"},"content":{"rendered":"\n<p>Following the release of our <a href=\"https:\/\/pypi.org\/project\/tensorflow-directml\" target=\"_blank\" rel=\"noopener noreferrer\">Developer Preview<\/a> in June, today we&#8217;re announcing an exciting next step as we make the source code of TensorFlow-DirectML, an extension of TensorFlow on Windows, available to the public as an open-source project on GitHub. TensorFlow-DirectML broadens the reach of TensorFlow beyond its traditional Graphics Processing Unit (GPU) support, by enabling high-performance training and inferencing of machine learning models on any Windows devices with a DirectX 12-capable GPU through <a href=\"https:\/\/aka.ms\/directml\" target=\"_blank\" rel=\"noopener noreferrer\">DirectML<\/a>, a hardware accelerated deep learning API on Windows. TensorFlow-DirectML works on both native Win32 and on <a href=\"https:\/\/blogs.windows.com\/windowsdeveloper\/2020\/06\/17\/gpu-accelerated-ml-training-inside-the-windows-subsystem-for-linux\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Subsystem for Linux<\/a> (WSL). Students, beginners, and enthusiasts can utilize any DirectX 12 GPU in their machines to accelerate model training and prediction. Check out our new <a href=\"https:\/\/github.com\/microsoft\/tensorflow-directml\" target=\"_blank\" rel=\"noopener noreferrer\">tensorflow-directml<\/a> repo on GitHub.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tensorflow-with-directml-on-github\">TensorFlow with DirectML on GitHub<\/h2>\n\n\n\n<p>TensorFlow is a widely used machine learning framework for developing, training, and distributing machine learning models. Machine learning workloads often involve tremendous amounts of computation, especially when training models. Dedicated hardware such as the GPU is often used to accelerate these workloads. TensorFlow can leverage both Central Processing Units (CPUs) and GPUs, but its GPU acceleration is limited to vendor-specific platforms that vary in support for Windows and across its users&#8217; diverse range of hardware. Bringing the full machine learning training capability to Windows, on any GPU, has been a popular request from the Windows developer community.<\/p>\n\n\n\n<p>The DirectX platform in Windows has been accelerating games and compute applications on Windows for decades. DirectML extends this platform by providing high-performance implementations of mathematical operations\u2014the building blocks of machine learning\u2014that run on any DirectX 12-capable GPU. We&#8217;re bringing high-performance training and inferencing on the breadth of Windows hardware by leveraging DirectML in the TensorFlow framework. Not only does this extend TensorFlow&#8217;s GPU reach on Windows, but it also applies to the Windows Subsystem for Linux (WSL). Users can run or train their TensorFlow models in either a Windows or WSL environment with any DirectX 12 GPU.<\/p>\n\n\n\n<p>In June, we released the first preview of tensorflow-directml, our fork of TensorFlow that runs with a DirectML backend. Today, we are moving our development of tensorflow-directml to GitHub so we can engage with the TensorFlow community and focus our efforts on the issues users care about most.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tensorflow-with-directml-backend\">TensorFlow with DirectML Backend<\/h2>\n\n\n\n<p>The DirectML backend is integrated with TensorFlow by introducing a new device, named &#8220;DML&#8221; instead of &#8220;GPU&#8221;, with its own set of kernels that are built on top of DirectML APIs instead of Eigen source code as with the existing CPU and GPU kernels.<\/p>\n\n\n\n<p>DirectML is a low-level library built on top of Direct3D 12; the API is designed for high-performance, low-latency applications that require absolute control over resource allocation, and work scheduling. Integrating DirectML with TensorFlow involves a&nbsp;<em>device runtime<\/em>&nbsp;that&#8217;s responsible for managing device memory, copying tensors to and from the host, recording GPU commands, and scheduling and synchronizing work that occurs on both host\/CPU and device timelines. Some of the key components of this device runtime and how it interfaces with the DirectX platform, are shown in this figure below:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2020\/09\/opensource_tfdml_blogimage-1.png\" alt=\"TBC Placeholder\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DmlDevice<\/strong>\u00a0: Implements TensorFlow&#8217;s &#8220;Device&#8221; class and ultimately manages all device-related functionality.<\/li>\n\n\n\n<li><strong>DmlKernelWrapper<\/strong>\u00a0: Implements TensorFlow&#8217;s &#8220;OpKernel&#8221; interface, which allows device-specific implementations of operators.<\/li>\n\n\n\n<li><strong>DmlKernel<\/strong>\u00a0: Provides a concrete implementation of a TF operator by calling into DirectML.<\/li>\n\n\n\n<li><strong>DmlKernelManager<\/strong>\u00a0: Caches DmlKernel instances to avoid recompiling DirectML operators when possible.<\/li>\n\n\n\n<li><strong>DmlAllocator<\/strong>\u00a0: Manages GPU buffers backing TensorFlow tensors.<\/li>\n\n\n\n<li><strong>DmlExecutionContext<\/strong>\u00a0: Schedules work on the GPU, such as executing operators or copying memory.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"stay-involved\">Stay Involved<\/h2>\n\n\n\n<p>Check out our new <a href=\"https:\/\/github.com\/microsoft\/tensorflow-directml\" target=\"_blank\" rel=\"noopener noreferrer\">tensorflow-directml<\/a> repo on GitHub. We&#8217;re listening to feedback and open to contributions from community members looking to accelerate the capabilities as we progress on our journey to integrate our fork with the official build of TensorFlow in the future.<\/p>\n\n\n\n<p>If you haven&#8217;t already given the <a href=\"https:\/\/pypi.org\/project\/tensorflow-directml\/\" target=\"_blank\" rel=\"noopener noreferrer\">tensorflow-directml package<\/a> a try, follow the getting started documentation for setup on <a href=\"https:\/\/docs.microsoft.com\/windows\/win32\/direct3d12\/gpu-tensorflow-windows\" target=\"_blank\" rel=\"noopener noreferrer\">native Windows<\/a> or within <a href=\"https:\/\/docs.microsoft.com\/windows\/win32\/direct3d12\/gpu-tensorflow-wsl\" target=\"_blank\" rel=\"noopener noreferrer\">WSL<\/a>. It is as simple as getting your python environment setup up and then running pip install tensorflow-directml. We look forward to hearing your thoughts in the <a href=\"https:\/\/github.com\/microsoft\/tensorflow-directml\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">tensorflow-directml<\/a> repo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following the release of our Developer Preview in June, today we&#8217;re announcing an exciting next step as we make the source code of TensorFlow-DirectML, an extension of TensorFlow on Windows, available to the public as an open-source project on GitHub.<\/p>\n","protected":false},"author":5562,"featured_media":95479,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[2272],"content-type":[346,361],"topic":[2238],"programming-languages":[],"coauthors":[1677,1680,1683],"class_list":["post-82251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-microsoft","content-type-news","content-type-project-updates","topic-ai-machine-learning","review-flag-1593580428-734","review-flag-integ-1593580288-449","review-flag-lever-1593580265-989","review-flag-machi-1680214156-53","review-flag-new-1593580248-669"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Following the release of our Developer Preview in June, today we&#8217;re announcing an exciting next step as we make the source code of TensorFlow-DirectML, an extension of TensorFlow on Windows, available to the public as an open-source project on GitHub.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-08T16:00:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-24T17:51:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Clarke Rahrig, Justin Stoecker, Chai Chaoweeraprasit\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Clarke Rahrig, Justin Stoecker, Chai Chaoweeraprasit\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/clarke-rahrig\/\",\"@type\":\"Person\",\"@name\":\"Clarke Rahrig\"},{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/justin-stoecker\/\",\"@type\":\"Person\",\"@name\":\"Justin Stoecker\"},{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/chai-chaoweeraprasit\/\",\"@type\":\"Person\",\"@name\":\"Chai Chaoweeraprasit\"}],\"headline\":\"Open-sourcing TensorFlow with DirectML\",\"datePublished\":\"2020-09-08T16:00:36+00:00\",\"dateModified\":\"2025-06-24T17:51:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\"},\"wordCount\":685,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"keywords\":[\"Microsoft\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\",\"name\":\"Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"datePublished\":\"2020-09-08T16:00:36+00:00\",\"dateModified\":\"2025-06-24T17:51:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open-sourcing TensorFlow with DirectML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/","og_locale":"en_US","og_type":"article","og_title":"Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog","og_description":"Following the release of our Developer Preview in June, today we&#8217;re announcing an exciting next step as we make the source code of TensorFlow-DirectML, an extension of TensorFlow on Windows, available to the public as an open-source project on GitHub.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2020-09-08T16:00:36+00:00","article_modified_time":"2025-06-24T17:51:34+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.png","type":"image\/png"}],"author":"Clarke Rahrig, Justin Stoecker, Chai Chaoweeraprasit","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Clarke Rahrig, Justin Stoecker, Chai Chaoweeraprasit","Est. reading time":"3 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/clarke-rahrig\/","@type":"Person","@name":"Clarke Rahrig"},{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/justin-stoecker\/","@type":"Person","@name":"Justin Stoecker"},{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/chai-chaoweeraprasit\/","@type":"Person","@name":"Chai Chaoweeraprasit"}],"headline":"Open-sourcing TensorFlow with DirectML","datePublished":"2020-09-08T16:00:36+00:00","dateModified":"2025-06-24T17:51:34+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/"},"wordCount":685,"commentCount":5,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","keywords":["Microsoft"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/","url":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/","name":"Open-sourcing TensorFlow with DirectML | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","datePublished":"2020-09-08T16:00:36+00:00","dateModified":"2025-06-24T17:51:34+00:00","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2020\/09\/08\/open-sourcing-tensorflow-with-directml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Open-sourcing TensorFlow with DirectML"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/82251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=82251"}],"version-history":[{"count":2,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/82251\/revisions"}],"predecessor-version":[{"id":97646,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/82251\/revisions\/97646"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95479"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=82251"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=82251"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=82251"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=82251"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=82251"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=82251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}