Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2014-05

Off topic. Version numbers

12 messages · 8 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Santiago A.

Have you heard about "Semantic Versioning 2.0.0" /http://semver.org/?

It is a proposal about how to assign version numbers in order to deal with compatibility and dependences.

Perhaps Lazarus should thing about using it.

In short, this system is: Version numbers is x.y.z[-nnnn] "z" changes about bugs refactorization etc (patches number) "y" changes about improvements that add new functionality, but don't break compatibility (minor version number)
"x" Changes that break compatibility (mayor version number) -nnnn is whatever you want (build beta RC1 etc)

If I have a program that builds and works properly using version 3.20.123-23333, I'm sure it will work:
for 3.20.[*] and for 3.[20..infinite].[*]
Perhaps it will work for 3.19, it depends on if I used new features added in 3.20 o not.
It won't work for 4.* or 2.*

Example:
V 3.20.10
Tmyobject=class
  public
    procedure foo1;
 end;
V 3.20.11
Tmyobject=class
  private
    myvar:integer; // new internal var, nothing really changes.
Increment patch version number
  public
    procedure foo1;
    procedure foo2;
  end;
V 3.21.11
Tmyobject=class
  private
    myvar:integer;
  public
    procedure foo1;
    procedure foo2;
    procedure fooNew; // New feature,programs that work with V 3.20
still work. Increment minor version number.
  end;
V 4.1.1
Tmyobject=class
  private
    myVar:integer;
  public
    // *** procedure foo1;  ** deprecated
    procedure foo2; // Foo1 removed, could break compatibility.
Increment mayor version number
    procedure fooNew;
  end;

The drawback is that is you must separate clearly bugs, new features and deprecating/changing functionality. Never the less, it is good for the user.

wouldn't Lazarus team, as user of FPC, love that, when FPC releases 2.7, not to need to check what/if breaks with 2.6, just be sure nothing is breaks?

As the document states
"This is not a new or revolutionary idea. In fact, you probably do something close to this already. The problem is that "close" isn't good enough. Without compliance to some sort of formal specification, version numbers are essentially useless for dependency management. By giving a name and clear definition to the above ideas, it becomes easy to communicate your intentions to the users of your software. Once these intentions are clear, flexible (but not too flexible) dependency specifications can finally be made."

Saludos Santi

Reply by email

Flávio Etrusco
to Santiago A.
Santiago A. wrote 15 lines
Have you heard about "Semantic Versioning 2.0.0" /http://semver.org/? It is a proposal about how to assign version numbers in order to deal with compatibility and dependences. Perhaps Lazarus should thing about using it. In short, this system is: Version numbers is x.y.z[-nnnn] "z" changes about bugs refactorization etc (patches number) "y" changes about improvements that add new functionality, but don't break compatibility (minor version number) "x" Changes that break compatibility (mayor version number) -nnnn is whatever you want (build beta RC1 etc)

Both Lazarus and FPC follow this numbering scheme already - maybe not very strictly, but they follow ;-) And the minor version number is even for stable release series, and odd in the trunk/development branch.

-Fl?vio

Reply by email

Mattias Gaertner
to Flávio Etrusco
Show quoted text 21 lines
On Thu, May 15, 2014 at 7:36 AM, Santiago A. wrote: > > Have you heard about "Semantic Versioning 2.0.0" /http://semver.org/? > > It is a proposal about how to assign version numbers in order to deal > with compatibility and dependences. > > Perhaps Lazarus should thing about using it. > > In short, this system is: Version numbers is x.y.z[-nnnn] > "z" changes about bugs refactorization etc (patches number) > "y" changes about improvements that add new functionality, but don't > break compatibility (minor version number) > "x" Changes that break compatibility (mayor version number) > -nnnn is whatever you want (build beta RC1 etc) > Both Lazarus and FPC follow this numbering scheme already - maybe not very strictly, but they follow ;-) And the minor version number is even for stable release series, and odd in the trunk/development branch.

Not quite.
Lazarus x has only changed once from 0 to 1, reflecting a new branch and release system.
y is for incompatibilities and new features.
z is for bug fix releases.

Probably it is possible to skip the x and use a y.z scheme.

Mattias

Reply by email

Flávio Etrusco
to Mattias Gaertner
Mattias Gaertner wrote 34 lines
On Thu, 15 May 2014 13:19:41 -0300 Fl?vio Etrusco wrote: > On Thu, May 15, 2014 at 7:36 AM, Santiago A. wrote: > > > > Have you heard about "Semantic Versioning 2.0.0" /http://semver.org/? > > > > It is a proposal about how to assign version numbers in order to deal > > with compatibility and dependences. > > > > Perhaps Lazarus should thing about using it. > > > > In short, this system is: Version numbers is x.y.z[-nnnn] > > "z" changes about bugs refactorization etc (patches number) > > "y" changes about improvements that add new functionality, but don't > > break compatibility (minor version number) > > "x" Changes that break compatibility (mayor version number) > > -nnnn is whatever you want (build beta RC1 etc) > > > > Both Lazarus and FPC follow this numbering scheme already - maybe not > very strictly, but they follow ;-) And the minor version number is > even for stable release series, and odd in the trunk/development > branch. Not quite. Lazarus x has only changed once from 0 to 1, reflecting a new branch and release system. y is for incompatibilities and new features. z is for bug fix releases. Probably it is possible to skip the x and use a y.z scheme. Mattias

So in practice it's the same, no? ;-)
It feels a bit annoying to have high numbers in the major version, and I guess that's why no project ever follows that scheme to the letter.

Best regards,
Fl?vio

Reply by email

Andreas Schneider
to Flávio Etrusco
Fl?vio Etrusco wrote
So in practice it's the same, no? ;-) It feels a bit annoying to have high numbers in the major version, and I guess that's why no project ever follows that scheme to the letter.

<offtopic>
Well, in the browser business they seem to follow that idea to the other extent, where it currently looks more like "hey we changed some lines of code, let's release a new major version".
</offtopic>

Best Regards, Andreas

Reply by email

Graeme Geldenhuys
to Andreas Schneider
Andreas Schneider wrote 6 lines
<offtopic> Well, in the browser business they seem to follow that idea to the other extent, where it currently looks more like "hey we changed some lines of code, let's release a new major version". </offtopic>

And yes, I find that SO annoying! End-users now have no idea how much has changed between releases. Lets just hope nobody else follows the Web Browser versioning scheme.

Regards,
- Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/

Reply by email

Sven Barth
to Graeme Geldenhuys
Graeme Geldenhuys wrote 11 lines
On 2014-05-16 08:40, Andreas Schneider wrote: > > <offtopic> > Well, in the browser business they seem to follow that idea to the other > extent, where it currently looks more like "hey we changed some lines of > code, let's release a new major version". > </offtopic> And yes, I find that SO annoying! End-users now have no idea how much has changed between releases. Lets just hope nobody else follows the Web Browser versioning scheme.

At my company we've recently switched to such a version scheme as well, because with the old version scheme (a typical x.y.z scheme) customers always wondered why they should update when only the last digit changed... (Note: we are still using the x.y.z scheme internally to mark fix releases etc., but to the user we only promote the major number)

Regards,
Sven

Reply by email

Mattias Gaertner
to Graeme Geldenhuys: And yes, I find that SO annoying! End-users now have no idea how much has changed…
Show quoted text 11 lines
On 2014-05-16 08:40, Andreas Schneider wrote: > > <offtopic> > Well, in the browser business they seem to follow that idea to the other > extent, where it currently looks more like "hey we changed some lines of > code, let's release a new major version". > </offtopic> And yes, I find that SO annoying! End-users now have no idea how much has changed between releases. Lets just hope nobody else follows the Web Browser versioning scheme.

Even it's only a tiny security bug fix you should use the new browser version. Users must not wait for big new browser features. That's different for Lazarus. IMO that's comparing apples and oranges.
Lazarus "major" releases usually contain several thousand svn revisions and a few incompatibilities. Some users might see no big difference, some users have to spend a lot of time to adapt their projects.

Mattias

Reply by email

Graeme Geldenhuys
to Mattias Gaertner
Mattias Gaertner wrote
Even it's only a tiny security bug fix you should use the new browser version. Users must not wait for big new browser features.

I didn't say that. Simply increment the bugfix version and the browsers default "auto update functionality" will get it. It would also have been nice if they added functionality like an option to only auto-update security fixes and not major versions. Many programs have that option.

Regards,
- Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/

Reply by email

Alexsander Rosa
to Sven Barth: At my company we've recently switched to such a version scheme as well, because with the…

Here we moved to year.month (like Ubuntu).

2014-05-16 14:58 GMT-03:00 Sven Barth :

Show quoted text 34 lines
On 16.05.2014 19:20, Graeme Geldenhuys wrote: > On 2014-05-16 08:40, Andreas Schneider wrote: > >> >> <offtopic> >> Well, in the browser business they seem to follow that idea to the other >> extent, where it currently looks more like "hey we changed some lines of >> code, let's release a new major version". >> </offtopic> >> > > And yes, I find that SO annoying! End-users now have no idea how much > has changed between releases. Lets just hope nobody else follows the Web > Browser versioning scheme. > At my company we've recently switched to such a version scheme as well, because with the old version scheme (a typical x.y.z scheme) customers always wondered why they should update when only the last digit changed... (Note: we are still using the x.y.z scheme internally to mark fix releases etc., but to the user we only promote the major number) Regards, Sven -- _______________________________________________ Lazarus mailing list http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Atenciosamente, Alexsander da Rosa -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20140516/c4f41572/attachment.html>

Reply by email

Marco van de Voort
to Mattias Gaertner: On Fri, 16 May 2014 18:20:55 +0100 Even it's only a tiny security bug fix you should use…
Mattias Gaertner wrote 5 lines
> has changed between releases. Lets just hope nobody else follows the Web > Browser versioning scheme. Even it's only a tiny security bug fix you should use the new browser version. Users must not wait for big new browser features.

True, but that behaviour is independent from the version numbering scheme.

I agree a bit with Graeme. Such fast incrementing major versions convey nearly no information anymore.

Yes, old numbering schemes were only correct first magnitude, but at least they conveyed the intent of developers and relations between releases.

Moreover, version numbering systems will only be first order for most projects (except a few very big ones like *nix kernels), since a reality is simply that testing doesn't uncover all bugs and incompatibilities.

Reply by email

Mattias Gaertner
to Marco van de Voort
Show quoted text 8 lines
On Fri, May 16, 2014 at 08:14:11PM +0200, Mattias Gaertner wrote: > > has changed between releases. Lets just hope nobody else follows the Web > > Browser versioning scheme. > > Even it's only a tiny security bug fix you should use the new > browser version. Users must not wait for big new browser features. True, but that behaviour is independent from the version numbering scheme.

Some users underestimate minor versions and some fear updating major versions. A simple counter does not have this psychological ballast.

I agree a bit with Graeme. Such fast incrementing major versions convey nearly no information anymore.

Maybe that is intended.

Show quoted text 6 lines
Yes, old numbering schemes were only correct first magnitude, but at least they conveyed the intent of developers and relations between releases. Moreover, version numbering systems will only be first order for most projects (except a few very big ones like *nix kernels), since a reality is simply that testing doesn't uncover all bugs and incompatibilities.

I agree that FPC and Lazarus are different and should not use the single number version. I'm indifferent for 2 or 3 numbers.

Mattias

Reply by email