Tag Archives: Microsoft Graph

Community Standup with Kevin Gallo

Kevin Gallo will be live on Channel 9 with Seth Juarez on July 26th, 2017 at 9:30am PST. Kevin will be providing updates to the state of the Windows SDK inside Windows 10 Falls Creators Update since everyone last chatted with him at Microsoft Build 2017. As always, we’ll be answering live questions afterwards.

A few of the topics Kevin and Seth will be discussing are the Windows 10 Fall Creators Update SDK, .NET Standard 2.0, Fluent Design, Microsoft Graph with the Activity API and more.

Over time, we’ll hold more frequent community standups to provide additional transparency on what we are building out, and clarity on why we are building them. The community standups will not only be with just Kevin, but the entire Windows development team as well. We’ll be testing different streaming technologies and interaction models to see what works best. We would love feedback on this as well.

Once again, we can’t wait to see you at 9:30am PST on July 26th, 2017 over at https://channel9.msdn.com.

Project Rome: Driving user engagement across devices, apps and platforms

Overview

Recently there has been a dramatic shift in the way users use their devices. Rather than substituting new devices, users are using additional form factors like phones and tablets, alongside their PCs; many consumers live in a heterogeneous environment (interact with multiple platforms). In the past, form factor drove distinct types of behavior differences among consumers. However, this is no longer the case as multi-device consumers conduct all their activities across all their devices. Consumers also want to be able to use whatever screen is available independent of where the input comes from.

As users purchase more apps and devices, they naturally expect their lives to become better – simpler, more enjoyable, more productive. However, suddenly, these users are faced with some harsh realities where each device has a clear boundary and to communicate these devices require unnatural actions such as sending oneself an email or using USB sticks.

In addition, as users move between their devices, sometimes important “tasks” get lost because of this context switching. Developers suffer due to all this context switching as well since the developers lose the user engagement as their users switch between devices and apps.

For users, using these sets of devices seamlessly and productively across this heterogeneous ecosystem is complex. As a result, users see friction when moving between their devices. Project Rome aims to solve this complexity and friction by furthering the Microsoft vision of mobility of experiences across the user’s devices.

Microsoft’s vision of mobility of experiences is to create fluidity; moving wherever the user might go, enhancing the experience without being in the way. Mobility of experiences spans a broad range of areas: new hardware form factors, intelligent assistance and many more. Within that broad range, Project Rome is intended to help deliver fundamental advances, in a way that accrues value across all the other areas.

What is Project Rome?

Project Rome aims to deliver a more personal OS for the next generation of computing.

Project Rome consists of:

  • A programming model delivered as APIs for Windows, Android, iOS, and Microsoft Graph, enabling client and cloud apps to build experiences using the Project Rome capabilities.
  • A set of infrastructure services in the Microsoft cloud for Windows-based, and cross-platform devices.
  • A device runtime for connecting and integrating Windows-based and cross-platform devices to the Project Rome infrastructure services.

Our vision with Project Rome is to deliver a personal operating system that is not tied to a device or a platform. Imagine that you or your users live in a world where it does not matter what device, platform or form factor you are on, and the task or the project you are working on can happen regardless of the form factor.

Windows connects to Microsoft Graph!

Microsoft Graph exposes multiple APIs from Microsoft cloud services through a single endpoint: https://graph.microsoft.com. Microsoft Graph simplifies queries that would otherwise be more complex. Microsoft Graph is great benefit to developers, since developers can use a single Microsoft Graph endpoint to access Microsoft data rather than having to call different endpoints, and thus having to deal with multiple auth and data formats.

You can use Microsoft Graph to:

  • Access data from multiple Microsoft cloud services, including Azure Active Directory, Exchange Online as part of Office 365, SharePoint, OneDrive, OneNote and Planner.
  • Navigate between entities and relationships.
  • Access intelligence and insights from the Microsoft cloud (for commercial users).

