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

About the current versioning policy with "next" #1780

Closed
4 tasks done
pat-s opened this issue May 27, 2023 · 26 comments
Closed
4 tasks done

About the current versioning policy with "next" #1780

pat-s opened this issue May 27, 2023 · 26 comments

Comments

@pat-s
Copy link
Contributor

pat-s commented May 27, 2023

Clear and concise description of the problem

The current "next" version is in fact a new major release which is in "rolling" development for a long time now.

Reading the roadmap in #869 let's one assume that there won't be an "official" release soon assuming all points listed there must be met.

This fact combined with the unclear state on this topic gives the project a somewhat "unprofessional" touch and also comes with versioning issues for admins. I.e. admins must work with sha checkouts based on commits and it is hard to get an easy changelog about recent changes.

Additional confusion comes in with the "old" 0.15.x releases which let many people start with this version first. However, people often face a lot of missing features and they get redirected to "next" then. Yet to upgrade they need to change many things, both users and admins, to compl

Given that so many people are on "next" meanwhile and "next" seems to be usable for many - agnostic from the backend - I would like to discuss whether the versioning approach could be rethought.
I am well aware that not everything is working perfectly yet but I don't think that users always expect an 1.0.0 version to be "fully stable" and "finished" in all areas.

Suggested solution

Release a 1.0.0 version and continue with a semantic versioning release policy for upcoming changes. This makes it a lot easier to follow development for admins and allows to have a "clean" changelog. Especially changes like #1765 which might break usability for specific OS might get unnoticed in the current versioning approach.

Alternative

No response

Additional context

No response

Validations

  • Checked that the feature isn't part of the next version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]
  • Read the Contributing Guidelines.
  • Read the docs.
  • Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
@pat-s pat-s added the feature add new functionality label May 27, 2023
@anbraten anbraten added governance and removed feature add new functionality labels May 27, 2023
@nitram509
Copy link
Contributor

👍 @pat-s
I really appreciate your initiative, and also would like to echo the importance of a timely official release of "next".

I'm working on a project with ca. 100 DEVs and using Drone massively for ca. 5 years. The license fees did not match the budget anymore so we looked for alternatives. From the evaluation process I led, I can tell you, no one knew Woodpecker CI.
Also, no one questioned "ouh it's only v0.15.x - is it mature enough?" nor "ouh, there are 288 open issues, is it stable enough?". The main concerns came from compatibility questions, or how to migrate, or operational scaling support.
Good news: it took me just a little effort to convince the team and we're in the middle of a migration.
What I'm trying to say: the Woodpecker project looks quite active with a good community and many people see and trust that.

That said, when I did my two recent contributions, I realized how many goodies are present and not documented nor released. That's a shame and I really wish more often releases of Woodpecker and shipping what's there.

Also, with more often releases, you will get more feedback. That's a common benefit from short release cycles, you catch even the "reluctant" people who prefer waiting until a 1.0.0 version is hardened.

Personally, I don't mind, if you continue 0.16.x or jump straight to 1.0.0. After all, the core features of Woodpecker already are the equivalent of a 1.0 version == it's fully functional. Every issue I saw in the Github project backlog for 1.0.0 - seems to me like another cherry on top ;)

Thank you for all your effort of making Woodpecker great 👍

@pat-s
Copy link
Contributor Author

pat-s commented Jun 1, 2023

Any comment/thought from the maintainers @anbraten @6543?

@lafriks
Copy link
Contributor

lafriks commented Jun 1, 2023

Imho we should finish with #567 before 1.0 to have single breaking change in pipeline yaml format

@6543
Copy link
Member

6543 commented Jun 2, 2023

Well the issue list is getting smaler and i'm currently focusted on bugfixing plus clean up low hanging fruites that do block 1.0.0

Beside the group vs depend-on dessision for steps ... i would say all big breaking changes are mostly done

@6543
Copy link
Member

6543 commented Jun 2, 2023

And without a good reason i wont add anythin to the baglock ... more i move things into v1.1.0 if they are non breaking & blocking

@nitram509
Copy link
Contributor

Well the issue list is getting smaler and i'm currently focusted on bugfixing plus clean up low hanging fruites that do block 1.0.0

Beside the group vs depend-on dessision for steps ... i would say all big breaking changes are mostly done

