[squeak-dev] MC Configurations feature request

Robert robert.withers at pm.me
Mon Jun 8 18:02:50 UTC 2020

The class name BaselineaofMagicMouse is constructed from #baseline: ‘MagicMouse’ and furthermore a project by that name is expected. This is what I meant by auto-constructed.

I have recently been able to #ensureLatestMetacello, but I still cannot load MagicMouse. *shrugs*

I would wish Monticello would have a Baseline object/class in the preamble of a Monticello packagetodescribe load steps to get all dependencies👁 Then it would have more of a build role. I do realize my mvm file is an artifact also separate from the packages but I can name it what I want and pull packages.

I will take another look at Metacello. What would a Baseline for all of Crypto look like 👀?


On Sun, Jun 7, 2020 at 17:52, Jakob Reschke <forums.jakob at resfarm.de> wrote:

> Hi Robert,
> Have you tried Metacello recently? The BaselineOf subclass for a
> project is very much like the POM in a Maven project or a Gradle file
> (whose presence is also required for these kinds of projects). The
> Metacello baseline declares which packages belong to this project, and
> the dependencies and where they are coming from. It is not
> "auto-constructed" as you put it, you write this specification
> yourself. And it is declarative, just like Maven or Gradle files
> (well, the latter can be turned into imperative style as well AFAIK).
> I don't know what is not "first-class" about it as a
> bill-of-materials. Put the BaselineOf subclass of the project in a git
> repository and you are all set -- in a Git repository you don't even
> need the ConfigurationOf part (because a commit usually is exactly one
> configuration of your project). The baseline can also declare
> conditional loading, to load different parts for different Smalltalk
> vendors (Squeak, Pharo, ...).
> Metacello has most of the features you asked for, except controlling
> external tools (gcc, etc.). But you should rather use external tools
> for that (like CMake, Gradle, ...). You can call them from Squeak via
> OSProcess if you like. Metacello is not really a build system because
> since when have we needed "builds" in a running Smalltalk environment?
> It is rather a package manager, like apt. SmalltalkCI [1] is somewhat
> of a build system, and it uses Metacello to load packages and their
> dependencies into fresh images, in the usual setups.
> Why reinvent the wheel?
> What's missing in comparison to the Maven/Gradle world is one or more
> central repositories to discover Metacello configurations/baselines,
> so you could omit the Internet locations of dependencies in your own
> projects. But you wouldn't automatically get that with extended
> Monticello configurations either. For the older Metacello there is
> something like this on SqueakSource already, but since it is
> Monticello-based, it is not so appealing for Git-oriented projects,
> and consequently Pharo.
> I suggest you try Metacello, it is not so bad [2][3]. Its own code is
> hard to follow, but not the descriptions you write for your own
> projects.
> [1] https://github.com/hpi-swa/smalltalkCI
> [2] http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/Metacello.pdf
> (applies to Squeak equally well)
> [3] https://github.com/Metacello/metacello/blob/master/docs/GettingStartedWithGitHub.md#create-baseline
> Kind regards,
> Jakob
> Am So., 7. Juni 2020 um 20:24 Uhr schrieb Robert Withers via
> Squeak-dev <squeak-dev at lists.squeakfoundation.org>:
>> On 6/7/20 2:17 PM, Robert Withers wrote:
>> > I am not sure I can express myself effectively, as I don't just want to
>> > say yuck and carry on. I owe an explanation of my opinion. I strongly
>> > dislike the auto-construction of #baselineOf and #configurationOf
>> > methods and their required presence.
>> > We should have repositories of
>> > artifacts, like maven repos, and dependency specification in a build declaration script.
>> > Call it a .sqm for Smalltalk Qualification Module. This has the protocol
>> > of the new Smalltalk-based Gradle.
>> Each projects .sqm file is in the git root directory for that project,
>> exactly as the POM is for Maven. Andso, it si under git control. As the
>> POM is specified as the fundamental unit of work, so the SQM file for
>> Straddle.
>> Straddle is the Smalltalk analog to Gradle, which helps teams build,
>> automate and deliver better software, faster. From the inside of an
>> image. Browse Straddle config file (SQM).
>> Just wanted to clarify a little bit.
>> K, rabbit
>> >
>> > Kindly,
>> > Rabbit
>> >
>> > [1] Gradle - https://gradle.org/
>> >
>> >> Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200608/fe416bcf/attachment.html>

More information about the Squeak-dev mailing list