-
Notifications
You must be signed in to change notification settings - Fork 444
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
Proposal for Pinax Distribution Versioning #84
Comments
👍 |
one requirement of a pinax distribution release is documenting how to upgrade |
so rather than a combinatorial explosion of upgrade instructions, we'd just publish upgrade instructions for each distribution |
One of the larger problems I find I face when working on apps is how we version them. With our move to semver this becomes a non-issue. Here's a current brain dump of my line of thinking including some questions. The various changes we make to repos are:
Based on the @paltman description of how he releases Pinax apps we have:
Security patches would likely fall in a Once an app is tagged to a distribution that has a support policy we need to consider how the versioning works there too. Any changes to the version pinned to a distribution are going to backward-compatible, but we need to consider the cases where a change must be made that is backward-incompatible (likely in the name of security.) We'll need to come up with a git flow for this. @paltman if you already have one, I'd love to hear about it. I feel it should be a simple branching and tagging process that corresponds to distribution versions as I don't think we'll have any support policies for individual apps outside of what we do with distributions. App versions should be PEP 440 compatible. This is easy enough, but we do want to consider the version of unreleased code. Let's say a maintainer adds a new feature and releases it. When did the maintainer update the version in the repo? Historically we bump the version right before the release to the correct released version then once after the release to indicate development towards the next release. What does the latter version look like? I am thinking if we release |
I've read semver before, but thanks for smacking me with a refresher. It looks like I largely hit the nail on the head. The answer to the security change versioning when the change is backward-incompatible seems to be to just bump the major version. However the question remains on how this is handled at the distribution level if changes happened to the app after the tagged distribution version. The only thing that is incompatible with my proposal are the build metadata. The specified way in semver is not PEP 440 compatible. I think we should stick with my proposal so we have correctly ordered versioning. |
I only ever bump release number right before cutting the release to PyPI as I never know if the next release is going to be Now, I haven't been fully consistent with the tagging and should be better about it but this process has served me well. I often |
It doesn't matter what the next release is going to be. It just needs to be greater than the current release and less than the next release. It's more than just our workflow with the version. If a user is using a development version, but the versions string is wrong it can get confusing in error reports. Also, it bothers me that the version string is extremely misleading. I had brought this up before and we did agree to it (hence why I said historically.) I guess we all didn't implement it in our workflows. ;-) |
But in your example above you say after releasing |
You don't ever release |
I'm wondering if the way forward on this is to shoot for, say, a 16.4 release with a very small subset of starter projects and their apps. Perhaps even just I think the discussion questions are:
|
I wonder if it's reasonable to say that the apps/themes have to be feature complete in February and the starter projects feature complete in March. |
Perhaps we decide 3 and 4 before 2 and the starter projects and apps included are those that make the cut in time. |
@jtauber i think this is a reasonable approach. i think documentation is paramount for anything we want to consider in a release. it's hard to have a good metric for doc completeness but I think it's easy to know when you see it. |
We will provide a documentation path for upgrades only between releases (e.g. 16.10 will explain how to upgrade from 16.4 but we make no make commitment to provide upgrades from anything else) |
16.4 apps need to support Django 1.8 and Django 1.9 but 16.4 projects will use Django 1.9 out of the box |
This is a list of possible apps for inclusion.
(pinax-cli) |
So the plan is:
|
For apps i have already contributing on, i think following apps could be include in 16.4 release
I didn't know for the others one because i've never test any of them at the time. |
@arthur-wsw thanks @paltman @brosner are there any in my list that you think are definitely "no way will they be ready"? i.e. a Actually we almost could do with symposion-style voting / comments where the "submissions" are the apps. |
Based on the voting these are the current app candidates for the 16.04 distribution:
Note this doesn't mean that work on other apps won't continue. Just that only the above are contenders for inclusion in the April distribution. Note also I say "contenders". Just because an app is in this list doesn't mean it will be included in 16.04. The apps still need to be used in a starter project that is itself accepted for inclusion. |
Next steps?
I'll start a spreadsheet to track some of this. |
PROPOSAL: any candidate app that has a pre-1.0 release number is released as |
Okay, I've set up a spreadsheet to track readiness: https://docs.google.com/a/jtauber.com/spreadsheets/d/1jyFeFpl7BhWiVyok5Lzf-MbNy6_brJQIyAOzVw3wx7o/edit?usp=sharing There are a lot of issues to triage! |
In the interest of narrowing down remaining issues, I'm adding this issue to a wiki page of important release links and closing issue. https://github.com/pinax/pinax/wiki/Historical-Release-Links |
Unlike monolithic open source projects like Django or Python, Pinax is collection of separately developed components with complex dependency relationships. In many respects, it's more akin to something like Ubuntu than a project like Django.
I'm proposing we do (potentially time-based) releases of "Pinax distributions", so there'd be (to borrow from Ubuntu's numbering) a "Pinax 16.4" which would just be a certain combination of apps, themes, and starter projects.
This would enable us to have a support policy, a minimum bar for documentation and localization, etc that just applies at the "distribution" level, not the individual app level.
Work could freely happen on apps, themes, and starter projects at any time but there'd be some documented process and timeline (TBD) to snapshot particular versions of each of these components to become a versioned Pinax distribution.
The text was updated successfully, but these errors were encountered: