Skip to content

RFC: Introduce Version 2 #1522

Closed
Closed
@scottgerring

Description

@scottgerring

RFC: Powertools for Lambda (Java) v2 Release

Summary

In this RFC we propose a v2 release for the "Powertools for Lambda (Java)" library. The intent is to bundle together significant breaking changes that have been identified since the library's inception two years ago. This major version release will encompass updates and improvements across the board, addressing accumulated issues and enhancements. The v1 release will remain supported via bugfixes for 6 months after the initial release of v2, with new features added to v2 only.

Motivation

As Powertools for Lambda (Java) has grown and evolved, several breaking changes and improvements have been identified that cannot be incorporated within the current version without changing parts of the public interface. Some examples:

As we preserve backwards compatibility between minor versions and cannot address these changes without a major release. A v2 release will provide a clear transition path for users with well-documented changes and a suite of new features.

Description

The v2 release is a concerted effort to enhance the "Powertools for Lambda (Java)" library by:

  1. Working through the backlog of issues marked in GitHub as requiring breaking changes and triaging them for inclusion in the release
  2. Conducting an end-to-end review of the entire library to identify any additional changes that need to be implemented, ensuring the library is robust, up-to-date, and aligned with current best practices.

This approach will provide a structured and comprehensive update to the library, addressing technical debts and paving the way for new features and improvements.

Drawbacks

  • Users migrating to the new version will in some cases need code changes
  • The team will have to support two versions of the library for some time

Rationale and alternatives

Status quo - we continue to accumulate breaking changes, but do nothing to action them. This option isn’t workable, as it means that we will work against Java best practices - for instance, by being unable to use the CRT client.

Breaking changes without major version change - This option is discarded as it is against our tenets and semantic versioning.

Detailed List of Changes

Features

  • Rewrite logging module to not force log4j usage (#965) ✅
  • Support high resolution metrics (#1041, #971) ✅
  • Use CRT client for SDK calls (#1092)
  • Upgrade aws-events to v4 (TODO)
  • Validation module integration with HTTP requests (#1298) ✅
  • Support validation module from within the batch module (#1496) ✅

Cleanup

  • Module-by-module review for potential high-value breaking improvements (#1283)
  • Rename powertools-core (#1076) ✅
  • Consistency (with python, typescript) on logged field names (#752) ✅
  • Split powertools-parameters in submodules (#1402) ✅
  • Extract dynamodb persistency from powertools-idempotency (#1467) ✅
  • Remove java 8 support for examples (#1466) ✅
  • Validate that we have removed all of the reflection in non-test code (#1466)
  • Complete deprecation of powertools-sqs in favour powertools-large-messages and powertools-batch (#1041) ✅
  • Review existing issues backlog to ensure we have all v2 work marked (#1283)
  • Print message as JSON instead of wrapping in a string (#1508) ✅
  • Replace jackson databind with jackson-jr (#1479)

Documentation

  • Create Upgrade guide
  • Warning notice in V1 documentation

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Shipped

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions