This link may interest you command line people , it basically what I proposed as an idea early on
https://github.com/guillep/Scale On Sat, 22 Oct 2016 at 13:20, Dimitris Chloupis <[hidden email]> wrote: I was replying to Thierry saying that we had issues with Pharo mixing metarepo6 with metarepo5 |
In reply to this post by Dale Henrichs-3
Dale,
I don't care which way it is. I took the freedom to take metacello as granted and didn't see the need to adjust my way of doing until now. It is quite handy to have a few parts in your workflow that are not moving. And I didn't know until now that there is an old and a new way. If Cyril is right and the commandline handler is using the "new way" then my complaint is as wrong as annoying. But that would be the perfect case that it changed without infecting me. Well, it is just the case that using the pharo commandline handler does not work while eval plus the new way works. So if I didn't do something wrong we should remove the handler for configurations. And as I said I was so happy having Versionner and now it is more or less useless. Well, I think others might do it the same way by managing their dependencies with Versionner and then copy the baseline method into the baseline class. Awkward, annoying and the best I can imagine. I'm sorry if you meant my complaint includes you. No, there are a few people that I would need to exclude from my complaint explicitly. But that is not possible without punching everyone else in the face :) I like the way you handle things. And I know you enjoy getting annoying questions from people like me. Yes, but you know … things are moving and the "new way" is so "first half of 2016" because now we have iceberg which makes the situation potentially better but actually more complicated (you see ;) ). Loading projects do not anymore depend on a tool like metacello that loads but also on the kind of repository is created for all the projects inside of metacello. I'm nagging Nico to establish a workflow where I can checkout a git repo, load my project using metacello and then can use iceberg to management my development. But that is a problem we need to tackle anyway. In my metacello baseline I have spec repository: '<a href="filetree://repository/" class="">filetree://repository/'. to load my code from a sub-directory of that git working copy. That's ok but if I like to develop on that project I would need gitfiletree or iceberg to do that in image. So while for loading the project the filetree scheme based url is ok for doing actually work it is not. And I'm not sure where is the right place to put it. I could also imaging that I can instruct metacello to create the right kind of repository. That's good and will try that.
Norbert |
In reply to this post by kilon.alios
yes, Santi is working a lot on it so I think they are going to release it very soon :) Esteban
|
In reply to this post by Aliaksei Syrel
2016-10-22 11:55 GMT+02:00 Aliaksei Syrel <[hidden email]>: Yes, this is what I thought about.
|
In reply to this post by philippeback
On 10/22/16 12:04 AM,
[hidden email] wrote:
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]:
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 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- [2] https://github.com/dalehenrich/Tugrik#create-tugrik-stone-and-client [3] https://github.com/GsDevKit/GsDevKit_home/blob/gh-pages/Tugrik.ston [4] https://github.com/hpi-swa/smalltalkCI#smalltalkci--- [5] https://github.com/dalehenrich/Tugrik/blob/master/.smalltalk.ston |
In reply to this post by philippeback
On 10/22/16 12:08 AM, [hidden email] wrote: > Dale, > > I looked at the docs but it was kind of a hunt as they were a bit kind > of everywhere.\ > > * Book chapters (Pharo). This including preversions with more info > than the published one > * Google code wiki pages > * Github > * Other but can't even remember > > Is there an official place for all things Metacello? poor writer I really have never figured out how to organize documentation --- which should be obvious by now ... I suppose I should take 6 months or a year off to learn how to write/organize good documentation but there's just "one more bug that I need to fix, before I do that"... With that said, I have never turned down a pull request to the github repo. Dale |
In reply to this post by kilon.alios
On 10/22/16 12:52 AM, Dimitris Chloupis
wrote:
For GsDevKit_home, I have a projects directory[1] where I store TDProjectSpecEntryDefinitions ... which are the moral equivalent of each of your `Metacello new` lines in the script ... By putting a Metacello load "spec" in an object, it is easier to customize the build of an image, than it is to edit and manage a smalltalk script. For example in tODE here are the commands that would be used to construct your image (the name of the project refers to the names the .ston objects in the projects directory: project load IconFactory project load ChronosManager project load Nireas project load Ephestos With scripts based on something like this, it is easy to change all of the load scripts sharing the load specs (TDProjectSpecEntryDefinitions) by editing the .ston file on disk ... all builds going forward would pick up the new specification ... Dale [1] https://github.com/GsDevKit/GsDevKit_home/tree/master/sys/default/server/projects
|
In reply to this post by EstebanLM
On 10/22/16 3:09 AM, Esteban Lorenzano
wrote:
Esteban, I really think that the catalog could benefit by a first class objects like the TDProjectEntry and MetacelloProjectLoadSpec ... these would be objects directly created and maintained by the project developers themselves. The objects would be used for custom build scripts, smalltalkCI builds, catalog loads, etc. ... oh and if it was a Metacello class, it would be usable cross platform (Squeak, Pharo, GemStone, etc.) As a coincidence, I have been planning on talking on this subject at the upcoming Smalltalks conference ... The working title for the talk is "Dangerous Liaisons: Smalltalk, Files and Git" ... Dale |
In reply to this post by Dale Henrichs-3
I really like STON , even more than I like JSON. Very readable and easy to edit format. Very good idea, I would probably something similar but less more elegant. You probably know this, but if you host the ston configurations files as you do in that link , Github gives you the ability to directly read files from inside a git repo without having to download it via its blob directory. So one could keep those ston config files in a repo in git and have access to it from any computer , any OS, of course under the condition he/she is connected to internet. This trick is what I used for checking whether there is a new version of my project ChronosManager in my git repo. I added the latest version in the RELEASENOTES text file that is located on the top level repo which it compares with its internal versions (just a class variable) and if it finds it bigger it alerts the user for an update. Top version is marked X because is not yet a stable release. This way the project wont download it. On Sat, Oct 22, 2016 at 4:35 PM Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by Dale Henrichs-3
Configurations in MetaRepo are supposed to be maintained and uploaded by developers anyway. Its a public repo with no requirement for access to write and read. Unless your solution offers an advantage I cant see. On Sat, Oct 22, 2016 at 4:51 PM Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by NorbertHartl
Norbert, On 10/22/16 3:56 AM, Norbert Hartl
wrote:
Dale,I do not take it personally ... and I agree with you completely, there is great value in "well-tempered crankiness" Yes, Metacello tools have been a great sticking point ... I decided early on that I could not afford to get involved in creating and maintaining GUI tools (for three platforms) not only because I don't have the time, but because creating GUI tools is one of those thankless jobs:) Not to mention that it is incredibly difficult to put together a comprehensive and complete GUI tool. I think that the original reason that Versionner did not handle BaselineOf is that support for BaselineOf was missing from the MetacelloToolBox ... I have since added BaselineOf support to MetacelloToolBox, but of course the developer of Versionner is most likely busy with something else ... With the MetacelloToolBox support for BaselineOf an enterprising individual should be able to add BaselineOf support to Versionner:) As I said, I appreciate "well-tempered crankiness" as it keeps me honest:) But crankiness begets crankiness and I apologize for going over the top in my response as well:) Yeah, I really think that when working with git repos that the tools need to de-emphasize packages and instead focus on the fact that there is a one-to-one correspondence between a github project and a Metacello project. In the following screen shot from tODE, each line represents a Metacello project and I can save, diff and load without ever looking at a package: As I mentioned in another email this morning I will be talking about this approach in more detail in my talk with the working title "Dangerous Liaisons: Smalltalk, Files, and Git" ... I think that you need to look into Metacello locks[1]. You use a lock, to associate a Metacello project with a repository that may be different that that specified in a baselineof. This feature was specifically invented to make it possible to create a BaselineOf that references the official download location like: `gitfiletree://github.com/dalehenrich/metacello-work:master/repository` but then in my working image, lock the project to point at the filetree directory on my local disk ... If you've seen my comments about TDProjectSpecEntryDefinition and MetacelloProjectLoadSpecs there is a `locked` field[2] that is meant to allow you to specify that the repository location in the TDProjectSpecEntryDefinition should be locked. At this point it is also important to note that you can lock unloaded projects ... [1] https://github.com/dalehenrich/metacello-work/blob/master/docs/LockCommandReference.md#lock-command-reference [2] https://github.com/GsDevKit/GsDevKit_home/blob/gh-pages/Metacello.ston#L10
haha ... "well-tempered crankiness" my friend, "well-tempered crankiness" Dale |
In reply to this post by EstebanLM
Isn't that something complementary to pharo. Why have the tools a different name??? I think pharo should be usable as scripting engine. And that means files should begin with #! /usr/bin/env pharo Norbert
|
In reply to this post by kilon.alios
On 10/22/16 7:01 AM, Dimitris Chloupis wrote: > I really like STON , even more than I like JSON. Very readable and > easy to edit format. Very good idea, I would probably something > similar but less more elegant. This is why I'm threatening to create MetacelloProjectLoadSpec ... not to be elegant but to save you the work of creating such a beast on your own ... I really think there can be great advantages to have a sharable and customizable load spec object ... > > You probably know this, but if you host the ston configurations files > as you do in that link , Github gives you the ability to directly read > files from inside a git repo without having to download it via its > blob directory. So one could keep those ston config files in a repo in > git and have access to it from any computer , any OS, of course under > the condition he/she is connected to internet. I have collected a number of the TDProjectEntry objects up on the GsDevKit_home project on the gh-pages branch and I a variant of the load command that works with an url: project load --url=http://gsdevkit.github.io/GsDevKit_home/Metacello.ston That directly downloads form web ... I put things on disk, so that the developer can download the official object to a known location on disk and then edit/customize the object for her own use. Then build scripts will use the object from the directory by default and each image shares the same custom load specification object. [1] https://github.com/GsDevKit/GsDevKit_home/tree/gh-pages > > This trick is what I used for checking whether there is a new version > of my project ChronosManager in my git repo. I added the latest > version in the RELEASENOTES text file that is located on the top level > repo which it compares with its internal versions (just a class > variable) and if it finds it bigger it alerts the user for an update. > > https://raw.githubusercontent.com/kilon/ChronosManager/master/RELEASENOTES.md Ah yes, it would be much more convenient to get the load specification object directly from the project itself ... Dale |
In reply to this post by kilon.alios
On 10/22/16 7:03 AM, Dimitris Chloupis
wrote:
ConfigurationOfs are "obsolete" ... github projects use BaselineOf and the BaselineOf is not portable. The BaselineOf is meant to be loaded from the repository that it manages ... The catalog browser uses the ConfigurationOf to get meta-data about the project and then uses the ConfigurationOf to load the project and at the moment for a github project to be listed in the catalog one must create a ConfigurationOf whose sole purpose is to provide meta data to the catalog. A MetacelloProjectLoadSpec would provide the portability that a BaselineOf lacks, while providing the necessary meta data and maintaining the loadability of a ConfigurationOf. Finally, a MetacellProjectLoadSpec is useful for more than just the Pharo catalog. The same object could be used to load projects in Squeak and GemStone and as I have mentioned in the previous email could be a component of local build scripts as well .. So yes I think that there are additional advantages:) Dale
|
In reply to this post by kilon.alios
The st command line handler is pretty much giving the same. I used scale, it works nicely indeed. But I want Coral reborn. Phil On Sat, Oct 22, 2016 at 12:41 PM, Dimitris Chloupis <[hidden email]> wrote: This link may interest you command line people , it basically what I proposed as an idea early on |
In reply to this post by Dale Henrichs-3
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", }], "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 <[hidden email]>" ], "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 <[hidden email]> wrote:
|
In reply to this post by Dale Henrichs-3
Ok, message received. PRs launching. On Sat, Oct 22, 2016 at 3:23 PM, Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by Dale Henrichs-3
CatalogProvider projectNamed: 'QuickAccess' is doing that already. Or I am mistaken? Phil On Sat, Oct 22, 2016 at 3:50 PM, Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by Dale Henrichs-3
Ah ok I see you mean you want a cleaner to do this, I agree, it can be improved.
On Sat, Oct 22, 2016 at 5:51 PM Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by NorbertHartl
yes, I also suggested them to follow this direction… Esteban
|
Free forum by Nabble | Edit this page |