question about version blessing: argument

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

question about version blessing: argument

stephane ducasse-2


in a version what is the difference between

version100: spec
        <version: '1.0' imports: #('1.0-baseline') >
       
        spec for: #common do: [
                spec blessing: #release.
                spec
                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']

and

version100: spec
        <version: '1.0' imports: #('1.0-baseline') >
       
        spec for: #common do: [
                spec blessing: #development.
                spec
                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']


Because here when I load a version I say that I want number 20 and not other.

What is the impact on stable definition specified elsewhere.

Stef
Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

Mariano Martinez Peck
Stef, the blessing can be whatever you want to give semantics to an specific version. You can even let it empty if you want. It is just a way to give more information to a version than a simple number. You can tag what you want, say #release, #beta, #betaRelease, #releaseStable, #xxx. No problem.
Now, apart from that, it is ALSO used internally by metacello to perform certain operations. For example, #latestVersion will answer the LAST version which blessing is NOT any of: #development #broken #baseline. See #excludeFromLatestVersion.
The same happens (I think) with project references. If you DO NOT specify anything in #versionString, and you DO NOT specify a version to a project reference (using #project:with:), then Metacello will load by default the "latest". There again, I think it uses #excludeFromLatestVersion

Notice that in baselines, (not versions), the blessing for baseline is important and mandatory because it is the way Metacello has to know that such version is a baseline. Something I don't like in Metacello is that since internally it manages versions and baselines as the same thing, the user has to take care of this. For example, for a baseline, I would like not to use <version: '1.0-baseline' >  but instead  <baseline: '1.0-baseline' > . And doing it this way, you shouldn't even need to define the blessing for baseline.

Cheers

On Sat, Dec 31, 2011 at 10:49 AM, stephane ducasse <[hidden email]> wrote:


in a version what is the difference between

version100: spec
       <version: '1.0' imports: #('1.0-baseline') >

       spec for: #common do: [
               spec blessing: #release.
               spec
                       package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']

and

version100: spec
       <version: '1.0' imports: #('1.0-baseline') >

       spec for: #common do: [
               spec blessing: #development.
               spec
                       package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']


Because here when I load a version I say that I want number 20 and not other.

What is the impact on stable definition specified elsewhere.

Stef



--
Mariano
http://marianopeck.wordpress.com

Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

stephane ducasse-2

On Dec 31, 2011, at 11:28 AM, Mariano Martinez Peck wrote:

> Stef, the blessing can be whatever you want to give semantics to an specific version. You can even let it empty if you want. It is just a way to give more information to a version than a simple number. You can tag what you want, say #release, #beta, #betaRelease, #releaseStable, #xxx. No problem.
> Now, apart from that, it is ALSO used internally by metacello to perform certain operations. For example, #latestVersion will answer the LAST version which blessing is NOT any of: #development #broken #baseline. See #excludeFromLatestVersion.

Now it looks a bit complex.
Still I do not understand what it means to put #development for a version from Metacello perspective.


> The same happens (I think) with project references. If you DO NOT specify anything in #versionString, and you DO NOT specify a version to a project reference (using #project:with:), then Metacello will load by default the "latest". There again, I think it uses #excludeFromLatestVersion
>
> Notice that in baselines, (not versions), the blessing for baseline is important and mandatory because it is the way Metacello has to know that such version is a baseline. Something I don't like in Metacello is that since internally it manages versions and baselines as the same thing, the user has to take care of this. For example, for a baseline, I would like not to use <version: '1.0-baseline' >  but instead  <baseline: '1.0-baseline' > . And doing it this way, you shouldn't even need to define the blessing for baseline.

yes me too.

>
> Cheers
>
> On Sat, Dec 31, 2011 at 10:49 AM, stephane ducasse <[hidden email]> wrote:
>
>
> in a version what is the difference between
>
> version100: spec
>        <version: '1.0' imports: #('1.0-baseline') >
>
>        spec for: #common do: [
>                spec blessing: #release.
>                spec
>                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
>
> and
>
> version100: spec
>        <version: '1.0' imports: #('1.0-baseline') >
>
>        spec for: #common do: [
>                spec blessing: #development.
>                spec
>                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
>
>
> Because here when I load a version I say that I want number 20 and not other.
>
> What is the impact on stable definition specified elsewhere.
>
> Stef
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>

Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

Mariano Martinez Peck


On Sat, Dec 31, 2011 at 12:27 PM, stephane ducasse <[hidden email]> wrote:

On Dec 31, 2011, at 11:28 AM, Mariano Martinez Peck wrote:

> Stef, the blessing can be whatever you want to give semantics to an specific version. You can even let it empty if you want. It is just a way to give more information to a version than a simple number. You can tag what you want, say #release, #beta, #betaRelease, #releaseStable, #xxx. No problem.
> Now, apart from that, it is ALSO used internally by metacello to perform certain operations. For example, #latestVersion will answer the LAST version which blessing is NOT any of: #development #broken #baseline. See #excludeFromLatestVersion.

