With Project Nucleus, Microsoft aims to improve the performance and reliability of intranet-focused web apps, starting with Lists.
OneDrive is now powered by SharePoint, and the new Lists application is actually using the SharePoint Graph API underneath. Microsoft Teams is in many ways a friendly way to access SharePoint resources: shared files in Teams live in SharePoint and private chats are implemented as site collections in SharePoint. And the Fluid Framework that Microsoft open-sourced earlier this year for creating collaborative distributed applications on what Microsoft 365 general manager Seth Patton calls “a hyper-fast and performant cloud platform that has AI built into it” is actually based on “pretty significant advancements made in the turbocharged SharePoint file storage”.
SEE: Top Windows 10 run commands (free PDF) (TechRepublic)
Teper suggested thinking about Fluid as an advance on REST APIs. “It’s a layer that we think will help unlock the creation of all sorts of back-ends for applications, with different front end [user experiences]. I hope we see a lot of line-of-business applications which today aren’t real time become real time, delightful, interactive — and expose components against their storage system, which is their own business process back end.”
Microsoft’s own first implementation of a back end for Fluid is SharePoint in the new OneDrive consumer service, although what it open-sourced is the Fluid protocol and data structure, plus components for collaboration that developers can connect to their own back-end services, not just SharePoint.
“Fluid started out with how we could leapfrog everything else that had been done around document collaboration and we specifically put a new storage system in SharePoint layered on top of Azure Blob Storage working in kernel mode to natively map the Fluid data structures in the protocol to on [storage] disk and SharePoint to be unbelievably fast,” Teper said.
Patton told TechRepublic last year that behind the scenes, SharePoint Online uses Azure SQL and Azure Blob Storage. In fact, SharePoint Online is the single biggest customer for Azure Storage, and the Windows and SharePoint teams worked together on a new file I/O stack to optimise the performance of SharePoint access patterns. That includes a native kernel-mode virtual disk client in Azure that performs read and write operations directly on the server where the blob is stored rather than going through multiple layers of load balancers and servers (a similar storage service called Direct Drive powers the Azure Ultra Disk Storage service that’s designed for I/O intensive workloads like SAP Hana). Instead of sending requests to blob storage for one chunk of a file at a time, the requests are deserialised and sent in parallel, so when multiple people are collaborating in a Fluid document, changes aren’t waiting in a storage queue.
Fluid is a new data layer, and in Microsoft’s implementation it’s using this new SharePoint storage layer to get the data onto disks in Azure fast enough for what Teper calls “near zero latency co-authoring”.
Taking PWAs beyond basics
If Fluid is the future of the back end for web apps, Project Nucleus is Microsoft’s bet for improving the performance and reliability of those web apps, including using them to browse or edit data when you’re not connected (or you’re on a very slow network).
Progressive Web Apps (PWAs) are a very lightweight way of distributing applications: they can go in an app store and can be installed like a native app, or they can be something the user pins from their web browser like a bookmark. A PWA doesn’t spin up a whole different copy of the browser engine the way an Electron app like Teams does (which also needs to be updated separately). And depending on the device, PWAs get some of the same OS integrations that native apps do, like notifications and jump lists.
But for something like SharePoint, PWAs aren’t a great experience for working with very large and complex data sets, as the performance isn’t always fast, especially on a slow network connection.
When looking at performance, the SharePoint team measures both how quickly the important content is visible on screen (‘first meaningful paint’) and how soon the web app can respond to user input (‘first CPU idle’, which is when the browser thread has no more tasks and can reliably respond to user input). The goal is to get those two times as similar as possible, so that you can interact with the content as soon as you can see it on-screen. For most users, the SharePoint team currently aims to put the content on-screen in two to three seconds (depending on how dynamic the page is and how many web parts it has); for people on a sluggish network, the goal is four to six seconds.
SEE: How to reinstall Windows 10 from the cloud (TechRepublic)
Nucleus builds on the synchronisation that OneDrive does, including differential sync — where only the changes in a file are transferred, rather than the whole file every time — and uses that as a cache for a PWA to improve performance and allow offline use. The cache isn’t limited to files the way it is in OneDrive; it uses a standard set of APIs to sync the PWA with the cloud back end, so it can cache whatever data the app needs. Changes you make while offline will get uploaded when you’re back online. The cache is encrypted for security and only available to the PWA. It’s currently only for Windows and Chromium-based browsers like Edge, but it will be cross-platform and on all modern browsers when it’s generally available.
The next generation of OneDrive and SharePoint web apps will use Nucleus, but it will debut in Microsoft Lists, Microsoft director of product marketing Dan Holme told TechRepublic.
“The first place that it will come to life is with Microsoft Lists, which is the evolution of SharePoint lists into a standalone hero list experience,” Holme said. “Project Nucleus will allow you to work with Lists offline: it will take care of all of the merging and synchronisation of changes. Behind the scenes, it uses some of the capabilities and technologies we’ve developed as we scaled OneDrive. So just as OneDrive is doing a really awesome job for customers synchronising work on files, which in many ways is even more complicated because those are unstructured, Project Nucleus is going to facilitate offline access to lists, on mobile, as well as on desktop.”
Lists is a good application to start with because the cache means that even on a slow connection, sorting or grouping columns and filtering, even in really large lists, will be extremely fast. Microsoft has demonstrated this with lists containing a hundred-thousand items, has already tested million-item lists internally, and expects to support even larger lists. Sorting a column doesn’t make a call to the Lists web service; it works with the data in the Project Nucleus cache, so sorting or filtering a hundred-thousand-item list will take around two milliseconds, which makes it look instantaneous.
The Project Nucleus version of Microsoft Lists is currently in private preview.
But Project Nucleus is being built on an extensible framework, so other web apps will be able to take advantage of it, and it will cover more kinds of data than just lists. In time, it will be available in SPFx and open to third parties who create components.
“This will extend over time to many, many applications,” Holme said. “We announced the home site app in Microsoft Teams [at Ignite], which brings the best of the intranet into teams so that people don’t have to leave the context of their work to find resources across the organisation, or to keep up with news. And Project Nucleus will really accelerate the performance of the intranet within Teams. It will, over time allow for more interesting file experiences on mobile. Right now you can download a file for use on mobile, but it’s not yet using true synchronisation, and Project Nucleus will enable that over time as well.”
“We’ve been very successful with the synchronisation and offline technologies that we built as part of OneDrive on the client, we’ve got the Fluid framework on the service, and we’ve got progressive web apps as a way to experience our web applications,” Holme added. “Now when those three things come together, you’ve got this technology that will be on the back end enabling new scenarios like offline access.”