bitprophet / releases

A powerful Sphinx changelog-generating extension.
http://releases.readthedocs.io/
BSD 2-Clause "Simplified" License
176 stars 41 forks source link

Better plan/docs for master-only, young projects #19

Closed bitprophet closed 8 years ago

bitprophet commented 10 years ago

Problem

Last feels best.

keimlink commented 10 years ago

I agree that the last option seems to be the best. Did you think of a setting to configure this?

bitprophet commented 10 years ago

Not really, offhand would probably be something like releases_lazy_betas (or alphas or prereleases or etc). Open to suggestions :)

MinchinWeb commented 8 years ago

What about if all non-released bugs are automatically rolled up in the next declared major release? In effect a major release would also serve as a minor release.

My use case is this: The current project I'm working on has a release once a month. I fix bugs as needed, and add features as requested. At the end of the month when I do my release, if it's just bugs, I'll call it a "minor" release; if it adds new features, I'll call it a "major" release.

So I propose that a changelog like this:

:release:`1.6.0 <2016-03-28>`
:bug:`3` some other bug
:feature:`2` shiny and new
:release:`1.5.1 <2016-02-28>`
:bug:`1` some bug
:release:`1.5.0 <2016-01-30>`
<pre-history>

Become a listing like this:

v 1.6.0 2016-03-28

  • feature # 6 shiny and new
  • bug # 3 some other bug

v 1.5.1 2016-02-28

  • bug # 1: some bug

v 1.5.0 2016-01-30 ...

I think this would similarly solve the "Young Projects" problem above.

bitprophet commented 8 years ago

It sounds like you're describing option 2 from the description, @MinchinWeb :) with the important distinction that this ticket is about pre-1.0 releases which are thus less firmly subject to semantic versioning.

In my (& this project's) opinion, post-1.0, you would not want this behavior - you'd want to be using the major keyword explicitly instead.

That said, once implemented for pre-1.0 releases, it probably wouldn't be crazy hard to add a 2nd option saying "actually, screw semantic versioning, just vacuum up everything please, even post 1.0". Getting this implemented, period, is the trickier part (especially after the shenanigans I am undergoing for #45 which is overhauling a lot of internals).

bitprophet commented 8 years ago

Thought about this more from perspective of migrating Alabaster's changelog, which is very much the type this ticket describes. I arbitrarily banged out minor and/or bugfix releases; the bugfix ones were actual bugfix-only releases, but the minor ones frequently had both bug-like and feature-like issues in them.

But, since it wasn't a Releases changelog, that data's not even there unless I retroactively add it. So they're all just bare list-items which Releases treats as implicit bug-type issues.

This means that after reformatting the file to a Releases style setup, only the bugfix/tertiary releases appear, with anything attached to minor releases falling into the "next feature release" bucket. Clearly not great; only way to fix without a lot of annotation grunt-work is to implement this feature here.


Re: that: I think the only real way to do it is:

bitprophet commented 8 years ago

Had another minor thought, "maybe we should make the 'implicit line items are no longer displayed as [Bug]' behavior its own orthogonal setting?" - but I then realized it doesn't make much sense when this ticket's new behavior is not enabled. If those items are no longer considered bugs, but the changelog they're in cares about bug-vs-feature, how should they get classified? It's completely ambiguous, which is bad.

So for now I'm still going with a single option enabling both behaviors (rolling/linear release organization & not tagging unclassified items as bugs).

bitprophet commented 8 years ago

This works reasonably well now, there's a few tiny corner cases that might not work great (e.g. explicit issue-listing releases - not a widely used feature, likely even less so in tandem with this new feature) but those can wait.