Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently beta-testing an iPhone app. Right now I have sent out the first beta-test for my users and I have labeled that release as 1.0 for my testers.

Now since the testers have tested the app we have discovered some bugs that I have fixed and I'm ready to send out a new beta-test for my users. Should I label the release as 1.0.1 then?

Another question related to this is, when my testers have tested this 1.0.1 release and they do not find any bugs it would be a good time to release this version to the public in the App Store. What version number should I release this under in the App Store? First thought is that since it's the first release to the App Store it should have version number 1.0 but then it will be "out of sync" with the version that has been tested (1.0.1).

share|improve this question
    
Whatever solution you come up with, don't re-use version numbers. It will only add confusion. If you already have a "1.0" in the field, don't ever release another "1.0". It will only add confusion. –  jwernerny Apr 12 '13 at 14:08
add comment

6 Answers

up vote 5 down vote accepted

There's really only one rule with version numbers - consistency.

While it would be "nice" to have the first official version of your product as 1.0 (which is why beta versions are often labeled "0.something") there's no hard and fast rule that says they have to be.

If you've already called your beta version 1.0 then just start incrementing from there using your "1.0.1" scheme so that the first version uploaded to the App Store is at least 1.0.something.

Years ago a product I was working on was labeled "4.0" for it's first release - to make the product seem "more mature" to potential customers. You probably couldn't get away with that these days, but it didn't raise any questions we couldn't answer.

share|improve this answer
    
For a couple of projects, we have used a scheme where releases are identified by a Major.Minor.Micro numbering scheme. Since we use SVN for source control (no comments about SVN being old... it's a set up from where they were two years ago), the micro number is the actual SVN revision the code was built from. Makes tracking bugs to a rev of code very easy. –  jwernerny Apr 12 '13 at 14:11
add comment

Rules of thumb. Always use increasing version numbers. Always keep version numbers in sync across releases. Never, ever declare anything final until it truly is final.

In your case if you want your initial iPhone release to be 1.0, then you have to break one of those rules. If you're going to break rules, do it all at once. So make your next version 0.9, explain it to your beta users (who, with luck, are the smallest group you will ever have to deal with), and proceed from there. Do not label anything 1.0 until it is ready for release. (Not just you think it is ready, actually ready.)

Incidentally it would be surprising if you don't have to do this bugfix dance a few more times. There is always more to do than we think there will be.

share|improve this answer
1  
Hmm, would it be a disaster to release the first version to the App Store as 1.0.1 or even 1.1? –  Peter Warbo Apr 12 '13 at 7:33
    
I doubt it'll even be noticed by users. –  Hakan Deryal Apr 12 '13 at 14:49
add comment

It probably would have been better to have your beta version start as 0.something, as this is a de facto standard indicating something is not yet released. It is not really a big deal, though. Once you have started version numbers, it is not really worth changing.

I would probably just release the app at 1.1.4 or whatever version you are at after the bug fixes. No one will really care about this.

In the future, you may want to beta test updated versions of the software before releasing them. You should think of a consistent way to handle that in your versioning scheme. One common way is 1.2-b1, etc. However, there is no standard for this at all. There is a ridiculous number of versioning schemes.

share|improve this answer
add comment

One approach to this is to have the official App Store version number be "1.0" and have a separate build number that you use to keep track of changes. As long as the build number is easily accessible and everyone understands the system, it gives you some useful flexibility.

(and Apple requires you to give each version you release on the App Store a new version number, so you can never end up with two different live apps labelled "1.0")

share|improve this answer
    
Can I release a version as 1.0 and using an internal build number 1 and then release a new version to the App Store as 1.0 and internal build number 2? Is that ok to App Store rules? –  Peter Warbo Apr 12 '13 at 11:20
    
No, not for actual live App Store uploads. But you can have several Ad Hoc distributed betas with the same official version number, but different build numbers. –  grahamparks Apr 12 '13 at 12:05
add comment

Right now I have sent out the first beta-test for my users and I have labeled that release as 1.0 for my testers.

I would name it 1.0-beta1.

Should I label the release as 1.0.1 then?

I would definitely do that.

What version number should I release this under in the App Store?

Since nothing's changed after fixing discovered bugs, it should remain the same - 1.0.1.

First thought is that since it's the first release to the App Store it should have version number 1.0 but then it will be "out of sync" with the version that has been tested (1.0.1).

Not version numbers are out of sync, but versions themselves - thay are now different because of fixed bugs. They are different, so the numbers must be different.

I find semantic versioning scheme the most clear one: http://semver.org/

share|improve this answer
add comment

One solution that is working for me is to increment the build field (CFBundleVersion) every time we make an internal release to the QA team, and leaving the Version field (CFBundleShortVersionString) with what we call 'marketing version' and we let the business team to decide what the value will be.

In your example we will first release to the beta users with version 1.0 and build 1. After receiving the feedback and fixing some issues we will be releasing to the beta team a new build with the version still at 1.0 but the build now will be 2. After we release on Apple Store we will be sending the releases to the beta users with version 1.0.1 (or 1.5, or 2.0, whatever we decide is the next target) and with build 3, always incrementing the build number on every release.

This works well because TestFlight shows the build next to the version, i.e. 1.0 (2), and we put the version and build number on an about box inside our app.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.