Comments (26)
👍
from pinax.
one requirement of a pinax distribution release is documenting how to upgrade
from pinax.
so rather than a combinatorial explosion of upgrade instructions, we'd just publish upgrade instructions for each distribution
from pinax.
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:
- features (both backward-compatible and incompatible)
- bug fixes (both backward-compatible and incompatible)
Based on the @paltman description of how he releases Pinax apps we have:
X.Y.Z
- where
X
is bumped when a change(s) land that break backward compatibility or are very large (chances are pretty high they are breaking) - where
Y
are new features that don't break any compatibility. - and where
Z
are bug fixes
Security patches would likely fall in a Z
bump, but in the rare case of a backward-incompatible change to fix a security bug, do we bump X
or Z
? I suppose following this strictly, we should bump X
.
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 1.0
of X then the next version after release is 1.1.dev1
then 1.1
or 2.0
given the kind of changes after 1.0
. This ensures that if a git repo is installed with -e
we have a unique version outside of the released versions.
from pinax.
from pinax.
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.
from pinax.
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 X
, Y
, or Z
. After release, I don't bump anything. I do tag with the version number and push the tag, to make it easier to track release diffs and to be an easy to find SHA to branch from should we need to patch a release.
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 pip install -e
to work on apps but the non-unique version number never gets in my way as part of the process of working on an app, is I just pip uninstall <package_name>
first.
from pinax.
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. X.Y.Z.devN
is perfect for that. N
will always be 1
in our case.
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. ;-)
from pinax.
But in your example above you say after releasing 1.0
you'd update the version number to 1.1.dev1
, how do you know it's going to be 1.1
(a feature) versus 1.0.1
a bug fix as the next release? Seems wrong to do 1.1.dev1
and then do a bug fix and release 1.0.1
.
from pinax.
You don't ever release 1.1.dev1
. It is just to give the code in the repository a different version than a released version. So, there's nothing wrong about it. It doesn't have to be 1.1.0.dev1
. If 1.0.1.dev1
makes it feel less wrong then we can go with that.
from pinax.
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 zero
and account
.
I think the discussion questions are:
- what date do we shoot for? April 2016?
- what starter projects and apps do we include?
- what state do the apps and projects need to be in in terms of tests, documentation to be included?
- what should the deadlines leading up to the final release?
from pinax.
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.
from pinax.
Perhaps we decide 3 and 4 before 2 and the starter projects and apps included are those that make the cut in time.
from pinax.
@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.
from pinax.
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)
from pinax.
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
from pinax.
This is a list of possible apps for inclusion.
- pinax-theme-bootstrap
- django-user-accounts
- metron
- pinax-eventlog
- pinax-waitinglist
- pinax-blog
- pinax-stripe
- pinax-pages
- pinax-wiki
- pinax-boxes
- pinax-forums
- pinax-referrals
- pinax-submissions
- pinax-teams
- pinax-types
- pinax-documents
- pinax-notifications
- pinax-invitations
- pinax-images
- pinax-testimonials
- pinax-likes
- pinax-ratings
- pinax-messages
- pinax-points
- brabeion
- kairios
- formly
- django-announcements
(pinax-cli)
from pinax.
So the plan is:
- get a subset of these apps into a good state by end of February
- get a subset of those apps into starter projects and get those starter projects in a good state by end of March
- release 16.4 in April!
from pinax.
For apps i have already contributing on, i think following apps could be include in 16.4 release
- django-user-accounts
- pinax-images
- pinax-likes
- pinax-ratings
- pinax-messages
- pinax-announcements
- pinax-teams
I didn't know for the others one because i've never test any of them at the time.
from pinax.
@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 -1
vote. That way we can immediately shorten the list under consideration.
Actually we almost could do with symposion-style voting / comments where the "submissions" are the apps.
from pinax.
See https://docs.google.com/spreadsheets/d/191Hp0zhOGVPPl_Vye14erBgziROJNXLIfSnnJHHvOQE/edit?usp=sharing for our voting.
from pinax.
Based on the voting these are the current app candidates for the 16.04 distribution:
- pinax-cli
- pinax-theme-bootstrap
- django-user-accounts
- pinax-webanalytics
- pinax-eventlog
- pinax-waitinglist
- pinax-blog
- pinax-stripe
- pinax-types
- pinax-documents
- pinax-notifications
- pinax-invitations
- pinax-images
- pinax-testimonials
- pinax-likes
- pinax-messages
- pinax-calendars
- pinax-announcements
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.
from pinax.
Next steps?
- if anyone has a problem with the above 18 (either an inclusion or omission) raise a flag ASAP!
- if there is any work in progress on any of these apps it needs to quickly be triaged and anything likely to be unstable should be punted
- we do releases of all the above apps (if needed) and note the release number that is a candidate for 16.04
- we quickly identify gaps in starter projects and get working on them to make sure every candidate app above is well represented amongst the starter projects
I'll start a spreadsheet to track some of this.
from pinax.
PROPOSAL: any candidate app that has a pre-1.0 release number is released as 1.0
once an initial sanity check is done.
from pinax.
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!
from pinax.
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
from pinax.
Related Issues (20)
- Automatic site building and deployments with mkdocs HOT 2
- app.css and site.js (Not Found) HOT 6
- Pinax Team Email Not Working HOT 2
- Tox and Detox Incompatibility HOT 2
- Consider Switching to Twine HOT 1
- Are .coveragerc files needed? HOT 1
- drop support for python 2.7.x and django 1.11.x HOT 7
- Auto-publish packages using CircleCI HOT 2
- Standardize AUTHORS Files and Automate Adding Authors HOT 4
- Update/standardize CONTRIBUTING.md files HOT 1
- Consider updating looks of Pinax docs HOT 2
- Use .github repo for community docs to make repos more DRY HOT 2
- Pinax tutorial for installation not working on windows HOT 7
- Call for help with docs, including new user onboarding HOT 1
- I don't understand what is this HOT 9
- Updates to make to Pinax CLI scripts for new release HOT 1
- Pinax Install and Usage HOT 1
- Cant install starter projects
- Adaptive template for pinaxproject.com
- ImportError: cannot import name 'ugettext_lazy' HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pinax.