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

Prepare for Release 1.0.0 of ACA-Py #2753

Closed
7 of 8 tasks
swcurran opened this issue Feb 1, 2024 · 9 comments
Closed
7 of 8 tasks

Prepare for Release 1.0.0 of ACA-Py #2753

swcurran opened this issue Feb 1, 2024 · 9 comments
Assignees
Labels
1.0.0 To be addressed for the ACA-Py 1.0.0 release

Comments

@swcurran
Copy link
Contributor

swcurran commented Feb 1, 2024

The following is a checklist of items to be completed for Release 1.0.0 of ACA-Py:

  • Flag PRs for 1.0.0 (may be merged into 0.12.0)
  • Complete PRs flagged for 1.0.0
  • Flag Issues for 1.0.0
  • Complete Issues flagged for 1.0.0
  • Review/discuss/define LTS for ACA-Py, as per RFC 0799 Long Term Support
  • From Supported RFCs list as "not completed" for AIP 2.0 RFC 0587 -- Support for the DIDComm V2 envelope format is a work in progress
  • Update AIP 2.0 to remove Please Ack
  • Blog Post/Press Release
@swcurran swcurran added the 1.0.0 To be addressed for the ACA-Py 1.0.0 release label Feb 1, 2024
@ff137
Copy link
Contributor

ff137 commented May 9, 2024

I'd like to propose a few suggestions to consider for the 1.0.0 release:

  • Upgrade Python to 3.12 (I've tested locally and things pass smoothly)
  • review TODO / FIXME comments in the codebase ... ideally resolve all of them! But primarily just find all and track important ones.
  • In PR tests, there are 296 skipped, and 6 xfailed. Perhaps the skipped tests are worth reviewing and cleaning up where applicable, and perhaps a reinspection of the expected failures too.
  • There is a ruff lint rule that's currently being ignored: D417. This rule is for missing arguments in the description of docstrings.
    • This is possibly the most minor of "nice to haves", but there are a lot of methods (281) with missing descriptions, and I feel that this is important enough for maintainability to mention. In an ideal world these can be solved too before a major release.
    • Will require a very patient contributor, possibly with help from GPT / co-pilot to automate some docstrings

Just some thoughts that came to mind! It's very much "nice to have" territory, but probably worth considering some of these before wanting to go maintenance mode.

@WadeBarnes
Copy link
Contributor

I like the idea of upgrading the Python version.

@swcurran
Copy link
Contributor Author

Thanks @ff137@dbluhm @jamshale @ianco and other maintainers, please weigh in on this either/both here and at the next ACA-Pug meeting.

@jamshale jamshale self-assigned this Jun 27, 2024
@jamshale
Copy link
Contributor

I'll be taking this over and trying to push the release forward. I like @ff137's suggestions and will be upgrading python and going over todo's and fixme's.

@rngadam
Copy link
Contributor

rngadam commented Aug 22, 2024

README.md LTS section is not updated (still referencing 0.12 as Current LTS Release)

image

@swcurran
Copy link
Contributor Author

That is correct — 1.0.0 has not yet been named an LTS. We are expecting a 1.0.1 very shortly, and perhaps then we’ll make it an LTS. At that time, the references you indicate will be updated. We probably can just go ahead with that, but we’re still getting used to the LTS process so waiting on a bit more feedback from the community :-).

@rngadam
Copy link
Contributor

rngadam commented Aug 23, 2024

That is correct — 1.0.0 has not yet been named an LTS. We are expecting a 1.0.1 very shortly, and perhaps then we’ll make it
an LTS. At that time, the references you indicate will be updated. We probably can just go ahead with that, but we’re still
getting used to the LTS process so waiting on a bit more feedback from the community :-).

minor vs patch

If I refer to the LTS strategy documentation:

https://github.com/hyperledger/aries-cloudagent-python/blob/693dde06f02da0c7ee9334446b9e0bd07772d9ce/LTS-Strategy.md

Because a new major release typically has large new features that may not yet be tried by the user community, and because
deployments may lag in support of the new release, it is not expected that a new major release (such as 1.0.0) will
immediately be designated as a LTS release. Eventually, each major release (0.x.x, 1.x.x, 2.x.x etc.) will have at least one minor
release designated by the ACA-Py maintainers as an "LTS release."

based on that reading:

  • "a minor release" would mean 1.1.0, not 1.0.1
  • once declared, LTS would only have PATCH changes (security fixes and user-impacting bugs)

https://semver.org/

Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes
MINOR version when you add functionality in a backward compatible manner
PATCH version when you make backward compatible bug fixes
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

interpretation

(views expressed are my own)

The MAJOR version is where breaking changes are introduced.

Both MINOR and PATCH are backward compatible changes.

For example:

But then, this particular PATCH is not something that we want backported to LTS release. So that means labeling every issue and associated PR requests to be MAJOR, MINOR or PATCH and identifying PATCH as LTS relevant or not.

@swcurran
Copy link
Contributor Author

Yes, the LTS in this scenario would be “1.0”, with the branch occuring at the 1.0.1 release. The issue is at what point we declare the “LTS”. The maintainers agreed that doing so as a new major release occured would be a bad idea, in case an immediate breaking change occured requiring a 1.1.0 release after LTS was declared for 1.0. So we will wait a bit before the declaration.

Does that description still match your expectations?

@rngadam
Copy link
Contributor

rngadam commented Aug 23, 2024

Yes, the LTS in this scenario would be “1.0”, with the branch occuring at the 1.0.1 release. The issue is at what point we declare the “LTS”. The maintainers agreed that doing so as a new major release occured would be a bad idea, in case an immediate breaking change occured requiring a 1.1.0 release after LTS was declared for 1.0. So we will wait a bit before the declaration.

Does that description still match your expectations?

Ah, ok! Yes, I understand now. Waiting for 1.0.1 is just giving an opportunity to find a major issue. If found, we restart the waiting period for the next MINOR and then PATCH bump.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.0.0 To be addressed for the ACA-Py 1.0.0 release
Projects
None yet
Development

No branches or pull requests

5 participants