Now it looks a bit complex.


But nobody forces you to use #latestVersion. If you do want, then pay attention to the blessing.

 
Still I do not understand what it means to put #development for a version from Metacello perspective.


> The same happens (I think) with project references. If you DO NOT specify anything in #versionString, and you DO NOT specify a version to a project reference (using #project:with:), then Metacello will load by default the "latest". There again, I think it uses #excludeFromLatestVersion


Even if I am right about this case, it is not very likely to happen since most of the times you define something in #versionString or you specify a version to the project reference.

 
>
> Notice that in baselines, (not versions), the blessing for baseline is important and mandatory because it is the way Metacello has to know that such version is a baseline. Something I don't like in Metacello is that since internally it manages versions and baselines as the same thing, the user has to take care of this. For example, for a baseline, I would like not to use <version: '1.0-baseline' >  but instead  <baseline: '1.0-baseline' > . And doing it this way, you shouldn't even need to define the blessing for baseline.

yes me too.

>
> Cheers
>
> On Sat, Dec 31, 2011 at 10:49 AM, stephane ducasse <[hidden email]> wrote:
>
>
> in a version what is the difference between
>
> version100: spec
>        <version: '1.0' imports: #('1.0-baseline') >
>
>        spec for: #common do: [
>                spec blessing: #release.
>                spec
>                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
>
> and
>
> version100: spec
>        <version: '1.0' imports: #('1.0-baseline') >
>
>        spec for: #common do: [
>                spec blessing: #development.
>                spec
>                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
>
>
> Because here when I load a version I say that I want number 20 and not other.
>
> What is the impact on stable definition specified elsewhere.
>
> Stef
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>




--
Mariano
http://marianopeck.wordpress.com

Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

stephane ducasse-2

On Dec 31, 2011, at 3:25 PM, Mariano Martinez Peck wrote:

>
>
> On Sat, Dec 31, 2011 at 12:27 PM, stephane ducasse <[hidden email]> wrote:
>
> On Dec 31, 2011, at 11:28 AM, Mariano Martinez Peck wrote:
>
> > Stef, the blessing can be whatever you want to give semantics to an specific version. You can even let it empty if you want. It is just a way to give more information to a version than a simple number. You can tag what you want, say #release, #beta, #betaRelease, #releaseStable, #xxx. No problem.
> > Now, apart from that, it is ALSO used internally by metacello to perform certain operations. For example, #latestVersion will answer the LAST version which blessing is NOT any of: #development #broken #baseline. See #excludeFromLatestVersion.
>
> Now it looks a bit complex.
>
>
> But nobody forces you to use #latestVersion. If you do want, then pay attention to the blessing.

Sure but I understand that the tagging of a version can be anything.
Now I do not understand the default semantics of the specific label used by metacello when used in a version.

>
>  
> Still I do not understand what it means to put #development for a version from Metacello perspective.
>
>
> > The same happens (I think) with project references. If you DO NOT specify anything in #versionString, and you DO NOT specify a version to a project reference (using #project:with:), then Metacello will load by default the "latest". There again, I think it uses #excludeFromLatestVersion
>
>
> Even if I am right about this case, it is not very likely to happen since most of the times you define something in #versionString or you specify a version to the project reference.
>
>  
> >
> > Notice that in baselines, (not versions), the blessing for baseline is important and mandatory because it is the way Metacello has to know that such version is a baseline. Something I don't like in Metacello is that since internally it manages versions and baselines as the same thing, the user has to take care of this. For example, for a baseline, I would like not to use <version: '1.0-baseline' >  but instead  <baseline: '1.0-baseline' > . And doing it this way, you shouldn't even need to define the blessing for baseline.
>
> yes me too.
>
> >
> > Cheers
> >
> > On Sat, Dec 31, 2011 at 10:49 AM, stephane ducasse <[hidden email]> wrote:
> >
> >
> > in a version what is the difference between
> >
> > version100: spec
> >        <version: '1.0' imports: #('1.0-baseline') >
> >
> >        spec for: #common do: [
> >                spec blessing: #release.
> >                spec
> >                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
> >
> > and
> >
> > version100: spec
> >        <version: '1.0' imports: #('1.0-baseline') >
> >
> >        spec for: #common do: [
> >                spec blessing: #development.
> >                spec
> >                        package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
> >
> >
> > Because here when I load a version I say that I want number 20 and not other.
> >
> > What is the impact on stable definition specified elsewhere.
> >
> > Stef
> >
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>

Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

Guillermo Polito

On Sat, Dec 31, 2011 at 7:15 PM, stephane ducasse <[hidden email]> wrote:

Sure but I understand that the tagging of a version can be anything.

I do too.
 
Now I do not understand the default semantics of the specific label used by metacello when used in a version.
 
I understand it's like a comment.  If blessing didn't exist, you could put as an equivalent:

"This version is a formal release, blah blah".

or

"this version is an intermediate development version."

The only reason I see to make it part of the code, is that you can integrate it into the tools and show them, filter them...

That's what I understand, hehe.
Guille

Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

Dale Henrichs
In reply to this post by stephane ducasse-2
Stef,

As a blessing, #development has two effects:

  - versions with #development blessing are excluded from
     the #latestVersion calculation
  - before loading a project version with a #development
    blessing, the configuration of the project is refreshed
    from the repository (automatic #updateProject)

The blessing #broken means that the version should be ignored.

The blessing #baseline identifies the baseline version.

The blessing #release is the default blessing if no other blessing is specified. Keep in mind that the blessing is inherited from the baseline, which means that if you don't specify a blessing in a version then the version will inherit the #baseline blessing from it's baseline and look like a baseline as well.

As Mariano points out, any symbol may be used as a blessing. I recommend that one always specifies a blessing for a version (#development, #release, #broken) to differentiate the version from a baseline version.

From a convention perspective, a #development blessing means that the version is under construction and may change at any moment. A version with a #release blessing means that it will never be changed again and can be safely used.

The MetacelloToolBox operations enforces the above conventions:

  - an error is thrown if you attempt to programmatically modify
    a version with a #release blessing

A number of the helper methods in the MetacelloToolBox API uses the blessing to identify the "current development version" and "latest release".

Dale

----- Original Message -----
| From: "stephane ducasse" <[hidden email]>
| To: [hidden email]
| Sent: Saturday, December 31, 2011 1:49:22 AM
| Subject: [Metacello] question about version blessing: argument
|
|
|
| in a version what is the difference between
|
| version100: spec
| <version: '1.0' imports: #('1.0-baseline') >
|
| spec for: #common do: [
| spec blessing: #release.
| spec
| package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
|
| and
|
| version100: spec
| <version: '1.0' imports: #('1.0-baseline') >
|
| spec for: #common do: [
| spec blessing: #development.
| spec
| package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
|
|
| Because here when I load a version I say that I want number 20 and
| not other.
|
| What is the impact on stable definition specified elsewhere.
|
| Stef
|
Reply | Threaded
Open this post in threaded view
|

Re: question about version blessing: argument

stephane ducasse-2
Thanks I will digest and add that to the chapter.


On Jan 3, 2012, at 8:38 PM, Dale Henrichs wrote:

> Stef,
>
> As a blessing, #development has two effects:
>
>  - versions with #development blessing are excluded from
>     the #latestVersion calculation
>  - before loading a project version with a #development
>    blessing, the configuration of the project is refreshed
>    from the repository (automatic #updateProject)
>
> The blessing #broken means that the version should be ignored.
>
> The blessing #baseline identifies the baseline version.
>
> The blessing #release is the default blessing if no other blessing is specified. Keep in mind that the blessing is inherited from the baseline, which means that if you don't specify a blessing in a version then the version will inherit the #baseline blessing from it's baseline and look like a baseline as well.
>
> As Mariano points out, any symbol may be used as a blessing. I recommend that one always specifies a blessing for a version (#development, #release, #broken) to differentiate the version from a baseline version.
>
> From a convention perspective, a #development blessing means that the version is under construction and may change at any moment. A version with a #release blessing means that it will never be changed again and can be safely used.
>
> The MetacelloToolBox operations enforces the above conventions:
>
>  - an error is thrown if you attempt to programmatically modify
>    a version with a #release blessing
>
> A number of the helper methods in the MetacelloToolBox API uses the blessing to identify the "current development version" and "latest release".
>
> Dale
>
> ----- Original Message -----
> | From: "stephane ducasse" <[hidden email]>
> | To: [hidden email]
> | Sent: Saturday, December 31, 2011 1:49:22 AM
> | Subject: [Metacello] question about version blessing: argument
> |
> |
> |
> | in a version what is the difference between
> |
> | version100: spec
> | <version: '1.0' imports: #('1.0-baseline') >
> |
> | spec for: #common do: [
> | spec blessing: #release.
> | spec
> | package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
> |
> | and
> |
> | version100: spec
> | <version: '1.0' imports: #('1.0-baseline') >
> |
> | spec for: #common do: [
> | spec blessing: #development.
> | spec
> | package: 'XML-Parser' with: 'XML-Parser-Alexandre_Bergel.20']
> |
> |
> | Because here when I load a version I say that I want number 20 and
> | not other.
> |
> | What is the impact on stable definition specified elsewhere.
> |
> | Stef
> |