• OpenCore Dev

  • opencore version-keeping

    from ejucovy on Apr 11, 2008 01:04 PM
    I'd like us to be a little more careful and deliberate about versioning
    opencore.  We've started using CHANGES.txt but I think we could still use a
    bit more structure there for it to be really useful.  As it is now, all
    kinds of changes are checked in and written up with the same process, and we
    rarely bother to increase the version number.  This means that releases, to
    the extent they even exist, tend to be quite large and considerably
    unfocused, containing all sorts of code-interface changes, new features, and
    bugfixes in the same update.  If we move to a more structured system of
    versions, it will be much easier for users of the code (whether internal or
    external) to selectively choose their upgrades, install bugfixes without
    being saddled with new features, and just generally have a better sense of
    what's going on with our development.
    
    If you're doing a significant and visible modification like extracting a
    module out into a plugin package, doing a large-scale refactoring or
    optimization, or adding a new feature, then please create a new minor
    version for your work.  To do this:
    
     1) First, close out and release the previous unreleased bugfix version
    x.x.n:
       A) Delete the "(unreleased)" text from the version line in the most
    recent CHANGES.txt section;
       B) Append the current date to the version line;
       C) Upload it to the cheeseshop.   (That's `python setup.py register sdist
    upload`; I'm not sure if everyone has properly permissioned accounts on
    PyPI, but we'll fix that as it comes up.)
    
     2) Next, create a new minor version for your modifications and release it:
       A) Add your new minor-version section x.y to the top of CHANGES.txt;
       B) Check in your change and describe it briefly in the new section in
    CHANGES.txt;
       C) Upload it to the cheeseshop.
    
     3) Finally, create a new unreleased bugfix-version section x.y.1 and just
    check in CHANGES.txt with the new empty section.
    
    Meanwhile, if you're just fixing a bug or doing a small refactoring, please
    update the most recent section in CHANGES.txt with the change you made when
    you are done.  As long as everyone follows the steps above, the most recent
    section in CHANGES.txt should be an unreleased bugfix version (0.y.z
    unreleased) so just append the description of your fix to the end of that
    section's list of changes.
    
    Note also that the points above directly imply that if you're working on a
    change which will be big enough to merit a minor version increase, you
    should either check in your entire change with a single commit (if it's
    small enough) or do your intermediate work on a branch so that ongoing
    bugfixes and minor tweaks can remain in the same purely-bugfix release.
    
    I know the distinction I'm drawing is a little vague; just use your common
    sense and if in doubt, or if you're not sure what I'm talking about here, do
    feel free to ask me.  I realize this is a bit noisy, but it shouldn't take
    more than five minutes at a time.  If it becomes too much of a hassle we can
    think about automation strategies in the future but I'd rather try it out
    before we start considering that.  All in all I think this will help us do a
    better job of keeping track of what changes we're actually making and when.
    
    Thanks,
    egj