With Windows Fall Creator’s update, through Project Rome, Windows connects to Microsoft Graph by adding new entities to the Microsoft Graph API set: devices and activities. 

Using Microsoft Graph REST endpoints, developers can now access the devices that belong to their users. In addition to Microsoft devices (PCs, Windows Phones, Xbox, IoT, HoloLens, etc), the device graph also exposes Android and iOS devices thus enabling developers to truly break down boundaries between devices.

Device graph

Project Rome exposes two APIs that developers can use to drive engagement between two or more active devices: RemoteSystems and RemoteSessions

RemoteSystems

We have talked about RemoteSystems APIs in previous blog posts. RemoteSystems enables developers to:

  1. Discover and connect to the user’s devices in proximity, or through the cloud
  2. Remotely launch apps on these devices
  3. Send messages to their apps on these devices

Using these capabilities, developers can build apps that can leverage the user’s environment and create rich experiences that transcend a single device. Below are some use cases of how developers could use these APIs:

  • Extend the experience: A developer could extend their app to launch on a bigger screen that may be more suited for the task at hand

  • Augment the experience: A developer could create a companion experience for their app on another of the user’s devices. This can aid in providing another view of functionality in their app

  • Enrich the experience: A developer could add additional controlling abilities to their app. An example of this could be where a developer provides remote control abilities for their main app from a companion device

The RemoteSystems APIs are now available for Windows, Android, iOS and MS Graph!

RemoteSessions

RemoteSystems enables developers to create single-user experiences where developers can tap into the user’s devices and provide experiences that transcend a single device. However, there are use cases that require developers to create experiences that are multi-user.

Starting with the Windows Fall Creators update, we are excited to announce the availability of the RemoteSessions APIs. The RemoteSessions APIs enable developers to create collaborative experiences for multiple users in proximity.

Here is a use case where developers can use these APIs:

  • Multi-user collaboration: Developers could create experiences where multiple users in proximity can start a session together and enable collaboration. Example of these could be where multiple users are editing a photo, video or a piece of music together. Or where multiple users are playing a game together

The RemoteSessions APIs are available in the Windows Fall Creators update. The Android and iOS implementations of these APIs is coming soon.

Below is a reference table of the capabilities enabled through the Project Rome device graph.

RemoteSystems RemoteSessions
Windows
Android

X

iOS

X

Microsoft Graph REST APIs  

X

Activity graph

Starting with the Windows Fall Creators Update, we are releasing the UserActivity APIs to enable developers to drive engagement in their apps, across devices and platforms. A UserActivity is the unit of user engagement in Windows, and consists of three components: a deep-link, visuals and content metadata. When a UserActivity session is created by an application, it will begin to accrue engagement records when users interact with an application.

When an application publishes UserActivity objects, the UserActivity object will show up in some of the new UI surfaces in Windows, for example, Cortana Notifications and Timeline. Developers can specify both rich metadata (to allow activities to be presented in just the right context) and rich visuals (using Adaptive Card markup) in their UserActivity objects.

Applications can publish UserActivity objects via the Windows.ApplicationModel.UserActivity UWP classes, or integrate directly with the Activity Graph via REST APIs as part of MS Graph. Using the MS Graph API allows applications to publish UserActivity object even from other platforms.

New in Windows Fall Creators update

We are excited to announce new capabilities enabled through Project Rome in the Fall Creators update. Some of these will have a dedicated blog post soon that will show you how to use these APIs and capabilities.

Remote Sessions

While the RemoteSystems set of APIs enabled developers to launch and message with devices belonging to the user, RemoteSessions APIs enables developers to create multi-user experiences in proximity. With the RemoteSessions APIs, developers can discover other devices in proximity and enable a collaborative session.

Microsoft Graph REST APIs

We have released the Project Rome APIs for Windows and Android as client SDKs for these platforms. With the Fall Creators update, we are now enabling these cross-device experiences through Microsoft Graph based REST APIs. Thus, developers can use a common endpoint to access the device graph and send commands to these devices remotely. Microsoft Graph based REST APIs are very useful when you would want to access Project Rome capabilities from say, a web page, a service, a headless device or even a browser extension.

