<div dir="ltr"><div>Hi everyone,</div><div dir="ltr"><br></div><div dir="ltr">Oh, another dependency management facility. Is this specific to Monticello repositories or can it install from other sources as well? I am wondering whether or not much of this code rather belongs in InstallerMonticello.</div><div dir="ltr"><br></div><div>It seems unclear to me where you are supposed to maintain your project's dependency tree with this one. In Squeak trunk or in your project's repository? Unless your project's dependency tree listing is admitted into trunk, you need your own Installer subclass or extension and make sure to have it loaded before loading the actual project. Similar to loading the latest Metacello before being able to use the Metacello install snippets from GitHub projects.</div><div><br></div><div>On the positive side, this code in Installer is arguably easier to understand than the one in Metacello.<br></div><div dir="ltr"><div><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Sa., 31. Aug. 2019 um 23:43 Uhr schrieb Chris Muller <<a href="mailto:asqueaker@gmail.com" target="_blank">asqueaker@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Sat, Aug 31, 2019 at 12:30 PM tim Rowledge <<a href="mailto:tim@rowledge.org" target="_blank">tim@rowledge.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It's a whole parallel set of ways to load packages that wasn't mentioned in the pbwiki doc I was originally looking at and stealing from. It means of course, another tranche of stuff to try to describe ;-)<br>
<br>
Take a look at, for example, <br>
`Installer new merge: #osProcess`<br>
<br>
a) I'd say adding a class side #merge: to avoid the #new is worth it<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">b) way easier to tell someone to use than the whole open monticello, find the repository, click on... etc etc<br>
c) possibly easier to describe even than <br>
`Installer ss package: 'OSProcess'; install`<br>
and its relatives, since you don't need to know where packages live once they are specified. </blockquote><div><br></div><div>Yes, I like and use it too.</div></div></div></blockquote><div><br></div><div>From the author timestamps it also looks like you wrote it, Chris.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
d) it does make another place that needs checking as part of release to make sure the package definitions are up to date etc<br></blockquote><div><br></div><div>Not as part of the release process, but simply regular development of the packages affected by new dependency requirements.  These are logical package hierarchies (i.e., just the names and repositories, no notion of physical "versions" anywhere), so its only when a developer enhances a package to suddenly need an all-new dependent that they would update its package-definition in Installer.</div></div></div></blockquote><div><br></div><div>It seems to offer at least in part what Metacello does with its baselines (dependency names and locations), but omits its configurations (stating versions of the packages). If the dependency versions cannot be locked down, things might break in the future if dependencies change in a backwards-incompatible manner. Can the versions be pinned?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> I have read the swiki page (<a href="http://wiki.squeak.org/squeak/6366" rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/6366</a>) but honestly it's just too succinct to  work for me. More explanation would certainly help!<br></blockquote><div><br></div><div>I just looked at it and it seems to all be there -- perhaps as the author it's hard for me to understand which parts need more explanation.  A lot of things which express a somewhat complex concept require more than one reading...</div></div></div></blockquote><div><br></div><div>As a developer and knowing Monticello I think I understood what is written on that page.</div><div>@tim: What specifically did you miss or not understand?<br></div><div>@Chris: May I suggest you put your name in the example section ("Seamless partition ...") on that page? Because now the text reads "I", but without knowing that the things prefixed with Ma are yours, one does not know who "I" is.</div><div><br></div><div>The sudden switch from Installer to MyInstaller, without first defining what the latter is or where it comes from, is a little confusing though.</div><div><br></div><div>Facilities like <span style="color:rgb(0,0,0)">copyLocalVersionsToRemoteFor:... don't belong into a class called "Installer" IMHO. This is rather a Monticello utility.</span></div><div><span style="color:rgb(0,0,0)"><br></span></div><div>In which cases would you suggest that newcomers use this mechanism for their project? What are the use cases, compared to Metacello, or SqueakMap, since the wiki page claims that "It is not intended to replace any [of them]"?</div><div><br></div><div>Kind regards,</div><div>Jakob</div></div></div>