Coder Social home page Coder Social logo

Comments (26)

paltman avatar paltman commented on June 17, 2024

👍

from pinax.

jtauber avatar jtauber commented on June 17, 2024

one requirement of a pinax distribution release is documenting how to upgrade

from pinax.

jtauber avatar jtauber commented on June 17, 2024

so rather than a combinatorial explosion of upgrade instructions, we'd just publish upgrade instructions for each distribution

from pinax.

brosner avatar brosner commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

http://semver.org

from pinax.

brosner avatar brosner commented on June 17, 2024

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.

paltman avatar paltman commented on June 17, 2024

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.

brosner avatar brosner commented on June 17, 2024

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.

paltman avatar paltman commented on June 17, 2024

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.

brosner avatar brosner commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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:

  1. what date do we shoot for? April 2016?
  2. what starter projects and apps do we include?
  3. what state do the apps and projects need to be in in terms of tests, documentation to be included?
  4. what should the deadlines leading up to the final release?

from pinax.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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.

paltman avatar paltman commented on June 17, 2024

@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.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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.

arthur-wsw avatar arthur-wsw commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

@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.

jtauber avatar jtauber commented on June 17, 2024

See https://docs.google.com/spreadsheets/d/191Hp0zhOGVPPl_Vye14erBgziROJNXLIfSnnJHHvOQE/edit?usp=sharing for our voting.

from pinax.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

Next steps?

  1. if anyone has a problem with the above 18 (either an inclusion or omission) raise a flag ASAP!
  2. 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
  3. we do releases of all the above apps (if needed) and note the release number that is a candidate for 16.04
  4. 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.

jtauber avatar jtauber commented on June 17, 2024

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.

jtauber avatar jtauber commented on June 17, 2024

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.

KatherineMichel avatar KatherineMichel commented on June 17, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.