With the Fall Creator’s update, we are releasing the following capabilities:

  • Device Discovery
  • Remote Launch
  • Remote App Services (messaging)
  • User Activity

User Activity APIs

During Build 2017, we showcased a few Windows Shell experiences that drive reengagement across apps, devices and platforms. These experiences were Windows Timeline and Cortana Notifications. These experiences enable users to continue the task that they were working on across devices and apps. Developers can plug into these experiences by using the UserActivity APIs. We are releasing the UserActivity APIs in the Windows SDK for the Fall Creators update. We are also releasing these APIs through Microsoft Graph REST APIs.

iOS SDK

We are excited to announce the availability of the Project Rome iOS SDK. With this SDK, we now have support for Remote Launch abilities onto other Windows devices. In this update, we have provided Objective C based projections onto the Project Rome device runtime. Other capabilities like app services based messaging and remote sessions are coming in a future update.

Android SDK

We announced the Project Rome Android SDK in February of this year, and we updated it a few weeks back. Today we are excited to announce another update to the Project Rome Android SDK. In this update, we have added Bluetooth client and RFComm based transport support. What this means for your apps is that you can now discover Windows devices in proximity using Bluetooth. This is in addition to discovery using Wi-Fi or LAN.

Summary

Project Rome breaks down barriers across all devices and creates experiences that are no longer constrained to a single device.

To learn more and browse sample code, including the snippets shown above, please check out the following articles and blog posts:

Windows is home for developers with Windows 10 Fall Creators Update

It was an amazing day today at Build 2017. With the Windows 10 Fall Creators Update, we continue to grow the Windows platform so that Windows is home for all developers. As I reflect on the day, I want to highlight how Windows and VS are creating the best end-to-end development process and enabling developers not only to maximize their code reuse, but also to create experiences that are engaging, powered by intelligence and connected across devices.

.NET Development Improvements

With today’s announcement that .NET Standard 2.0 for UWP and XAML Standard will be coming later this year, .NET is now the most complete cross-platform development framework.  This combination, along with Visual Studio, makes it easier than ever before to write fully native and full-featured apps for all your target platforms in C#, including Windows, iOS, Android, Linux and, of course, the cloud!

.NET Standard 2.0 and XAML Standard

.NET Standard 2.0 is expanding the UWP surface by over 20,000 APIs to make sure your code is more interoperable than ever. We also know that about 70% of NuGet packages are API compatible with .NET Standard 2.0. Your most requested APIs for UWP, such as Reflection and SqlClient, will be fully accessible to you from the Windows 10 Fall Creators Update. In addition, XAML Standard allows you to keep much of your UI code common and still maintain a native look and feel across Windows, iOS, and Android. Your experience on Windows will automatically provide Fluent UI and all input interaction models for free.  Our goal is to unify our XAML dialects across UWP XAML and Xamarin Forms, making cross platform development easier than ever. We encourage you to give us direct feedback in the GitHub repo – http://aka.ms/xamlstandard.

Microsoft Graph and Creating Connected Experiences

We are connecting Windows to the Microsoft Graph, enabling amazing new Windows shell features such as Timeline, Cloud Clipboard, and Pick up Where I Left Off (PWILO). And you can use the same APIs to enhance your own applications too.

Devices in the Microsoft Graph

Using the Microsoft Graph API, you can now access your all of your users’ devices, enabling you to break down boundaries between devices. You can call apps and app services on each device, allowing for cross-device coordination of experiences.

Activities in the Microsoft Graph

Starting with the Windows Fall Creators Update, we are releasing the UserActivity APIs, enabling you to drive engagement in your apps, across devices and platforms. A UserActivity is the unit of user engagement in Windows, and consists of three components: a deep-link, visuals, and metadata. When a UserActivity session is created by an application, it accrues engagement records as users interact with the application.

