You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Vladimir Ozerov <vo...@gridgain.com> on 2015/12/18 09:42:07 UTC

Versioning policies for .NET and CPP

Folks,

We have some versioning policies in Java. Normaly Java version looks like
"A.B.C.[suffix]", where [suffix] could potnetially be anything - "b", "p",
"rc", "ga", "final", etc.

In .NET/CPP on Windows we have to follow standard versioning format
"A.B.C.D", where D is a value between 0 and 65536. The quesion is how to
map string suffix to some numerical value.

I have an idea to rely on release date. E.g.
1) Take year of the last major release as a starting point.
2) Amount of hours spent from starting point is a value of D. Hours, not
years because several releases could potnetially happen in the same day.

E.g.:
- Last major release was in 2015
- Today is 12/18/2015
- D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ = Ignite.NET
1.5.0.8166.

*Pros:*
- Newer versions always have bigger "D" component. GA will be greater than
beta, patch 2 will be greater than patch 1, etc..
*Cons:*
- Version have to be updated just before release.

Does anyone have concerns/thoughts about it?

Vladimir.

Re: Versioning policies for .NET and CPP

Posted by Sergey Kozlov <sk...@gridgain.com>.
I like the approach but would like suggest to another one that more human
readable:
D has 5 digits limit so we can fill then by rule
XXXYY where XXX - days, YY - hours
For instance:
.Net/C++ build 01.01.2016 00:45 -> 00100
.Net/C++ build 31.12.2016 19:05 -> 36619




On Fri, Dec 18, 2015 at 11:42 AM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> Folks,
>
> We have some versioning policies in Java. Normaly Java version looks like
> "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b", "p",
> "rc", "ga", "final", etc.
>
> In .NET/CPP on Windows we have to follow standard versioning format
> "A.B.C.D", where D is a value between 0 and 65536. The quesion is how to
> map string suffix to some numerical value.
>
> I have an idea to rely on release date. E.g.
> 1) Take year of the last major release as a starting point.
> 2) Amount of hours spent from starting point is a value of D. Hours, not
> years because several releases could potnetially happen in the same day.
>
> E.g.:
> - Last major release was in 2015
> - Today is 12/18/2015
> - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ = Ignite.NET
> 1.5.0.8166.
>
> *Pros:*
> - Newer versions always have bigger "D" component. GA will be greater than
> beta, patch 2 will be greater than patch 1, etc..
> *Cons:*
> - Version have to be updated just before release.
>
> Does anyone have concerns/thoughts about it?
>
> Vladimir.
>



-- 
Sergey Kozlov
GridGain Systems
www.gridgain.com

Re: Versioning policies for .NET and CPP

Posted by Konstantin Boudnik <co...@apache.org>.
Betas should be also dropped for multiple other reasons I've explained
elsethreads.

Cos

