Skip to content

Final v0.9.0 Tasks (and Namespacing) #324

@jdantonio

Description

@jdantonio

TL;DR: I believe we are ready to lock in the public API, release v0.9.0, and begin work on v1.0.

With PRs #322 and #323 (and the BiasedConditionVariable requested by the Rails team) I believe we are ready to release v0.9.0. This issue is to discuss final thoughts before that release.

When we first began discussing v0.9.0, in Issue #257, our goal was to stabilize the API so that we could focus on a stable, reliable, performant 1.0 release. Although many of the changes were of huge value to our users (creating an Edge gem, the common synchronization layer, bug fixes, etc.) the scope of the release began to grow. Many of the changes we undertook were internal changes only that had no functional benefit (newer pattern for runtime-specific subclasses, submodules for private abstractions). As a result we pushed the release date numerous times. I believe this was a mistake. We lost sight of the fact that "shipped" software is always better than "perfect" software.

One of the major discussions concerned the "namespace" modules for internal classes (see #261). At issue was whether or not we should make internal changes for greater consistency and to reflect common Ruby conventions. Although these suggestions had merit, they also represented a significant effort and a departure from what was already working an in production for many if our users. I began to reorganize some of what was discussed in PR #304 but had to abandon that effort due to merge conflicts. Some of that work was revisited in PRs #316, #317, #319, #320, and #321.

At this time I believe very strongly that we should release v0.9.0, move forward with the original plan for v1.0, and revisit namespace reorganization after v1.0.

According to the rules of Semantic Versioning, only changes to the public API must result in changes to the major and minor version numbers. Changes that are private are exempt. The namespace changes we discussed in #261 are private changes. We can make those changes, slowly and deliberately, once v1.0 is released an not violate the rules of Semantic Versioning. To facilitate this I have tagged all internal, private abstractions with the appropriate Yardoc tag (see PR #322). This PR (and any subsequent updates) should satisfy the requirements of Semantic Versioning.

Additional thoughts? Agree/disagree? @pitr-ch @mighe @chrisseaton @rkday @obrok @lucasallan @headius

Metadata

Metadata

Assignees

Labels

choreGem maintenance tasks.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions