Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Introduce Version 2 #1522

Open
scottgerring opened this issue Nov 20, 2023 · 0 comments
Open

RFC: Introduce Version 2 #1522

scottgerring opened this issue Nov 20, 2023 · 0 comments
Labels
RFC v2 Version 2
Milestone

Comments

@scottgerring
Copy link
Contributor

scottgerring commented Nov 20, 2023

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
RFC v2 Version 2
Projects
None yet
Development

No branches or pull requests

2 participants