That sounds great.
is there a (check)list, of things to do, that others maybe could support?

@qwerty287
Copy link
Contributor

qwerty287 commented Jun 2, 2023

You can take a look at the 1.0.0 milestone (which also contains PRs)

@zc-devs
Copy link
Contributor

zc-devs commented Jun 3, 2023

Waterfall vs Agile 😄

@pat-s, @nitram509, 99% agree with you.

Release a 1.0.0 version and continue with a semantic versioning release policy for upcoming changes

Suppose current next is released. According to semver it is MAJOR and should be 1.x.x. There are a lot of breaking changes that cannot be released "today". So, if we release more often, then there will be a lot of major versions. What's about support? It is hard work to support a few versions. And I understand desire of maintainers to include all breaking changes in one release.

What if we leave semantic versioning as currently is, but introduce calendar versioning for the next branch (only)? Look at MinIO (Releases, Release Policy). I think it addresses issues and suggestions mentioned above, but also eliminates support burden for maintenance each major version.

@6543
Copy link
Member

6543 commented Jun 3, 2023

We already tag next-commitid based to be able to pin a specific next version ...

Open issues for v1.0.0 are now down to 27 ... so it never looked that promising ;)
And pulls to adress the hardest open issues are open for review or at least wip

I encourage all here to just hve a look at the issues labeld with docs ... that will bring down the number and is easy to address

@pat-s
Copy link
Contributor Author

pat-s commented Jun 3, 2023

Suppose current next is released. According to semver it is MAJOR and should be 1.x.x. There are a lot of breaking changes that cannot be released "today". So, if we release more often, then there will be a lot of major versions. What's about support? It is hard work to support a few versions. And I understand desire of maintainers to include all breaking changes in one release.

That's just how the game works. Major releases are (in my vision) just an indicator for breaking changes, i.e. action is required by the users. It just says "read the changelog carefully and don't blindly update". Yes, one certainly does not want to have such release every few weeks - but this is also not what I am aiming for. There's a sweet spot between not releasing a "usable" version for over a year and the former.

I don't mind a software running on 15.12.x - as long as the release and changelog make sense and do "their job".
AFAIU WP and others are not aiming at backporting and supporting dozens of "major" versions at the same time. If this would be the case, things would be a bit different of course.

Also I am fully aware that the above is slightly subjective - though I would also argue it's the implicit default which most people agreed on in (public) software development.

And I understand desire of maintainers to include all breaking changes in one release.

Being a maintainer myself and applying semver, I don't. With my main point being that it's hard to follow the changes in next (which is de-facto the release most people use or should be using, not only because the 0.15.x hasn't seen any improvement since the dev time of next). I am aware of the images tags by commit and PR-based images (which both is great) but I would like to see a curate changelog from time to time that describes the changes on a higher-level, possibly with some examples and background information rather than having to go through the commit history and figure changes and their reasonings out myself.

I am aware that I can't change this and that the current philosophy is different here but I can at least bring the topic up for discussion and express my thoughts.

Open issues for v1.0.0 are now down to 27 ... so it never looked that promising ;)

