Low-code development tools like Microsoft’s Power Platform are more than a way for users to build the apps they need when they need them. They’re a way to rapidly building code that’s needed urgently. You only have to look at the application my local general practitioner partnership, along with others in this part of London, have been using to manage appointments for COVID-19 vaccinations.
Mixing Microsoft’s Bookings tool with a third-party SMS application, this appointment app uses a Power Automate flow to link APIs. Triggered by a database update as age restrictions are removed, the application texts registered patients a link to a booking form that quickly finds the next available appointments. It may be built from low-code components linking APIs, but it’s a professional application with multiple endpoints, including desktop tools, to help medical staff make follow-up calls and manage appointments directly.
More and more organizations are taking advantage of tools like these to build out cross-organizational teams that go beyond traditional development models, rethinking the software development life cycle. It’s important to note that this doesn’t require deskilling engineers or “dumbing down” tools. Instead, it’s a process of bridging development environments and providing a common framework where everyone can work to deliver the solutions that businesses desperately need.
Power Platform is for both developers and users
Microsoft has clearly been aware of this trend for some time now and has been working to provide appropriate extensions to its Power Platform that bring it into familiar development tools. There’s no point in breaking a Visual Studio-based workflow by adding graphical web-based tools when you can build new tools into Visual Studio that support those tools. Instead of clicking and editing, graphical elements are abstracted into language and management features of a CLI. This isn’t a lowest common denominator approach; everyone gets to use the tools they regularly use, in the way that they’re meant to be used, in the environment they’re intended to be used in.
At Build 2021 the Power Platform team focused on the developer and devops features of the platform, going beyond the familiar web-based UIs for both Power Apps and Power Automate and looking instead at the Power Fx language and integrations with continuous integration and continuous delivery (CI/CD) pipelines and application life-cycle management through GitHub and Azure Devops. At the same time, the team also showed how Power Platform was taking advantage of the GPT-3 language model to generate Power FX code from English statements as well as using Microsoft Research’s own PROSE (PROgram Synthesis using Examples) for example-driven code generation.
Much of these developments are focused on those cross-organizational teams, which Microsoft is calling “fusion teams.” While machine learning technologies like GPT-3 simplify the initial process of writing code, delivering what business users want quickly, the resulting Power Fx code can be managed and edited using familiar development tools. You can think of the resulting workflow as a user-driven design process. Users use tools like GPT-3 and PROSE to build a first cut of an application and pass the results over to a development team to refine both code and the application layout before publishing the resulting app.
PROSE is an important piece of Microsoft’s overall developer strategy, and it’s being used in several important tools already, including Excel and the Azure Data Studio. At present it’s best suited for designing program elements with well-defined inputs and outputs, for example, building queries and filters.
Adding Power Apps to your development workflow
As the Power Platform expands to encompass more traditional line-of-business application development, in effect becoming the new Visual Basic, it’s likely to replace many user interface building tools. This requires support in traditional development environments, with language servers for Power Fx as well as tools for managing the platform outside of its web-based environment. By providing an API/connector-based model for application integration, along with an Excel- and Access-like user interface model, Microsoft enables developers to provide easy-to-use, task-oriented interfaces for a wide selection of business applications, linking multiple business systems together for queries and for updates.
The first step to delivering this is Power Platform’s CLI. Available as a stand-alone download for use from Windows’ terminal or as part of the Visual Studio Code tools for Power Platform, it’s a relatively simple set of command line tools. You can use it to manage your Power Platform environments, as well as work directly with various elements of the platform.
If you’re working with Power Apps inside Visual Studio Code, open the built-in terminal to access the CLI from inside the editor. Launch it by typing
pac at the command prompt initially to show the various command groups built into the tool. The CLI contains tools for work with the Dataverse, with Power Apps canvas apps’ .msapp files and for Power Apps components and portals, as well as handling authentication and managing your Power Apps accounts.
There are a lot of commands in each section, though for now the most useful are the tools for quickly extracting Power Apps code and bringing it into your developer environment. These commands unpack and pack .msapp files into a standard folder structure with separate directories for application sources and for key resources. The Power Fx code for your app will be in a YAML file in the /src directory. The structure used is similar to that created by most web application scaffolding tools, so it should be easy to bring into most application workflows.
Writing code for low code: Power Fx
Microsoft recently introduced a new language for Power Apps: Power Fx. Based on both Excel formulas and SQL queries, Power Fx uses a YAML syntax to structure the code for an app, bringing all your Power Apps formulas into a single file. As it’s a declarative functional language, you can think of each line of code as a separate function that references other controls and connectors and in turn is referenced by other controls and connectors. Each line is an action or a series of actions running independently and asynchronously.
You can bring much of what you know from Excel to Power Fx, simply swapping out cell references for controls and using a SQL-like dot notation for working with data structures, handling tables and columns. Code in Power Fx is created both by writing new formulas and by customizing controls. The result is a simple way to take what has been developed by a user and work with it outside of the Power Apps Studio web application. That code doesn’t need to be human generated; it can come from either GPT-3 or from PROSE.
With a standard structure for an unpacked application, you can bring the code into your choice of source control, like GitHub, for example. Changes can be copied from local working directories into one that’s controlled by git, allowing you to use commits and pull requests to manage code and to ensure that the final .msapp file is packed from your main branch or from your chosen repository. Once code has been repacked, it can be imported into Power Apps Studio, ready for use. You can even use GitHub Actions to manage the process.
It’s important to remember that Power Platform is not a toy development environment. Like Excel, it’s being used to deliver complex applications that go well beyond simple reports and basic data manipulation tools. In fact, if you look at the explosion of Power Platform applications in services like the UK’s National Health Service during the COVID-19 pandemic, it’s clearly a tool that people’s lives depend on.
The ability to source data from multiple applications, process it, add user inputs, and then submit it to additional applications makes it not only a user experience tool but also middleware. We shouldn’t be surprised that Microsoft is making the Power Platform and all its tools its next major platform, alongside Windows, the Microsoft Graph, and Azure. It’s still early days, but tools like these show the direction Microsoft intends to take things, changing the relationship between enterprise developers and users completely.