Define a release schedule for the project #8970
Replies: 2 comments 2 replies
-
Hello guys, Thanks @JoaoJandre for raising the discussion. Many might understand the benefits and the necessity of having a well-defined versioning schema; however, I feel that it is important to highlight the "why" before discussing the "how". We (the community) have a culture of generating code without breaking compatibility. At first look, this may seem interesting as there is an intention to guarantee the continuity of the ecosystem. However, along with that, there is also a tie with old and deprecated procedures, technologies, libraries, and models, which, in the long term, will also deprecate CloudStack and make it more costly to innovate and evolve. We have to understand that we have several development barriers. We are already working with a highly complex context; to work with CloudStack, developers need to understand storage, networking, virtualization, Internet protocols, and much more. On top of that we do not use mainstream/standardized frameworks for the RESTful APIs and JPA; we use Spring in a non-standard fashion; we do not have a solid standard between our APIs, and so on. We are constantly increasing the complexity to extend/evolve and maintain ACS. That creates a bubble of development where it is hard to join, which is not healthy for a community. All those development fronts mentioned require a lot of effort and investment to get addressed and will certainly generate incompatibility at some point. However, we do not have a well-defined protocol to address incompatibilities nor to release new versions; we have been on version 4 since 2012 and our minor release cadence has been sporadic since then. Knowing that a lot of effort and investment is required to make CloudStack compliant with new and modern standards and frameworks, and our versioning schema is not foreseeable nor addresses introducing incompatibilities between versions, would a contributor or company feel safe to sponsor and put efforts into such changes? Unfortunately, the answer is no. With that being said, by structuring a versioning schema, we can provide previsibility for the project and the community. We would know when to introduce breaking changes, and the community would be expecting them. Furthermore, we can look at how other projects, like OpenStack and GitLab, introduce breaking changes in two steps (deprecation on one major release and removal on another) to reduce their impact on the community. Moreover, we already had a discussion in the past about the same topic; thus, I invite you to check that discussion too: https://lists.apache.org/thread/lwlxs8xgz4glocctf7dv89k5nqqsxmlb |
Beta Was this translation helpful? Give feedback.
-
@GutoVeronezi points to the more abstract reasons we want to allow breaking changes.
On one hand, I think some of these can be introduced without breaking as well. APIs can be running alongside of each other and be slowly phased out. As to @JoaoJandre 's proposal:
(still think we should drop the 4 yesterday) |
Beta Was this translation helpful? Give feedback.
-
Hi all,
I had created a thread for this on the dev mailing list, but following @DaanHoogland 's advice I've decided to create a new one here. That being said, I have a proposal for the versioning scheme. Instead of dropping the "X"
on our X.Y.Z.N, we can set a fixed schedule (that can be further discussed) for the version changes:
security versions (N);
The proposed schedule is only a sketch that can be worked on. However I believe that the project can benefit from:
Furthermore, having a schedule allows us to have a project roadmap, that outlines the future deprecations, changes and big features.
Beta Was this translation helpful? Give feedback.
All reactions