{"id":89373,"date":"2021-12-14T08:10:14","date_gmt":"2021-12-14T16:10:14","guid":{"rendered":"https:\/\/cloudblogs.microsoft.com\/opensource\/?p=89373"},"modified":"2024-06-19T10:50:26","modified_gmt":"2024-06-19T17:50:26","slug":"add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/","title":{"rendered":"Add AI to mobile applications with Xamarin and ONNX Runtime"},"content":{"rendered":"<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2021\/12\/New-open-source-image.webp\" alt=\"\" class=\"wp-image-89601 webp-format\" srcset=\"\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2021\/12\/New-open-source-image.webp\"><\/figure>\n\n\n\n<p>ONNX Runtime now supports building mobile applications in C# with Xamarin. Support for Android and iOS is included in the ONNX Runtime release 1.10 NuGet package. This enables C# developers to build AI applications for Android and iOS to execute ONNX models on mobile devices with ONNX Runtime.<\/p>\n\n\n\n<p><a href=\"https:\/\/microsoft.github.io\/onnxruntime\/\" target=\"_blank\" rel=\"noreferrer noopener\">ONNX Runtime<\/a> is the open source project that is designed to accelerate machine learning across a wide range of frameworks, operating systems, and hardware platforms. We had previously introduced ONNX Runtime Mobile as the product targeting smartphones and other small storage devices.<\/p>\n\n\n\n<p>In today\u2019s release 1.10 we are enabling support for developers to build cross-platform applications targeting Android and iOS using Xamarin.Forms. This package supports the execution of ONNX models on the device\u2019s CPU using the default CPU Execution Provider. Some phone hardware contains specialized hardware (NPUs) for efficient ML execution via the NNAPI (Android) and CoreML (iOS) interfaces. With the ONNX Runtime Mobile package, developers can choose to use the NNAPI (Android) or CoreML (iOS) Execution Providers that are available in the package. Developers should test to compare the performance between the provider options to determine the optimal solution for the application and model execution. See <a href=\"https:\/\/onnxruntime.ai\/docs\/execution-providers\/NNAPI-ExecutionProvider.html#available-options\" target=\"_blank\" rel=\"noreferrer noopener\">NNAPI Options<\/a> and <a href=\"https:\/\/onnxruntime.ai\/docs\/execution-providers\/CoreML-ExecutionProvider.html#available-options\" target=\"_blank\" rel=\"noreferrer noopener\">Core ML Options<\/a> for more details to optimize and tune performance and accuracy when using the platform-specific accelerators.<\/p>\n\n\n\n<p><a href=\"https:\/\/dotnet.microsoft.com\/apps\/xamarin\" target=\"_blank\" rel=\"noreferrer noopener\">Xamarin<\/a> is an open source app platform for building modern and performant iOS and Android apps with C# and .NET. With support for Android and iOS in the NuGet feed, developers can infuse AI in their applications with ONNX Runtime.<\/p>\n\n\n\n<p>We have added a new sample for building a mobile application in Xamarin. This example runs an image classifier using ResNet to classify among well-known images. It is part of the <a href=\"https:\/\/github.com\/microsoft\/onnxruntime-inference-examples\/tree\/main\/mobile\/examples\/Xamarin\" target=\"_blank\" rel=\"noreferrer noopener\">onnxruntime-inference-examples<\/a> repo. This sample uses the official ONNX Runtime NuGet package.<\/p>\n\n\n\n<p>Add the ONNX Runtime package in your project:<\/p>\n\n\n\n<p><kbd>PM&gt; Install-Package Microsoft.ML.OnnxRuntime -Version 1.10.0<\/kbd><\/p>\n\n\n\n<p>Include ONNX Runtime package in your code:<\/p>\n\n\n\n<p><kbd>using Microsoft.ML.OnnxRuntime;<\/kbd><\/p>\n\n\n\n<p>To use the NNAPI Execution Provider in Android set:<\/p>\n\n\n\n<p><kbd>options.AppendExecutionProvider_Nnapi();<\/kbd><\/p>\n\n\n\n<p>To use the CoreML Execution Provider in iOS set:<\/p>\n\n\n\n<p><kbd>options.AppendExecutionProvider_CoreML(CoreMLFlags.COREML_FLAG_ONLY_ENABLE_DEVICE_WITH_ANE)<\/kbd><\/p>\n\n\n\n<p><strong>Getting started: <\/strong><a href=\"https:\/\/aka.ms\/xamarin_with_ort_blog\" target=\"_blank\" rel=\"noreferrer noopener\">This Xamarin blog post<\/a> demonstrates the basic steps for building Xamarin.Forms applications integrating with ONNX Runtime to build AI solutions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"onnx-runtime-1-10\">ONNX Runtime 1.10<\/h2>\n\n\n\n<p>Version 1.10 is the latest release of the high-performance and cross-platform inference engine. Other notable updates include:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Performance improvements:<\/strong> new quantized kernels on X64 and ARM64 amongst other optimizations<\/li><li><strong>Hardware flexibility:<\/strong> updates for TensorRT, DirectML, OpenVINO, and DNNL Execution Providers<ul><li>For NVIDIA GPUs, the ORT Python GPU package now includes both CUDA and TensorRT providers, making it easier for users to test or use either<\/li><\/ul><ul><li>Mac universal2 build: simplifies deployments targeting Macs as universal2 allows a single binary to work across M1 custom Apple silicon and Intel-based<\/li><\/ul><ul><li>Linux ARM64 now included in the Nuget package for .NET users<\/li><\/ul><\/li><li><strong>ONNX Runtime Web:<\/strong> support for WebAssembly SIMD for improved performance for quantized models<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"about-onnx-runtime-mobile\">About ONNX Runtime Mobile<\/h2>\n\n\n\n<p>ONNX Runtime Mobile is a build of the ONNX Runtime inference engine targeting Android and iOS devices. With this package, developers can build smartphone applications optimized for smaller disk footprint. Smaller application packages are also useful to comply with size requirements for Android and iOS App Stores. There are two flavors of the ONNX Runtime Mobile package\u2014the prebuilt package containing a subset of ONNX operator set focused on the mobile AI scenarios or a custom package that can be generated based on the specific models used by the AI application. Refer to these steps to generate the custom packages for <a href=\"https:\/\/onnxruntime.ai\/docs\/build\/android.html\" target=\"_blank\" rel=\"noreferrer noopener\">Android<\/a> and <a href=\"https:\/\/onnxruntime.ai\/docs\/build\/ios.html\" target=\"_blank\" rel=\"noreferrer noopener\">iOS<\/a>. The prebuilt packages are available for various platforms and language bindings. Refer to the <a href=\"https:\/\/onnxruntime.ai\" target=\"_blank\" rel=\"noreferrer noopener\">matrix of options<\/a> for the package corresponding to specific platform-language bindings.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ONNX Runtime now supports building mobile applications in C# with Xamarin. Support for Android and iOS is included in the ONNX Runtime release 1.10 NuGet package. This enables C# developers to build AI applications for Android and iOS to execute ONNX models on mobile devices with ONNX Runtime.<\/p>\n","protected":false},"author":5562,"featured_media":95479,"comment_status":"closed","ping_status":"closed","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,1824],"content-type":[361],"topic":[2238,2240,2244,2252],"programming-languages":[],"coauthors":[1706,1881],"class_list":["post-89373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-microsoft","tag-onnx-runtime","content-type-project-updates","topic-ai-machine-learning","topic-application-development","topic-devops","topic-tools","review-flag-1-1593580432-963","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>Add AI to mobile applications with Xamarin and ONNX Runtime | 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\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add AI to mobile applications with Xamarin and ONNX Runtime | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"ONNX Runtime now supports building mobile applications in C# with Xamarin. Support for Android and iOS is included in the ONNX Runtime release 1.10 NuGet package. This enables C# developers to build AI applications for Android and iOS to execute ONNX models on mobile devices with ONNX Runtime.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-14T16:10:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-19T17:50:26+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=\"Scott McKay, Guoyu Wang\" \/>\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=\"Scott McKay, Guoyu Wang\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 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\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/scott-mckay\/\",\"@type\":\"Person\",\"@name\":\"Scott McKay\"},{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/guoyu-wang\/\",\"@type\":\"Person\",\"@name\":\"Guoyu Wang\"}],\"headline\":\"Add AI to mobile applications with Xamarin and ONNX Runtime\",\"datePublished\":\"2021-12-14T16:10:14+00:00\",\"dateModified\":\"2024-06-19T17:50:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\"},\"wordCount\":635,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"keywords\":[\"Microsoft\",\"ONNX Runtime\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\",\"name\":\"Add AI to mobile applications with Xamarin and ONNX Runtime | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp\",\"datePublished\":\"2021-12-14T16:10:14+00:00\",\"dateModified\":\"2024-06-19T17:50:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#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\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add AI to mobile applications with Xamarin and ONNX Runtime\"}]},{\"@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":"Add AI to mobile applications with Xamarin and ONNX Runtime | 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\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/","og_locale":"en_US","og_type":"article","og_title":"Add AI to mobile applications with Xamarin and ONNX Runtime | Microsoft Open Source Blog","og_description":"ONNX Runtime now supports building mobile applications in C# with Xamarin. Support for Android and iOS is included in the ONNX Runtime release 1.10 NuGet package. This enables C# developers to build AI applications for Android and iOS to execute ONNX models on mobile devices with ONNX Runtime.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2021-12-14T16:10:14+00:00","article_modified_time":"2024-06-19T17:50:26+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":"Scott McKay, Guoyu Wang","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Scott McKay, Guoyu Wang","Est. reading time":"2 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/scott-mckay\/","@type":"Person","@name":"Scott McKay"},{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/guoyu-wang\/","@type":"Person","@name":"Guoyu Wang"}],"headline":"Add AI to mobile applications with Xamarin and ONNX Runtime","datePublished":"2021-12-14T16:10:14+00:00","dateModified":"2024-06-19T17:50:26+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/"},"wordCount":635,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","keywords":["Microsoft","ONNX Runtime"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/","url":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/","name":"Add AI to mobile applications with Xamarin and ONNX Runtime | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/MSC21_homeGaming_Surface_001.webp","datePublished":"2021-12-14T16:10:14+00:00","dateModified":"2024-06-19T17:50:26+00:00","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#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\/2021\/12\/14\/add-ai-to-mobile-applications-with-xamarin-and-onnx-runtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Add AI to mobile applications with Xamarin and ONNX Runtime"}]},{"@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\/89373","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=89373"}],"version-history":[{"count":1,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/89373\/revisions"}],"predecessor-version":[{"id":95731,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/89373\/revisions\/95731"}],"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=89373"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=89373"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=89373"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=89373"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=89373"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=89373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}