Skip to content

Commit dcfcd09

Browse files
leandrodamascenasinofseven
authored andcommitted
docs(roadmap): update roadmap (aws-powertools#6077)
* Adding roadmap * Roadmap
1 parent 4298754 commit dcfcd09

File tree

1 file changed

+26
-182
lines changed

1 file changed

+26
-182
lines changed

Diff for: docs/roadmap.md

+26-182
Original file line numberDiff line numberDiff line change
@@ -1,126 +1,38 @@
11
<!-- markdownlint-disable MD043 MD041 -->
2-
# Overview
2+
## Overview
33

44
Our public roadmap outlines the high level direction we are working towards. We update this document when our priorities change: security and stability are our top priority.
55

6-
!!! info "See our [current iteration cycle](https://github.com/orgs/aws-powertools/projects/3/views/14?query=is%3Aopen+sort%3Aupdated-desc){target="_blank"} for the most up-to-date information."
6+
!!! info "For most up-to-date information, see our [board of activities](https://github.com/orgs/aws-powertools/projects/3?query=sort%3Aupdated-desc+is%3Aopen){target="_blank"}."
77

8-
## Key areas
8+
### Key areas
99

1010
Security and operational excellence take precedence above all else. This means bug fixing, stability, customer's support, and internal compliance may delay one or more key areas below.
1111

1212
**Missing something or want us to prioritize an existing area?**
1313

1414
You can help us prioritize by [upvoting existing feature requests](https://github.com/aws-powertools/powertools-lambda-python/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Afeature-request), leaving a comment on what use cases it could unblock for you, and by joining our discussions on Discord.
1515

16-
### Observability providers
16+
#### New features and utilities (p0)
1717

18-
We want to extend Tracer, Metrics, and Logger to support any [AWS Lambda certified observability partner](https://go.aws/3HtU6CZ){target="_blank"}, along with OpenTelemetry.
18+
We will create new features and utilities to solve practical problems developers face when building serverless applications.
1919

20-
At launch, we will support Datadog since it's [most requested observability provider](https://github.com/aws-powertools/powertools-lambda-python/issues/1433). OpenTelemetry will be a fast follow-up as we need to decide on a stable solution to cold start penalty.
20+
- [ ] [Ability to buffer logs](https://github.com/aws-powertools/powertools-lambda-typescript/discussions/3410){target="_blank"}
21+
- [ ] Async event handlers to streamline complex event-driven workflows across SQS, EventBridge
2122

22-
!!! tip "Help us identify which observability providers we should integrate next. Open [feature request](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=feature-request%2Ctriage&projects=&template=feature_request.yml&title=Feature+request%3A+TITLE){target="_blank"} or by voting `+1` in existing issues"
23+
#### Powertools toolchain (p1)
2324

24-
**Major updates**
25+
To improve Lambda development workflows and tooling capabilities, we aim to demonstrate how to simplify complex packaging methods, enable OpenAPI code generation for multiple Lambda functions, and introduce profiling tools to evaluate Powertools for AWS Lambda (Python) code implementation, tracking memory consumption and computational performance.
2526

26-
* [x] [Document how customers can use any provider with Logger](https://docs.powertools.aws.dev/lambda/python/latest/core/logger/#observability-providers)
27-
* [x] [Extend Metrics to add support for any Provider](https://github.com/aws-powertools/powertools-lambda-python/pull/2194)
28-
* [ ] [Extend Tracer to add support for any Provider](https://github.com/aws-powertools/powertools-lambda-python/pull/2342#issuecomment-2061734362)
29-
* [ ] Investigate alternative solution to OpenTelemetry cold start performance
27+
- [ ] Create a comprehensive "Recipes" section with Lambda packaging tutorials for tools like uv, poetry, pants, providing clear, practical build strategies.
28+
- [ ] Enable OpenAPI generation capabilities to create specifications across multiple Lambda functions, eliminating LambdaLith architectural constraints.
3029

31-
### Lambda Layer in GovCloud
30+
#### Support for async (p2)
3231

33-
We want to investigate security and scaling requirements for these special regions, so they're in sync for every release.
32+
Python's serverless ecosystem is increasingly adopting asynchronous programming to deliver more efficient, non-blocking applications.
3433

35-
!!! note "Help us prioritize it by reaching out to your AWS representatives or [via email](mailto:[email protected])."
36-
37-
**Major updates**
38-
39-
* [x] Gather agencies and customers name to prioritize it
40-
* [x] Investigate security requirements for special regions
41-
* [x] Create additional infrastructure for special regions
42-
* [x] AppSec review
43-
* [x] Update CDK Layer construct to include regions
44-
* [x] Distribution sign-off
45-
* [ ] Distribute latest version
46-
* [ ] Update Layer section with new AWS Accounts
47-
48-
### V3
49-
50-
We are in the process of planning the roadmap for v3. As always, [our approach](./versioning.md){target="_blank"} includes providing sufficient advance notice, a comprehensive upgrade guide, and minimizing breaking changes to facilitate a smooth transition (e.g., it took ~7 months from v2 to surpass v1 downloads).
51-
52-
For example, these are on our mind but not settled yet until we have a public tracker to discuss what these means in detail.
53-
54-
* **Parser**: Drop Pydantic v1
55-
* **Parser**: Deserialize Amazon DynamoDB data types automatically (like Event Source Data Classes)
56-
* **Parameters**: Increase default `max_age` for `get_secret`
57-
* **Event Source Data Classes**: Return sane defaults for any property that has `Optional[<type>]` returns
58-
* **Batch**: Stop at first error for Amazon DynamoDB Streams and Amazon Kinesis Data Streams (e.g., `stop_on_failure=True`)
59-
60-
**Major updates**
61-
62-
* [ ] Create an issue to track breaking changes we consider making
63-
* [ ] Create a v3 branch to allow early experimentation
64-
* [ ] Create workflows to allow pre-releases
65-
* [ ] Create a mechanism to keep ideas for breaking change somewhere regardless of v3
66-
67-
### Revamp Event Handler
68-
69-
Event Handler provides lightweight routing for both [**REST**: Amazon API Gateway, Amazon Elastic Load Balancer and AWS Lambda Function URL](./core/event_handler/api_gateway.md), and [**GraphQL**: AWS AppSync](./core/event_handler/appsync.md).
70-
71-
<!-- markdownlint-disable MD013 -->
72-
Based on customers feedback, we want to provide [middleware authoring support](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/#middleware) for cross-cutting concerns. For REST APIs, we are also looking into auto-generate [OpenAPI Schemas](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/#data-validation) and a [SwaggerUI route](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/#enabling-swaggerui). For GraphQL, we are working on supporting batch invocations (N+1 problem) along with partial failure support.
73-
<!-- markdownlint-enable MD013 -->
74-
75-
**Major updates**
76-
77-
* [x] [Agree on experience for middleware support](https://github.com/aws-powertools/powertools-lambda-python/issues/953#issuecomment-1450223155)
78-
* [x] [RFC to outline initial thoughts on OpenAPI integration](https://github.com/aws-powertools/powertools-lambda-python/issues/2421)
79-
* [x] [MVP for REST middleware](./core/event_handler/api_gateway.md#middleware)
80-
* [x] [MVP for OpenAPI and SwaggerUI](https://github.com/aws-powertools/powertools-lambda-python/pull/3109)
81-
* [ ] [MVP for AppSync Batch invoke and partial failure support](https://github.com/aws-powertools/powertools-lambda-python/pull/1998)
82-
83-
### Authentication (SigV4)
84-
85-
[During customers interview](https://github.com/aws-powertools/powertools-lambda-python#connect){target="_blank"}, we hear that signing requests using [AWS SigV4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html){target="_blank"} could be easier.
86-
87-
Since JWT is a close second, this new utility would cover higher level functions to sign and verify requests more easily.
88-
89-
**Major updates**
90-
91-
* [x] [Issue to outline challenges](https://github.com/aws-powertools/powertools-lambda-python/issues/2493), alternative solutions and desired experience
92-
* [ ] [MVP for AWS SigV4](https://github.com/aws-powertools/powertools-lambda-python/pull/2435)
93-
94-
### Office hours
95-
96-
We heard from [customers](https://github.com/aws-powertools/powertools-lambda-python#connect){target="_blank"} that Powertools for AWS Lambda and its community can move faster than they are able to catch up. While documentation and release notes take these into account, they notice they don't always know advanced tricks, or what other customers tend to do in similar situations.
97-
98-
We want to run a monthly office hours to start addressing that, and learn from customers how they're using Powertools and whether or not they need a closer support.
99-
100-
Timezones being tricky, we plan to experiment with an afternoon slot in Central European that would also cover Middle East, US east coast, and South America. Depending on attendance, we plan to A/B test an Asia friendly one too.
101-
102-
**Major updates**
103-
104-
* [x] Decide whether to use Amazon Chime or Zoom (we had audio setup issues on Discord)
105-
* [ ] Experiment running monthly roadmap review as an open call
106-
* [ ] Settle on monthly roadmap review agenda
107-
* [ ] Invite Discord community
108-
* [ ] Update roadmap page with Discord event
109-
110-
### Enhanced operational metrics
111-
112-
[Through customers interview](https://github.com/aws-powertools/powertools-lambda-python#connect){target="_blank"}, [Discord](https://discord.gg/B8zZKbbyET){target="_blank" rel="nofollow"}, and [1:1 customer enablement](https://github.com/aws-powertools/powertools-lambda-python#connect){target="_blank"}, we noticed customers often create the same set of custom operational metrics.
113-
114-
We want to make this easier by extending certain utilities to accept a `metrics` instance and metrics configuration (what metrics to create). It would be opt-in due to costs associated with creating metrics.
115-
116-
!!! question "Got ideas for custom metrics? Open up a [feature request](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=feature-request%2Ctriage&projects=&template=feature_request.yml&title=Feature+request%3A+TITLE)"
117-
118-
**Major updates**
119-
120-
* [ ] RFC to outline metrics for Batch (_e.g., Failed items, Batch size_)
121-
* [ ] RFC to outline metrics for Feature flags (_e.g., matched rules_)
122-
* [ ] RFC to outline metrics for Event Handler (_e.g., validation errors_ )
123-
* [ ] RFC to outline metrics for Idempotency (_e.g., cache hit_)
34+
- [ ] Add support for aioboto3 or other tool, enabling efficient, non-blocking AWS service interactions in Lambda functions.
35+
- [ ] Write a PoC with Event Handler support for async.
12436

12537
## Roadmap status definition
12638

@@ -134,11 +46,11 @@ graph LR
13446

13547
Within our [public board](https://github.com/orgs/aws-powertools/projects/3/views/1?query=is%3Aopen+sort%3Aupdated-desc){target="_blank"}, you'll see the following values in the `Status` column:
13648

137-
* **Ideas**. Incoming and existing feature requests that are not being actively considered yet. These will be reviewed when bandwidth permits.
138-
* **Backlog**. Accepted feature requests or enhancements that we want to work on.
139-
* **Working on it**. Features or enhancements we're currently either researching or implementing it.
140-
* **Coming soon**. Any feature, enhancement, or bug fixes that have been merged and are coming in the next release.
141-
* **Shipped**. Features or enhancements that are now available in the most recent release.
49+
- **Ideas**. Incoming and existing feature requests that are not being actively considered yet. These will be reviewed when bandwidth permits.
50+
- **Backlog**. Accepted feature requests or enhancements that we want to work on.
51+
- **Working on it**. Features or enhancements we're currently either researching or implementing it.
52+
- **Coming soon**. Any feature, enhancement, or bug fixes that have been merged and are coming in the next release.
53+
- **Shipped**. Features or enhancements that are now available in the most recent release.
14254

14355
> Tasks or issues with empty `Status` will be categorized in upcoming review cycles.
14456
@@ -160,12 +72,12 @@ graph LR
16072

16173
Our end-to-end mechanism follows four major steps:
16274

163-
* **Feature Request**. Ideas start with a [feature request](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=feature-request%2Ctriage&template=feature_request.yml&title=Feature+request%3A+TITLE){target="_blank"} to outline their use case at a high level. For complex use cases, maintainers might ask for/write a RFC.
164-
* Maintainers review requests based on [project tenets](index.md#tenets){target="_blank"}, customers reaction (👍), and use cases.
165-
* **Request-for-comments (RFC)**. Design proposals use our [RFC issue template](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=RFC%2Ctriage&template=rfc.yml&title=RFC%3A+TITLE){target="_blank"} to describe its implementation, challenges, developer experience, dependencies, and alternative solutions.
166-
* This helps refine the initial idea with community feedback before a decision is made.
167-
* **Decision**. After carefully reviewing and discussing them, maintainers make a final decision on whether to start implementation, defer or reject it, and update everyone with the next steps.
168-
* **Implementation**. For approved features, maintainers give priority to the original authors for implementation unless it is a sensitive task that is best handled by maintainers.
75+
- **Feature Request**. Ideas start with a [feature request](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=feature-request%2Ctriage&template=feature_request.yml&title=Feature+request%3A+TITLE){target="_blank"} to outline their use case at a high level. For complex use cases, maintainers might ask for/write a RFC.
76+
- Maintainers review requests based on [project tenets](index.md#tenets){target="_blank"}, customers reaction (👍), and use cases.
77+
- **Request-for-comments (RFC)**. Design proposals use our [RFC issue template](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=RFC%2Ctriage&template=rfc.yml&title=RFC%3A+TITLE){target="_blank"} to describe its implementation, challenges, developer experience, dependencies, and alternative solutions.
78+
- This helps refine the initial idea with community feedback before a decision is made.
79+
- **Decision**. After carefully reviewing and discussing them, maintainers make a final decision on whether to start implementation, defer or reject it, and update everyone with the next steps.
80+
- **Implementation**. For approved features, maintainers give priority to the original authors for implementation unless it is a sensitive task that is best handled by maintainers.
16981

17082
???+ info "See [Maintainers](https://github.com/aws-powertools/powertools-lambda-python/blob/develop/MAINTAINERS.md){target="_blank"} document to understand how we triage issues and pull requests, labels and governance."
17183

@@ -188,71 +100,3 @@ A: Because job zero is security and operational stability, we can't provide spec
188100
**Q: How can I provide feedback or ask for more information?**
189101

190102
A: For existing features, you can directly comment on issues. For anything else, please open an issue.
191-
192-
## Launched
193-
194-
### Setting Parameters and Secrets
195-
196-
> [Docs](./utilities/parameters.md#setting-parameters)
197-
198-
As of today, the [Parameters](./utilities/parameters.md){target="_blank"} feature is used to retrieve data, not to create or update existing parameters. Based on community feedback, we plan to enhance Parameters to allow set operations.
199-
200-
**Major updates**
201-
202-
* [x] [RFC](https://github.com/aws-powertools/powertools-lambda-python/issues/3040)
203-
* [x] [MVP](https://github.com/aws-powertools/powertools-lambda-python/pull/2858)
204-
205-
### Amazon Bedrock Agent Event Handler
206-
207-
> [Docs](./core/event_handler/bedrock_agents.md)
208-
209-
Based on [customers](https://github.com/aws-powertools/powertools-lambda-python#connect){target="_blank"} at re:Invent 2023, we will add a new Event Handler resolver to improve authoring and maintenance of Amazon Bedrock Agents.
210-
211-
**Major updates**
212-
213-
* [x] [Event Source Data Classes support](https://github.com/aws-powertools/powertools-lambda-python/pull/3262)
214-
* [x] [Pydantic model _(Parser)_ support](https://github.com/aws-powertools/powertools-lambda-python/pull/3286)
215-
* [x] [MVP Event Handler](https://github.com/aws-powertools/powertools-lambda-python/pull/3285)
216-
* [x] [New feature documentation](https://github.com/aws-powertools/powertools-lambda-python/pull/3602)
217-
* [x] [Video to walkthrough](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/bedrock_agents/#video-walkthrough) use cases for anyone new to LLM Agents
218-
* [ ] Launch amplifier (_e.g., What's New, Blog post_)
219-
220-
### Sensitive Data Masking
221-
222-
> [Docs](./utilities/data_masking.md)
223-
224-
Data Masking will be a new utility to mask/unmask sensitive data using encryption providers. It's the second most voted feature request (behind [Observability Providers](#observability-providers)).
225-
226-
**Major updates**
227-
228-
* [x] [RFC to agree on design and MVP](https://github.com/aws-powertools/powertools-lambda-python/issues/1858)
229-
* [x] [POC with AWS KMS as the default provider](https://github.com/aws-powertools/powertools-lambda-python/pull/2197)
230-
* [x] User-guide documentation and include when not to use it (e.g., when to use SNS data policy, CloudWatch Logs data policy)
231-
* [x] Decide whether to use Encryption SDK to bring their own provider or a simply a contract (e.g., `ItsDangerous`)
232-
233-
### Deprecate Python 3.7 support
234-
235-
AWS Lambda will officially block updates to Lambda functions using Python 3.7 support. We will drop support as soon as [that is official](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy){target="_blank"}.
236-
237-
**Major updates**
238-
239-
* [x] [Drop Python 3.7 support](https://github.com/aws-powertools/powertools-lambda-python/pull/3638)
240-
* [x] [Add documentation banner](https://github.com/aws-powertools/powertools-lambda-python/pull/3618)
241-
* [x] [Publish versioning policy docs](https://github.com/aws-powertools/powertools-lambda-python/pull/3682)
242-
243-
## Dropped
244-
245-
### Lambda Layer in release notes
246-
247-
> **Reason**: We are looking at more accessible alternatives based on customer feedback (e.g., AWS System Manager public parameters)
248-
249-
We want to publish a JSON with a map of region and Lambda Layer ARN as a GitHub Release Note asset.
250-
251-
As of V2, we prioritize Lambda Layers being available before release notes are out. This is due to x86_64 and ARM64 compilation for smaller binaries and extra speed.
252-
253-
This means we have room to include a JSON map for Lambda Layers and facilitate automation for customers wanting the latest version as soon as it's available.
254-
255-
**Major updates**
256-
257-
* [x] Create secure mechanism to upload signed assets to GitHub Release Notes
258-
* [ ] Create feature request to agree on JSON structure and asset name

0 commit comments

Comments
 (0)