You can download the ‘Project Rome’ SDK for Android and iOS over at GitHub.

Adaptive Cards

Activities in the Microsoft Graph provide a great way to store and track your activity across all your devices. Being able to visualize those activities is a critical part of the experience your customers will expect. Adaptive cards provide developers a visualization, using an open format, that works across multiple applications and experiences. The visualization for all the activities in the Timeline is provided by attaching an adaptive card to the activity using the Project Rome APIs. Adaptive cards are based on a JSON schema that enables app/content providers to have a rich visualization surface that can be represented in numerous experiences. The experience that hosts the card has control over exactly how the card is represented so that the card feels like a natural extension of the UI of the host app.

You can find all the latest info on adaptive cards at http://adaptivecards.io

Microsoft Fluent Design System

With the Fluent design system, we are taking a significant step forward in re-envisioning the way we develop the next generation of apps and experiences that translate seamlessly and naturally across devices. Our world is increasingly being driven by multiple devices – phones, tablets, PCs, game consoles, mixed reality headsets, etc. We don’t use just one device, we use many, and we’re constantly expressing ourselves by creating and consuming content across them. Each of these devices behaves differently and fulfills different needs. Some rely on touch and ink, some read our voices and gestures. It’s because of this world we live in today that Microsoft is making a big investment in our design system.

Fluent Design enables the creation of more expressive and engaging experiences that work continuously across devices—from large screens, to small screens, to no screen—all in a way that will drive higher engagement and love for your apps.  There are 5 fundamentals to Fluid design system – light, depth, motion, materials and scale. All of these join together in concert to give us the capabilities to build immersive, rich apps that scale continuously across the device ecosystem:

  • Light – Light helps enable the ability to draw someone’s attention, or more clearly guide them through their navigations
  • Depth – Depth helps us understand how things relate to each other when they’re within a more layered, physical environment
  • Motion – Motion is a powerful way to establish context and imply relationships between content in natural, subtle and delightful ways
  • Material – Material can help take full advantage of the available screen space to celebrate content. It can also bring a sense of lightweight, ephemeral user experience
  • Scale – Scale allows us expand our toolbox for more dimensions, inviting innovation across new device form factors

You can learn and get more familiar with Fluent at http://dev.windows.com/design.

Test, Deploy and Manage More Quickly

Testing and a secure deployment system is critical, so I’m particularly excited by Visual Studio Mobile Center, which allows you to have a CI/CD pipeline for UWP (in addition to iOS and Android) and integrates with our Store to make publication and distribution of your apps a breeze! We are also adding Windows devices to our test cloud, to enable developers to see how the app will look on the various devices and to help find issues before publishing.

Windows is the ultimate dev box

Our ambition is to make Windows the best dev box – for any dev, writing any app, targeting any platform.

Last year at build, I announced that bash was coming to Windows through the Windows Subsystem for Linux. We heard your feedback that deployment was a bit challenging, so we are streamlining deployment to come directly from the Windows store. In addition, we are working with Suse and Fedora Linux to enable multiple Linux distributions to run simultaneously. On top of these additional distros, there are loads of improvements under the hood, such as USB device communications support (e.g. deploy your Raspberry Pi bits via USB from Bash), USB drive mounting (for FAT32/exFAT/NTFS formatted USB drives), network share mounting, improved network configuration sync between Windows and Linux, and deeper syscalls to improve the breadth and depth of WSL’s compatibility with Linux apps.

In addition, there’s now the Xamarin Live Player which allows you to deploy, run, test and debug iOS apps directly from a Windows PC. Never before have you been able to build for so many platforms on one dev box!

Getting started now

Finally, I love seeing what our developer community can create, and the amazing experiences you are bringing to Windows. Just a couple of days ago I had the opportunity to celebrate with some of you our first windows developer awards:

Thank you, and I look forward to trying your applications soon.