Our version numbers go all the way to 0



  • I was recently asked to look into why our installer was having issues with SQL Server 2008. I was a bit baffled as to why our version checking was returning 1 instead of 10, so I checked the method.

     

    public static int GetSQLVersion(string connstring)
    {
    connstring = connstring.Replace("database", "master");
    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
    conn.ConnectionString = SanitizeConnectionString(connstring);

    System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand("EXEC master..sp_MSgetversion", conn);
    conn.Open();
    object a;
    int ver;
    try
    {
    a = comm.ExecuteScalar();
    ver = Convert.ToInt32((a.ToString()[0]).ToString());
    }
    finally
    {
    conn.Close();
    }
    return ver;
    }

    I asked why this method only checks the first charector and was told this was to avoid having to deal with all of the minor version number differences. In fairness, this was written when we only supported versions 8 and 9, so I can see how the developer did not expect a 2 digit version number...



  • This was a relatively common issue on websites after the release of Flash 10; the detection script would check the last character of the version string, see that version 0 was less than the required version 9, then ask you to upgrade.



  • @benryves said:

    This was a relatively common issue on websites after the release of Flash 10; the detection script would check the last character of the version string, see that version 0 was less than the required version 9, then ask you to upgrade.

    Which is why the major version number should change more often, or not as much. Euthanization is just to tedious, even if it is the preferred way.



  •  Versioning. It's a bitch.

    How do you decide what's major? What's minor?

    Do you keep a decimal thing going as though each iteration of your program is a point value on a continuous timeline?

    Do you revalue your too-high versions when they've become inflated, back to 1 with a hip postfix (CS, MX etc)?

    Do you keep a float internally and a year externally? (windows, MS Office)

    Do you associate a floopy name with each major version? (Ubuntu (feisty fawn), Firefox (one tree oak)) (I like this one because I like floopy names)

    Do you try to asymptotically approach 1 with period-separated base-infinite version digits, such as foobar2000? (0.9.6.2.wtf.peter)



  • @dhromed said:

     Versioning. It's a bitch.

    How do you decide what's major? What's minor?

    Do you keep a decimal thing going as though each iteration of your program is a point value on a continuous timeline?

    Do you revalue your too-high versions when they've become inflated, back to 1 with a hip postfix (CS, MX etc)?

    Do you keep a float internally and a year externally? (windows, MS Office)

    Do you associate a floopy name with each major version? (Ubuntu (feisty fawn), Firefox (one tree oak)) (I like this one because I like floopy names)

    Do you try to asymptotically approach 1 with period-separated base-infinite version digits, such as foobar2000? (0.9.6.2.wtf.peter)

    We need help. Someone email Spoelsky.


  • @dhromed said:

    Versioning. It's a bitch.

     

    Are you being facetious?  Software versioning is pretty simple and standardized these days.  You have:

    1. Internal name or code name, i.e. "Longhorn".  Not actually present in the software itself but will likely be attached to any pre-release documentation, release candidates, etc.  The development team chooses this name.

    2. Public or marketing name ("Vista" or "Office 2007").  Also not present in the software, but gets attached to the actual release documentation and final product.  Chosen by the marketing team.

    3. Major version.  A change in the major version generally indicates one of the following:  a change in the platform, fundamental changes to the design, or compatibility issues with older versions.

    4. Minor version.  Indicates changes that fix bugs or add functionality but do not change the way that software/system operates in general.

    5. Build and/or release number.  This changes for every release.  It can either be a counter or an encoding of the date/time of the build (Visual Studio does the latter automatically).  This is what you should be checking for minimum requirements!

    If you're doing your versioning any other way, you should be horse-whipped.



  • @Aaron said:

    3. Major version.  A change in the major version generally indicates one of the following:  a change in the platform, fundamental changes to the design, or compatibility issues with older versions.

    If you're doing your versioning any other way, you should be horse-whipped.

    Really?  Then whip the XML team at Microsoft, because they aren't following that.  The MSXML library uses the same back end functions for versions 1, 2, 3 and 4.  I can not think of a single thing that 3 does that 4 can not handle. 

    Come to think of it, why do we even have 4; I can't think of one thing 4 does that 3 can't handle.  Maybe I'm missing something here.  There are some interface differences, but nothing version breaking here.  Perhaps it shoujld have been 3.1 instead?



  • @dhromed said:

    Do you try to asymptotically approach 1 with period-separated base-infinite version digits, such as foobar2000? (0.9.6.2.wtf.peter)
    The versioning for TeX asymptotically approaches pi, but I've decided to do Knuth one better: approach pi using the Leibniz formula.  Therefore, the versions will go: 4, 2.66..., 3.466..., 2.8952380952380...  Good luck trying to figure out at a glance if version 3.110350274 is newer than version 3.173842337.



  • @Aaron said:

    3. Major version.  A change in the major version generally indicates one of the following:  a change in the platform, fundamental changes to the design, or compatibility issues with older versions.

     You missed one reason...

    3.1 Major version.  The desire to charge customers again for the software

     



  • @bstorer said:

    @dhromed said:

    Do you try to asymptotically approach 1 with period-separated base-infinite version digits, such as foobar2000? (0.9.6.2.wtf.peter)
    The versioning for TeX asymptotically approaches pi, but I've decided to do Knuth one better: approach pi using the Leibniz formula.  Therefore, the versions will go: 4, 2.66..., 3.466..., 2.8952380952380...  Good luck trying to figure out at a glance if version 3.110350274 is newer than version 3.173842337.

    You are like the Software Engineering Anti-Christ.  I bow to you, sir. 



  • @bstorer said:

    The versioning for TeX asymptotically approaches pi, but I've decided to do Knuth one better: approach pi using the Leibniz formula.  Therefore, the versions will go: 4, 2.66..., 3.466..., 2.8952380952380...  Good luck trying to figure out at a glance if version 3.110350274 is newer than version 3.173842337.

    That's not too original then. Why don't you use the Fibonacci sequence?

    Btw, what the hell is Knuth?



  • @derula said:

    Btw, what the hell is Knuth?

    Heretic! 



  • @derula said:

    Why don't you use the Fibonacci sequence?

    1. How is the Fibonacci sequence any more original?
    2. Other than having version 1 twice,it's far less sadistic.
    3. Didn't Microsoft already do that when all the Office software jumped to version 6?

    @derula said:


    Btw, what the hell is Knuth?

    Your ignorance is showing.



  • @bstorer said:

    @derula said:

    Why don't you use the Fibonacci sequence?

    1. How is the Fibonacci sequence any more original?
    2. Other than having version 1 twice,it's far less sadistic.
    3. Didn't Microsoft already do that when all the Office software jumped to version 6?

    @derula said:


    Btw, what the hell is Knuth?

    Your ignorance is showing.




  • @morbiuswilters said:

    @bstorer said:

    @derula said:

    Why don't you use the Fibonacci sequence?

    1. How is the Fibonacci sequence any more original?
    2. Other than having version 1 twice,it's far less sadistic.
    3. Didn't Microsoft already do that when all the Office software jumped to version 6?

    @derula said:


    Btw, what the hell is Knuth?

    Your ignorance is showing.


     

    STAB STAB



  • @bstorer said:

    1. How is the Fibonacci sequence any more original?
    2. Other than having version 1 twice,it's far less sadistic.
    3. Didn't Microsoft already do that when all the Office software jumped to version 6?

    1. Haven't been used as version numbers yet maybe?
    2. Well you can always take the quotient an+1/an. Then it's convergent!

    The sequence of factorials would also be an idea.


  • @derula said:

    Haven't been used as version numbers yet maybe?
    I'm not aware of any piece of software that has had a version 3.171888735237147455088270537552922979571....  Perhaps you'd be happier if I used the fractional format?  How does version 58594047058276001794165124 / 18472920064106597929865025 sound?



  • @bstorer said:

    1. How is the Fibonacci sequence any more original?
    2. Other than having version 1 twice,it's far less sadistic.
    3. Didn't Microsoft already do that when all the Office software jumped to version 6?

    Um... because MS was just "standardizing" its version numbers with the Mac versions of Office Software? (Which worked better than its Win-3.1 counterparts as well.)

    Anyway ... Sun has its own versioning weirdness:

    SunOS 5.9 = Solaris 9

    SunOS 5.10 = Solaris 10

    Java 1.2 = Java 2

    Java 1.5 = Java 5


  • Discourse touched me in a no-no place

    @derula said:

    The sequence of factorials would also be an idea.
    Or go the whole hog, and use Ackermann. 



  • @danixdefcon5 said:

    Um... because MS was just "standardizing" its version numbers with the Mac versions of Office Software?
    It was a joke.  We all know why MS did it.

     @danixdefcon5 said:

    Anyway ... Sun has its own versioning weirdness:

    Except that these aren't weird versionings.

     @danixdefcon5 said:

    SunOS 5.9 = Solaris 9

    SunOS 5.10 = Solaris 10

    In related news, Fedora is up to Fedora 10, but Linux is only at 2.6!  PROTIP: Solaris is more than just SunOS.

     @danixdefcon5 said:

    Java 1.2 = Java 2

    Java 1.5 = Java 5

      The Java versions are clear and simple: 1.2, 1.3, all the way up to 1.6.  The "Java 2", "Java 5" stuff is just marketing crap.


  • You missed it.

    SunOS 4.x.x = Solaris 1.who_the_heck_knows

    SunOS 5.0 = Solaris 2.0

    ...

    SunOS 5.5 = Solaris 2.5

    SunOS 5.5.1 = Solaris 2.5.1

    SunOS 5.6 = Solaris 2.6 (but everyone called it Solaris 6)

    SunOS 5.7 = Solaris 7

    SunOS 5.7.1 = Solaris 7.1 (but I don't recall anyone actually calling it anything - well, Luther J Baker apparently called it SunOS 5.7.1)

    SunOS 5.8 = Solaris 8

    @danixdefcon5 said:

    SunOS 5.9 = Solaris 9

    SunOS 5.10 = Solaris 10



  • @bstorer said:

    Perhaps you'd be happier if I used the fractional format?  How does version 58594047058276001794165124 / 18472920064106597929865025 sound?

    Yeah, that would be better.



    You could still use the (1-1) map c: ℤ×ℕ→ℝ: (x,y)↦x+(sign(x))⋅y⋅10-floor(log(y))-1 (or ℚ→ℝ, if you identify ℚ with ℤ×ℕ) that sends a rational number to a real number where it uses its numerator as the integral part and its denominator as its decimal part (e.g., c(58594047058276001794165124 / 18472920064106597929865025)=58594047058276001794165124.18472920064106597929865025); then it would more look like a version number with that point in it.

    I need a life.



  • @tgape said:

    You missed it.

    SunOS 4.x.x = Solaris 1.who_the_heck_knows

    SunOS 5.0 = Solaris 2.0

    ...

    SunOS 5.5 = Solaris 2.5

    SunOS 5.5.1 = Solaris 2.5.1

    SunOS 5.6 = Solaris 2.6 (but everyone called it Solaris 6)

    SunOS 5.7 = Solaris 7

    SunOS 5.7.1 = Solaris 7.1 (but I don't recall anyone actually calling it anything - well, Luther J Baker apparently called it SunOS 5.7.1)

    SunOS 5.8 = Solaris 8

    @danixdefcon5 said:

    SunOS 5.9 = Solaris 9

    SunOS 5.10 = Solaris 10

    Again, this isn't that big a WTF.  Solaris "moved" to 2.0 when SunOS switched to SVR4, which makes sense (other than the fact that Solaris 1 didn't ever really exist, but that's marketing for you).  Through 2.6 it simply matched the minor version of SunOS, after which it dropped the leading "2.", probably to combat the impression that a minor version number increase means a minor upgrade.  Still, Solaris doesn't and never has had a real version; it's a wrapup of other software.  The numbers are all marketing, and they could just as easily go the Debian route and start naming them "Solaris Salisbury Steak" and "Solaris Karate Explosion".  It's no different than Windows going from 3 to 3.1 to 95 (zOMG!  Talk about a huge jump!) to 98 to ME to XP to Vista to 7.


  • @bstorer said:

    The numbers are all marketing, and they could just as easily go the Debian route and start naming them "Solaris Salisbury Steak" and "Solaris Karate Explosion".

    In that case, I'd rebadge my laptop's OS to "Windows BBQ Edition". It fits well with the laptop's overheating ;)

    @bstorer said:

    It's no different than Windows going from 3 to 3.1 to 95 (zOMG!  Talk about a huge jump!) to 98 to ME to XP to Vista to 7.
    Oooh! 7 is the new "6.1". Fashion trends made their way into software... and some followed MS steps (Quicken 2008! ICQ98!) under the misguided idea that software is like the car industry: put out a "new" one every year, even if it is the same thing. At least MS does stuff in useful features in each new "year" Office version.



  • @danixdefcon5 said:

    At least MS does stuff in useful features in each new "year" Office version.
     

    recently i had to upgrade an access 2003 database to access 2007 ... i still wake up in sweat screaming "riiiiiiiiibon" ... 



  • @Nelle said:

    @danixdefcon5 said:

    At least MS does stuff in useful features in each new "year" Office version.
     

    recently i had to upgrade an access 2003 database to access 2007 ... i still wake up in sweat screaming "riiiiiiiiibon" ... 

    Ohhhhh yes. Ribbon is the main reason I might never "upgrade" to Office 2007. I might bear with the .docx formats, but the damn Ribbon interface really annoys me. Reminds me of the time that PageMaker decided to partially copy the Office look & feel.


  • @danixdefcon5 said:

    the damn Ribbon interface really annoys me
     

    Really? What's so suck aboot it?


  • :belt_onion:

     @dhromed said:

    @danixdefcon5 said:

    the damn Ribbon interface really annoys me
     

    Really? What's so suck aboot it?

    The biggest obstacle to the ribbon is that you have to learn how to use Office again. But once you get the hang of it, it really is more efficient. But you'll need to climb the learning curve first. Don't be afraid of change!


  • @dhromed said:

    Really? What's so suck aboot it?

    Giving support to people who are accustomed to their old access application and trying to explain where what icon is ...
    However bigger problem is when you have a MSSQL backend with linked tables and date fields in your database ....
    Then the ribbon thing tends to grind most computers to a halt when you enter the date field on the form, grid or wherever ....



    For now, the happiest line of the year 2009:

    DoCmd.ShowToolbar "Ribbon", acToolbarNo



  • @Nelle said:

    Giving support to people who are accustomed to their old access application and trying to explain where what icon is ... However bigger problem is when you have a MSSQL backend with linked tables and date fields in your database
     

    Please, go on. I smell front page-worthy material.


Log in to reply