I appreciate everyone's work but 27 doesn't sound like a "small" number 🙃 And phrased in another way: most of these are probably "not breaking" and more like "small enhancements"? (haven't gone through the list though).

Also I hope that after 1.0.0, whenever it will happen, there won't be another "next" but maybe a "normal" release cycle of a few months with a curated changelog 💟 .

Last I'd like to express my gratitude with the project, I like it a lot (the idea, the motivation, the product) and I/we are also about to start sponsoring it ❤️ . I don't want to sound mainly negative in this issue, my goal is just to bring up the discussion and maybe start a thought process through it to make something better.

@6543
Copy link
Member

6543 commented Jun 3, 2023

Well what we could do is to decide on some guidelines like if we hit max 3 breaking changes and/or 5features ... a release should be prepaired

@runephilosof-karnovgroup
Copy link
Contributor

It is hard work to support a few versions

You don't need to support old major versions. Semver does not require that.
It will be an improvement to release 1.0.0 now and just up the major version every time a breaking change is released, without maintaining old major releases.

@mvdkleijn
Copy link
Contributor

First of all, I also think this is a great project with a lot of potential and you have my many thanks for its existence. 👍

TLDR; I agree with the sentiments of @pat-s @nitram509 and @zc-devs they shared above with regards to using semver. Breaking changes in a non-major version is fine if the major version is zero.

I'd like to share some experiences and thoughts, my apologies for being long-winded:

First use experience

Some time ago, I started using Woodpecker instead of Drone. Fair warning, I'm gonna be brutally honest here.

The experience was... horrible. Sorry, but it was. Not trying to be negative here but I got to be honest for clarity's sake. 😃

Setting up Drone cost me about one hour with a hello world pipeline building successfully. When I learned about Woodpecker CI, I wanted to support the pure FOSS project and switched. Looking at the site and docs, I started off with the v0.15.x version as that seemed to be the "stable" version.

I spent quite some time trying to get everything setup. Docs were unclear, communication between server and agent kept breaking for unknown reasons & with unclear error messages, pipelines were unreliable. I looked through the docs, the Github issues, outstanding PRs and even the code for hints to my problems.

Solution

Out of sheer desperation I tried the "next" version which I would normally not do since I don't run development branches in production normally.

Though I still had a number of issues, mainly in a lack of good quick start documentation, stuff magically started working. On top of that, I suddenly had a bunch of features that I missed. It still took way more time to setup properly than with Drone, but if I'd started off with "next" instead of the v0.15.x version, I'd have saved myself quite some time and frustration.

My conclusions / suggestions:

  • Consider v0.15.x legacy & stop supporting it
  • Release a v0.50.0 version with the current content of "next"
  • Apply breaking changes to the v0.50.x+ versions
  • In the site & docs, clearly point people to v0.50.x+ as the place to start
  • Start a clear changelog from v0.50.x onwards (i.e. no need to backfill)
  • When you feel like breaking changes are more uncommon, graduate to v1.0.0

On semver

In semver, the MAJOR version number does indeed signify breaking changes. However, the zero (0) major version is special. It signifies that "we're in active development towards a v1.0.0 and stuff should be expected to break". (see: https://semver.org/#spec-item-4 & https://semver.org/#how-should-i-deal-with-revisions-in-the-0yz-initial-development-phase)

In other words, breaking changes before you release a v1.0.0 are fine in a minor version.

Like @runephilosof-karnovgroup stated, you don't need to support older versions. It is up to the admin to keep up-to-date with releases. If there's a bug in an older version, you fix it in a newer version. That's the whole point.

Again, my apologies for the long-winded post here... it comes from good intentions. 😄

@zc-devs
Copy link
Contributor

zc-devs commented Jun 21, 2023

In regards to support... Imagine...

You are on v1.11.2 (latest v1). Yesterday version 2.0.0 is released with breaking changes, changelog and all this stuff. Today some critical CVE has been discovered and fixed/released in v2.0.1 and won't be backported to v1 (right?).

How do you feell? What are you going to do?

*you - is not particular person, but who says we don't need support for previous version(s)
*though, obviously, product owners may decide to go this way in their release policy...

And as of today developers still support previous release (even though it's useless in my opinion) ❤️ Hope, they will in the future after v1.

@6543
Copy link
Member

6543 commented Jun 21, 2023

CVEs are tryed to be backported at least one version ... so to say v0.15 would get it in this context

@mvdkleijn
Copy link
Contributor

My comment with regards to supporting previous releases was mostly geared towards supporting 2,3 or even more older releases. Supporting latest-1 is fine by me.

@nitram509
Copy link
Contributor

In regards to support... Imagine...

You are on v1.11.2 (latest v1). Yesterday version 2.0.0 is released with breaking changes, changelog and all this stuff. Today some critical CVE has been discovered and fixed/released in v2.0.1 and won't be backported to v1 (right?).

How do you feell? What are you going to do?

*you - is not particular person, but who says we don't need support for previous version(s) *though, obviously, product owners may decide to go this way in their release policy...

And as of today developers still support previous release (even though it's useless in my opinion) ❤️ Hope, they will in the future after v1.

Well, if I imagine being on Woodpecker v1, I would obviously hope for getting this fix backported.

That said, the world is not black and white. I mean setting a clear message/guideline, that older versions are not further supported, could still be the easier choice for the maintainers of Woodpecker. On-Top, on a "per use case", a really critical CVE (thinking of ssl heartbleed, or log4j, etc.) still can be an exception of the mentioned rule and thus backported.
You could even formalize that: e.g. "IF an issue for backporting a critical CVE fix has > 50 (or any other number) thumbs up, then it will be ...".
Such guidelines help manage expectations and help protect the volunteering contributors of this project.

Just my 2cent ;)

@runephilosof-karnovgroup
Copy link
Contributor

@zc-devs wrote:

You are on v1.11.2 (latest v1). Yesterday version 2.0.0 is released with breaking changes, changelog and all this stuff. Today some critical CVE has been discovered and fixed/released in v2.0.1 and won't be backported to v1 (right?).

Suppose being on b1787f8 (next) and then #1743 is merged containing a breaking change.
Today some critical CVE was discovered and fixed/released in 7f725a5, no backport.
You update, having no way to notice the breaking change before doing so.
Result, your system is down.

Even with no backporting, I still think it is an improvement over the current state.
But as @6543 wrote:

CVEs are tryed to be backported at least one version ... so to say v0.15 would get it in this context

So v0.15 already being treated as v1.x. Releasing next as v2.x, would mean that the next breaking change would make v1.x unsupported. Luckily, this is an open source project, so if the community backports an issue to an older version, there is a somewhat high probability that it will get released after all.

@mvdkleijn wrote:

However, the zero (0) major version is special. It signifies that "we're in active development towards a v1.0.0 and stuff should be expected to break".

They also write https://semver.org/#how-do-i-know-when-to-release-100

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backward compatibility, you should probably already be 1.0.0.

@pat-s
Copy link
Contributor Author

pat-s commented Jun 27, 2023

This discussion got a bit off-topic and more into "backporting and supporting multiple versions". My initial proposal was mainly focused on the long developing time of "next"/1.0.0 and that, at some point, everything was just added to "next" without a clear idea when there will be release or a "stop" for new features.

Not sure if this issue helped but now there is a shortlisted milestone and already a changelog documentation (WIP) and some features have been moved to a 1.1.0 milestone. For "professional" use this is a good thing and the main point I wanted to address :)

Looking forward having a "proper" 1.0.0 release soon followed by "normal" feature releases coming in reasonable time frames :) Thanks @anbraten @6543 and everybody else doing great work.

@6543
Copy link
Member

6543 commented Jun 27, 2023

to @runephilosof-karnovgroup 's backport concerns ...

as long as somebody do provide a working patch we can release, I dont mind to let it be released even for our v0.14 e.g. non maintained branches ... it's just that this is not the woodpecker-maintainers response in that regard ...

@6543
Copy link
Member

6543 commented Jun 27, 2023

... as long as the pipeline to release things does work or can be fixed easily for that branch

@zc-devs
Copy link
Contributor

zc-devs commented Jul 1, 2023

And I understand desire of maintainers to include all breaking changes in one release.

When I said that, I thought about backend for mobile applications. But I've found beautiful example here. Support is going at next level ;)

@lonix1
Copy link
Contributor

lonix1 commented Jul 3, 2023

Further reasons for releasing more often...

Less issues

As a new user, I discovered a number of issues which took me a long time to research and fix. And in multiple cases I opened github issues or asked for help on the discord channel. In almost all cases the solution was "have a look at vNext".

There are many new features and squashed bugs in vNext. If you release more often, you'll have fewer support requests. That is because most users use the latest stable version - so even if the fix is in "vNext", they won't know (as they are waiting for the next stable).

More users

A related point is that since most users only use the latest stable, they have no idea just how advanced woodpecker is - they are judging it based on the latest stable, not vNext. It would attract more users if the latest goodies weren't hidden away for who knows how long.

(And to echo what others have said above: the project is much appreciated, and some of the fixes and features in the v1 milestone are making me very excited. Thank you very much!)

@anbraten
Copy link
Member

anbraten commented Jul 3, 2023

As written before we all agree on this. Pleas hold your horses a bit. We will release v1.0 asap mainly waiting for #1743 to be merged

@lonix1
Copy link
Contributor

lonix1 commented Jul 3, 2023

✋ 🐴

@6543 6543 mentioned this issue Jul 3, 2023
4 tasks
@anbraten
Copy link
Member

1.0 got release and the idea is to release more often now if there are new features / fixes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants