Skip to content

2022 Roadmap

Eric Jizba edited this page Apr 26, 2024 · 2 revisions

Azure Functions Node.js Roadmap 2022-2023

Our roadmap is an open and honest plan for the next 6-12 months. We continuously tune the plan based on feedback and we will provide more detail in each of our monthly milestones. We do our best to estimate timelines, but in return we ask for patience and understanding as the timelines can often change during execution of a feature. This is our first roadmap in this format, but in the future we plan to cut a new roadmap roughly annually and archive the old roadmap for historical purposes.

Legend of annotations:

Mark Description
bullet work not started
check mark work completed
πŸƒ on-going work
πŸ’ͺ stretch goal

NOTE: Stretch goals are features unlikely to make the "public preview" phase within a larger theme and/or features unlikely to happen within 6-12 months.

Themes for 2022

  • Node 18 #522
  • New programming model #480
  • Distributed tracing
  • Durable Functions

Node 18

The following list is somewhat simplified as there are additional processes and requirements only tracked internally.

  • Add support in the worker
  • Add support for Windows in Azure
  • Add support for Linux in Azure
  • Add Node 18 as an option in tooling (VS Code, portal, core tools, az cli)
  • Announce public preview πŸŽ‰
  • Ensure existing performance optimizations also apply for Node 18 apps in Azure
  • Roll out LTS version of Node.js
  • Announce GA πŸŽ‰

New programming model

We announced public preview! πŸŽ‰ Learn more here: https://aka.ms/AzFuncNodeV4

Design & Engineering

  • Expose a core api from the worker so that apps and npm packages can contribute programming model features (e.g. registering hooks & functions) #567
  • Establish a new pattern of shipping the programming model in an npm package instead of directly in Azure. We plan to ship both the old and new programming models in this manner. #568
  • Prototype the main options for the new programming model
  • Narrow down the programming model options to just one prototype through feedback and user studies

Implementation

  • Add entrypoint for app-level code #537
  • Allow registering functions through code instead of "function.json" files #569
  • Implement new programming model based on prototype mentioned above #480
  • Support http, timer, and majority of azure resource triggers
  • Support durable triggers
  • Include long-standing breaking change feature requests from the backlog
    • Simplify and remove duplication on the context object #204
    • Handle all falsy values appropriately #388
    • Consistently handle binary data #294
    • πŸ’ͺ Consistently case headers #274
  • πŸ’ͺ Design and document unit testing best practices #120

Tooling

These apply to core tools, VS Code, the Portal, and in rare cases the az cli.

  • Create new templates, aiming for parity with the old programming model
  • Support creating a new project
  • Add information messages to encourage users to try the new model
  • Support creating a new function

Distributed Tracing

This theme is a collaboraton with the app insights team and is subject to their priorities and timelines. With that caveat in mind, we estimate this will work will wrap up in late 2022 or early 2023.

  • Expose invocation hooks #522
  • Leverage invocation hooks in the appinsights package to reduce the amount of boilerplate code required in a user's app v2.4.2
  • πŸ’ͺ Leverage the updated appinsights package/agent to allow users to benefit from app insights with zero boilerplate code required #523

Durable Functions

  • Adopt a linear-time orchestrator replay algorithm for dramatic performance improvements durable#305
  • Allow orchestrators to have timers longer than 6 days durable#325
  • Support fire-and-forget SignalEntity API durable#327
  • Support mutual exclusion for Entities durable#326
  • Support starting new orchestrations within Entities durable#330
  • Support starting a new orchestration from within orchestrators durable#328
  • πŸ’ͺ Support having a handle field for the RetryOptions object durable#329
  • πŸ’ͺ Implement class-based entities durable#331