On Mon, Dec 21, 2015 at 11:49PM, Dmitriy Setrakyan wrote:
> Our versions should be the same for .NET, C++, and Java. If this means
> dropping betas, so be it.
> 
> D.
> 
> On Mon, Dec 21, 2015 at 10:26 PM, Konstantin Boudnik <co...@apache.org> wrote:
> 
> > Ideally, text suffixes in the versions shouldn't be used _anywhere_.
> > I think this umpteenth time I am saying this, but why we are so married to
> > the
> > 'b', 'p', 'r', and 'f' (whatever the last one stands for)?
> >
> > semver is using 4th numerical position for patch-level, and it only
> > denominates the number of the bug fixes that were applied in the subminor
> > release. It shouldn't carry any other meaning: if you need a new release -
> > bumpt the subminor version in case this is a bug-fix release; bump up the
> > minor version if new features were added, yet the compatibility level is
> > the
> > same; bump up the major version to reflect on (optional) compatibility
> > changes.
> >
> > That's all: this works everywhere. For any language, platform, and OS. It
> > is
> > compatible with _any_ build and packaging system in the world. Why the urge
> > for cleverness?
> >
> >     Cos
> >
> > On Fri, Dec 18, 2015 at 12:14PM, Vladimir Ozerov wrote:
> > > Dima,
> > >
> > > For now - only for .NET and CPP because we *CAN'T* use text suffixes
> > there.
> > > Though, in Visual studio there is a notion of "informational version"
> > where
> > > arbitrary text can be written. But it is solely for informational
> > purposes
> > > and normal unique A.B.C.D version is required still.
> > >
> > > In the end when user will look at DLL details, he will see something like
> > > this (just for example):
> > >
> > > Version: 1.5.0.8166
> > > Description: Ignite.NET 1.5.0 GA Patch 1
> > >
> > >
> > > On Fri, Dec 18, 2015 at 12:03 PM, Dmitriy Setrakyan <
> > dsetrakyan@apache.org>
> > > wrote:
> > >
> > > > Is this change only offered for .NET releases or for Java as well?
> > > >
> > > > On Fri, Dec 18, 2015 at 12:42 AM, Vladimir Ozerov <
> > vozerov@gridgain.com>
> > > > wrote:
> > > >
> > > > > Folks,
> > > > >
> > > > > We have some versioning policies in Java. Normaly Java version looks
> > like
> > > > > "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b",
> > > > "p",
> > > > > "rc", "ga", "final", etc.
> > > > >
> > > > > In .NET/CPP on Windows we have to follow standard versioning format
> > > > > "A.B.C.D", where D is a value between 0 and 65536. The quesion is
> > how to
> > > > > map string suffix to some numerical value.
> > > > >
> > > > > I have an idea to rely on release date. E.g.
> > > > > 1) Take year of the last major release as a starting point.
> > > > > 2) Amount of hours spent from starting point is a value of D. Hours,
> > not
> > > > > years because several releases could potnetially happen in the same
> > day.
> > > > >
> > > > > E.g.:
> > > > > - Last major release was in 2015
> > > > > - Today is 12/18/2015
> > > > > - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ =
> > Ignite.NET
> > > > > 1.5.0.8166.
> > > > >
> > > > > *Pros:*
> > > > > - Newer versions always have bigger "D" component. GA will be greater
> > > > than
> > > > > beta, patch 2 will be greater than patch 1, etc..
> > > > > *Cons:*
> > > > > - Version have to be updated just before release.
> > > > >
> > > > > Does anyone have concerns/thoughts about it?
> > > > >
> > > > > Vladimir.
> > > > >
> > > >
> >

Re: Versioning policies for .NET and CPP

Posted by Dmitriy Setrakyan <ds...@apache.org>.
Our versions should be the same for .NET, C++, and Java. If this means
dropping betas, so be it.

D.

On Mon, Dec 21, 2015 at 10:26 PM, Konstantin Boudnik <co...@apache.org> wrote:

> Ideally, text suffixes in the versions shouldn't be used _anywhere_.
> I think this umpteenth time I am saying this, but why we are so married to
> the
> 'b', 'p', 'r', and 'f' (whatever the last one stands for)?
>
> semver is using 4th numerical position for patch-level, and it only
> denominates the number of the bug fixes that were applied in the subminor
> release. It shouldn't carry any other meaning: if you need a new release -
> bumpt the subminor version in case this is a bug-fix release; bump up the
> minor version if new features were added, yet the compatibility level is
> the
> same; bump up the major version to reflect on (optional) compatibility
> changes.
>
> That's all: this works everywhere. For any language, platform, and OS. It
> is
> compatible with _any_ build and packaging system in the world. Why the urge
> for cleverness?
>
>     Cos
>
> On Fri, Dec 18, 2015 at 12:14PM, Vladimir Ozerov wrote:
> > Dima,
> >
> > For now - only for .NET and CPP because we *CAN'T* use text suffixes
> there.
> > Though, in Visual studio there is a notion of "informational version"
> where
> > arbitrary text can be written. But it is solely for informational
> purposes
> > and normal unique A.B.C.D version is required still.
> >
> > In the end when user will look at DLL details, he will see something like
> > this (just for example):
> >
> > Version: 1.5.0.8166
> > Description: Ignite.NET 1.5.0 GA Patch 1
> >
> >
> > On Fri, Dec 18, 2015 at 12:03 PM, Dmitriy Setrakyan <
> dsetrakyan@apache.org>
> > wrote:
> >
> > > Is this change only offered for .NET releases or for Java as well?
> > >
> > > On Fri, Dec 18, 2015 at 12:42 AM, Vladimir Ozerov <
> vozerov@gridgain.com>
> > > wrote:
> > >
> > > > Folks,
> > > >
> > > > We have some versioning policies in Java. Normaly Java version looks
> like
> > > > "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b",
> > > "p",
> > > > "rc", "ga", "final", etc.
> > > >
> > > > In .NET/CPP on Windows we have to follow standard versioning format
> > > > "A.B.C.D", where D is a value between 0 and 65536. The quesion is
> how to
> > > > map string suffix to some numerical value.
> > > >
> > > > I have an idea to rely on release date. E.g.
> > > > 1) Take year of the last major release as a starting point.
> > > > 2) Amount of hours spent from starting point is a value of D. Hours,
> not
> > > > years because several releases could potnetially happen in the same
> day.
> > > >
> > > > E.g.:
> > > > - Last major release was in 2015
> > > > - Today is 12/18/2015
> > > > - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ =
> Ignite.NET
> > > > 1.5.0.8166.
> > > >
> > > > *Pros:*
> > > > - Newer versions always have bigger "D" component. GA will be greater
> > > than
> > > > beta, patch 2 will be greater than patch 1, etc..
> > > > *Cons:*
> > > > - Version have to be updated just before release.
> > > >
> > > > Does anyone have concerns/thoughts about it?
> > > >
> > > > Vladimir.
> > > >
> > >
>

Re: Versioning policies for .NET and CPP

Posted by Konstantin Boudnik <co...@apache.org>.
Ideally, text suffixes in the versions shouldn't be used _anywhere_. 
I think this umpteenth time I am saying this, but why we are so married to the
'b', 'p', 'r', and 'f' (whatever the last one stands for)?

semver is using 4th numerical position for patch-level, and it only
denominates the number of the bug fixes that were applied in the subminor
release. It shouldn't carry any other meaning: if you need a new release -
bumpt the subminor version in case this is a bug-fix release; bump up the
minor version if new features were added, yet the compatibility level is the
same; bump up the major version to reflect on (optional) compatibility
changes.

That's all: this works everywhere. For any language, platform, and OS. It is
compatible with _any_ build and packaging system in the world. Why the urge
for cleverness?

    Cos

On Fri, Dec 18, 2015 at 12:14PM, Vladimir Ozerov wrote:
> Dima,
> 
> For now - only for .NET and CPP because we *CAN'T* use text suffixes there.
> Though, in Visual studio there is a notion of "informational version" where
> arbitrary text can be written. But it is solely for informational purposes
> and normal unique A.B.C.D version is required still.
> 
> In the end when user will look at DLL details, he will see something like
> this (just for example):
> 
> Version: 1.5.0.8166
> Description: Ignite.NET 1.5.0 GA Patch 1
> 
> 
> On Fri, Dec 18, 2015 at 12:03 PM, Dmitriy Setrakyan <ds...@apache.org>
> wrote:
> 
> > Is this change only offered for .NET releases or for Java as well?
> >
> > On Fri, Dec 18, 2015 at 12:42 AM, Vladimir Ozerov <vo...@gridgain.com>
> > wrote:
> >
> > > Folks,
> > >
> > > We have some versioning policies in Java. Normaly Java version looks like
> > > "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b",
> > "p",
> > > "rc", "ga", "final", etc.
> > >
> > > In .NET/CPP on Windows we have to follow standard versioning format
> > > "A.B.C.D", where D is a value between 0 and 65536. The quesion is how to
> > > map string suffix to some numerical value.
> > >
> > > I have an idea to rely on release date. E.g.
> > > 1) Take year of the last major release as a starting point.
> > > 2) Amount of hours spent from starting point is a value of D. Hours, not
> > > years because several releases could potnetially happen in the same day.
> > >
> > > E.g.:
> > > - Last major release was in 2015
> > > - Today is 12/18/2015
> > > - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ = Ignite.NET
> > > 1.5.0.8166.
> > >
> > > *Pros:*
> > > - Newer versions always have bigger "D" component. GA will be greater
> > than
> > > beta, patch 2 will be greater than patch 1, etc..
> > > *Cons:*
> > > - Version have to be updated just before release.
> > >
> > > Does anyone have concerns/thoughts about it?
> > >
> > > Vladimir.
> > >
> >

Re: Versioning policies for .NET and CPP

Posted by Vladimir Ozerov <vo...@gridgain.com>.
Dima,

For now - only for .NET and CPP because we *CAN'T* use text suffixes there.
Though, in Visual studio there is a notion of "informational version" where
arbitrary text can be written. But it is solely for informational purposes
and normal unique A.B.C.D version is required still.

In the end when user will look at DLL details, he will see something like
this (just for example):

Version: 1.5.0.8166
Description: Ignite.NET 1.5.0 GA Patch 1


On Fri, Dec 18, 2015 at 12:03 PM, Dmitriy Setrakyan <ds...@apache.org>
wrote:

> Is this change only offered for .NET releases or for Java as well?
>
> On Fri, Dec 18, 2015 at 12:42 AM, Vladimir Ozerov <vo...@gridgain.com>
> wrote:
>
> > Folks,
> >
> > We have some versioning policies in Java. Normaly Java version looks like
> > "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b",
> "p",
> > "rc", "ga", "final", etc.
> >
> > In .NET/CPP on Windows we have to follow standard versioning format
> > "A.B.C.D", where D is a value between 0 and 65536. The quesion is how to
> > map string suffix to some numerical value.
> >
> > I have an idea to rely on release date. E.g.
> > 1) Take year of the last major release as a starting point.
> > 2) Amount of hours spent from starting point is a value of D. Hours, not
> > years because several releases could potnetially happen in the same day.
> >
> > E.g.:
> > - Last major release was in 2015
> > - Today is 12/18/2015
> > - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ = Ignite.NET
> > 1.5.0.8166.
> >
> > *Pros:*
> > - Newer versions always have bigger "D" component. GA will be greater
> than
> > beta, patch 2 will be greater than patch 1, etc..
> > *Cons:*
> > - Version have to be updated just before release.
> >
> > Does anyone have concerns/thoughts about it?
> >
> > Vladimir.
> >
>

Re: Versioning policies for .NET and CPP

Posted by Dmitriy Setrakyan <ds...@apache.org>.
Is this change only offered for .NET releases or for Java as well?

On Fri, Dec 18, 2015 at 12:42 AM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> Folks,
>
> We have some versioning policies in Java. Normaly Java version looks like
> "A.B.C.[suffix]", where [suffix] could potnetially be anything - "b", "p",
> "rc", "ga", "final", etc.
>
> In .NET/CPP on Windows we have to follow standard versioning format
> "A.B.C.D", where D is a value between 0 and 65536. The quesion is how to
> map string suffix to some numerical value.
>
> I have an idea to rely on release date. E.g.
> 1) Take year of the last major release as a starting point.
> 2) Amount of hours spent from starting point is a value of D. Hours, not
> years because several releases could potnetially happen in the same day.
>
> E.g.:
> - Last major release was in 2015
> - Today is 12/18/2015
> - D = 24 * 340 /* days since 01/01/2015 */ + 6 /* hours */ = Ignite.NET
> 1.5.0.8166.
>
> *Pros:*
> - Newer versions always have bigger "D" component. GA will be greater than
> beta, patch 2 will be greater than patch 1, etc..
> *Cons:*
> - Version have to be updated just before release.
>
> Does anyone have concerns/thoughts about it?
>
> Vladimir.
>