I wholeheartedly agree that Smalltalk is not desirable as a specification language ... I included the Smalltalk expression as an example of the type of information I am using in tODE (when I make another pass through tODE I will switch from smalltalk to STON) ...

So moving forward I think a STON-based project load spec is preferable. See my reply to Esteban for an example of the types of information that I imagine would be included in a project load spec. Looking closely at the below, I think including the license is a good idea...

Now it seems to me that both`compose install` and `bower install` don't do much more that automatic `git clone` ... is that right?

I have toyed with the idea that a BaselineOf could be represented as a STON file (or XML file), but right now I tend to think that there isn't much difference in the readability/simplicity between Smalltalk and STON ... STON might be a bit more sparse, but without a tool for writing STON files (syntax validation and automatic saving ... to disk????) so I will stick with Smalltalk for the foreseeable future:)

Dale

On 10/22/16 8:29 AM, p...@highoctane.be wrote:
Looks like we are on the same wavelength but...

Look how this is done in PHP with Composer:

- simple Json file
- declares repositories
- requires and requiresdev
- uses semver versions

so, 'composer install' will fetch and install deps.

composer update will update deps.

composer.json
{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/";,
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/RobLoach/firephp-core";
        }],
    "require": {
        "php": ">=5.5",
        "zendframework/zendframework": "~2.5",
        "zendframework/zftool": "dev-master",
        "firephp/firephp-core": "dev-master",
        "videlalvaro/php-amqplib": "^2.5"
    },
    "require-dev": {
        "snapshotpl/zf-snap-event-debugger": "1.*",
        "zendframework/zend-developer-tools": "dev-master",
        "phpunit/phpunit": "4.8.*"
    }
}

In the JS Ecosystem, eg. bower.json

{
  "name": "adsdaq",
  "homepage": "https://github.com/anais-it/adsdaq";,
  "authors": [
    "Philippe Back <p...@highoctane.be <mailto:p...@highoctane.be>>"
  ],
  "description": "adsdaq-frontend",
  "main": "",
  "moduleType": [],
  "license": "Adlogix",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "vendor/bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "angular": "~1.4.7",
    "restangular": "~1.5.1",
    "lodash": "~3.10.1",
    "angular-route": "~1.4.7",
    "angular-spinner": "~0.8.0",
    "angular-bootstrap": "~0.14.3",
    "typeahead.js": "~0.11.1"
  }
}


So, basic module names in deps and semver.

The st code you show is more cryptic.

Is there a sweet spot ?

Ston is a great format and is Json compatible if we are careful (meaning I can actually use vim and json syntax checkers plugins)

St code is indeed more powerful but it leaves a lot of people in the dust with configurations.

What do you think?

Phil




On Sat, Oct 22, 2016 at 3:17 PM, Dale Henrichs <dale.henri...@gemtalksystems.com <mailto:dale.henri...@gemtalksystems.com>> wrote:



    On 10/22/16 12:04 AM, p...@highoctane.be
    <mailto:p...@highoctane.be> wrote:
    We need some easy to use gem-style installer on the command line.
    Phil,

    Since I am not really familiar with ruby, I'm not sure what you
    mean by "gem-style installer on the command line"?

    Depending upon what you mean, I think I agree:)

    For GsDevKit_home[1], I have arranged for bash scripts that can be
    used for building both stones and clients for GemStone. Here are
    the example scripts for Tugrik[2]:

    |# Create Tugrik stone createStone -u
    http://gsdevkit.github.io/GsDevKit_home/Tugrik.ston
    <http://gsdevkit.github.io/GsDevKit_home/Tugrik.ston> -i Tugrik -l
    Tugrik Tugrik 3.3.0 # Create Tugrik Pharo5.0 client createClient
    -t pharo tugrik -l -v Pharo5.0 -z
    $GS_HOME/shared/repos/Tugrik/.smalltalk.ston|

    The Tugrik.ston file is a tODE object looks like the following[1]
    when materialized (basically a Metacello load script with
additional info): ^ TDProjectSpecEntryDefinition new baseline: 'Tugrik' repository:
    'github://dalehenrich/Tugrik:master/repository'       loads:
    #('default');     installScript: '       project install --local
    --url=http://gsdevkit.github.io/GsDevKit_home/MongoTalk.ston
<http://gsdevkit.github.io/GsDevKit_home/MongoTalk.ston> project clone --https --local Tugrik'; postLoadScript: 'mount
    @/sys/stone/dirs/Tugrik/gsdevkit/tode /home tugrik';     status:
    #(#'inactive');     locked: false;     yourself Their are fields
    for comments and a project url as well ... obviously other fields
    are possible ... the cool thing about this is that is a
    specification for a load rather than a Smalltalk load expression
    ... which means the repository can easily be re-targetted or the
    loads list changed, etc. Since Pharo doesn't have tODE:), I
    leverage the SmalltalkCI[4] configuration file for Tugrik[5],
which looks like this: SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { #baseline : 'Tugrik', #load : [
    'CI' ],       #onWarningLog : true,       #directory :
    'repository',       #platforms : [ #gemstone, #pharo ]     }   ],
#configuring : [ SCIGemStoneServerConfigSpec { #defaultSessionName : 'Tugrik', #platforms : [
    #gemstoneClient ]     }   ]  } Very similar information, but has
    the advantage of being usable in GemStone, Squeak and Pharo ... I
    have an option for creating stones using a SmalltalkCI
    configuration file as well ... I've been thinking that I could add
    a MetacelloProjectLoadSpecification class to Metacello that is
    meant to be passed around as an object in STON format that
    combines the good bits of the TDProjectSpecEntryDefinition with
    the good bits of the SCIMetacelloLoadSpec and be available in
    GemStone, Pharo and Squeak ... then you'd just send #load to the
    object to trigger the install ... Is there anything in the
    "gem-style installer on the command line"that I'm missing? Am I
    completely off-base? Dale [1]
    
https://github.com/GsDevKit/GsDevKit_home#open-source-development-kit-for-gemstones-64-bit
    
<https://github.com/GsDevKit/GsDevKit_home#open-source-development-kit-for-gemstones-64-bit>-
    [2]
    https://github.com/dalehenrich/Tugrik#create-tugrik-stone-and-client
    <https://github.com/dalehenrich/Tugrik#create-tugrik-stone-and-client>
    [3]
    https://github.com/GsDevKit/GsDevKit_home/blob/gh-pages/Tugrik.ston
    <https://github.com/GsDevKit/GsDevKit_home/blob/gh-pages/Tugrik.ston>
    [4] https://github.com/hpi-swa/smalltalkCI#smalltalkci
    <https://github.com/hpi-swa/smalltalkCI#smalltalkci>--- [5]
    https://github.com/dalehenrich/Tugrik/blob/master/.smalltalk.ston
    <https://github.com/dalehenrich/Tugrik/blob/master/.smalltalk.ston>

Reply via email to