<div dir="auto">Juan, thanks for doing this, it will make it much easier for people to try Cuis or any of our projects in Cuis. I didn’t test the experiments yet, I’ll test it today and see if I have any comments. Right now I just want to agree with Gerald that UserPrefs.txt seems to need some more thought. The name of the file could be better, but I’m not even sure we really need a configuration file, perhaps we could use a startup script for forcing preferences on any image loaded instead of a configuration file.</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 22, 2023 at 16:44 Gerald Klix via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Hi Juan,<br>
<br>
still one hour left to answer your mail.<br>
<br>
I discovered that Cuis now automatically creates a UserPrefs.txt<br>
file. I am not sure whether this is really clever.<br>
I faintly remember some support cases, where you directed<br>
users to delete that file, because their changes where not persisted<br>
in their images. Now it is persistent, but all images use the same settings.<br>
Users accustomed to the old behavior will be baffled.<br>
<br>
Please don't get me wrong, personally I can live with that change,<br>
but it's just another feature that needs to be documented, explained<br>
and supported (by answering questions).<br>
<br>
Please see below for my answers.<br>
<br>
<br>
On 12/21/23 10:22 PM, Juan Vuletich wrote:<br>
> Hi Gerald<br>
><br>
> (inline)<br>
><br>
> On 12/21/2023 5:20 PM, Gerald Klix via Cuis-dev wrote:<br>
>> Hi Juan,<br>
>><br>
>> please see below.<br>
>><br>
>> On 12/21/23 3:03 PM, Juan Vuletich wrote:<br>
>>> Hi Gerald,<br>
>>><br>
>>> On 12/21/2023 9:04 AM, Gerald Klix via Cuis-dev wrote:<br>
>>>><br>
>>>> Hi Juan,<br>
>>>><br>
>>>> works nicely as long as one does not want to pass arguments<br>
>>>> to the image itself. Obviously the RunCuisOnLinux.sh script does<br>
>>>> not account for this case.<br>
>>><br>
>>> With this new folder structure and included VMs, the goal is to ease <br>
>>> the experience for new and casual users, while giving experienced <br>
>>> users the flexibility they need to set up the environment(s) that <br>
>>> works best for them.<br>
>>><br>
>>> The Linux script (copied from Squeak) is already complex enough... <br>
>>> Advanced users will be happy to cook their own, I hope.<br>
>> Fair enough. The script needs bash and sudo; it should be replaced by <br>
>> something simpler.<br>
>> Maybe a simple image, like your hello world demo, that starts the <br>
>> actual image is better.<br>
>> This approach would be a clear case of eat your own dog-food ;-}<br>
>> (<a href="https://lists.cuis.st/mailman/archives/cuis-dev/2023-October/008099.html" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/archives/cuis-dev/2023-October/008099.html</a>) <br>
>><br>
><br>
> I don't see the need for an "official" way to do that. Expert users <br>
> can set up their environment as they prefer. In other words, that's a <br>
> nice idea, but doesn't need to be part of the Cuis core. More like a <br>
> community developed optional feature / workflow. We'd need to be sure <br>
> that Base Cuis supports those developments, by making them possible.<br>
IHMO it will make sense for non version controlled Cuis distributions, <br>
like CuisUniversity or Haver.<br>
><br>
>><br>
>>><br>
>>>> I suggest that something like this:<br>
>>>> ./RunCuisOnLinux.sh -- -r <br>
>>>> ~/smallworks/cuis/Environments/HaverOnCuis/haver/<a href="http://Haverize.pck.st" rel="noreferrer" target="_blank">Haverize.pck.st</a><br>
>>>> should do the job. Other solutions will lead to the incorporation<br>
>>>> of knowledge about the valid image option names into<br>
>>>> the script.<br>
>>>><br>
>>>> I still have problems creating a Haver image with Cuis 6.1, but <br>
>>>> this might<br>
>>>> be due to the fact, that I did not adopt Haver to your latest<br>
>>>> Cuis 6.0 changes.<br>
>>>><br>
>>>> Where in your structure should other Cuis packages and third-party<br>
>>>> packages be stored?<br>
>>><br>
>>> They should go (as usual) in directories that are siblings of the <br>
>>> main Cuis directory and repo, and subdirectories of a main Project <br>
>>> directory, like we suggest in the GettingStarted.md file.<br>
>> I would love to have the Cuis checkout separated from my project. <br>
>> Additionally It should<br>
>> be possible to reuse the checkout for more than one project.<br>
><br>
> Some people already asked for handling more than one Cuis folders <br>
> (including image, etc) for one project. Others, like you want the <br>
> opposite: use a single Cuis folder for several projects. So we need a <br>
> way to support these different scenarios. (see below)<br>
For Unix, it should be easy to distribute a shell script that creates <br>
symlinks to all of the repos<br>
in an the current directory. I don't see a portable solution for windows.<br>
><br>
>>><br>
>>>> I suggest a solution similar to the directory structure of an<br>
>>>> unpacked Haver release zip file.<br>
>>>> For reference purposes I attached a directory listing<br>
>>>> of an unpacked Haver distribution. Please note<br>
>>>> that this distribution is machine/OS and byte-size specific.<br>
>>>><br>
>>>><br>
>>>> Keep up the good work and Best Regards,<br>
>>>><br>
>>>> Gerald<br>
>>><br>
>>> I'm not sure about the advantages over what we've been suggesting <br>
>>> users to do, in GettingStarted.md. Could you elaborate?<br>
>> The main advantage is that all packages that are loadable are beneath <br>
>> on sub-directory;<br>
>> easy to search, easy to find for new users and easy to fill with some <br>
>> scripted git clone invocations.<br>
>> With this scheme there is need to climb up the directory hierarchy <br>
>> while searching for packages.<br>
>> Especially the caveat from the getting started document<br>
><br>
> One point to have in mind is that inside the Cuis repo directory, no <br>
> files from other repos should be stored. The reason is that most users <br>
> would no longer know what is part of the Cuis distribution and what is <br>
> not.<br>
I forgot about that point, because I created a bunch of symlinks to the <br>
git repos in the parent directory<br>
of Haver's development directory.<br>
<br>
I also became aware, that I am looking at this layout from a different <br>
perspective:<br>
I am thinking of distribution contained in a ZIP-file, without any <br>
version controlled files.<br>
So yes, If you want to distribute this using git, not polluting the repo <br>
with user files<br>
makes perfect sense.<br>
><br>
>><br>
>> "Note: Please do create a new folder, and don't use an existing one. <br>
>> Cuis looks for packages to load in sibling folders to <br>
>> Cuis-Smalltalk-Dev, and using an existing folder could mean trying to <br>
>> load conflicting, outdated versions of packages. Keeping each Cuis <br>
>> project in a separate folder is an easy way to avoid such problems."<br>
>><br>
>> would be mote. IHMO this change will simplify the users' and your life.<br>
>> BTW: AFAIR the package downloader already uses a single directory for <br>
>> downloaded packages.<br>
>><br>
><br>
> What follows is very new, and not yet documented:<br>
><br>
> #userBaseDirectory: Directory for user generated files.<br>
> #cuisBaseDirectory: Usually repo. Common parent of <br>
> #smalltalkImageDirectory, CoreUpdates/ and Packages/.<br>
> #projectBaseDirectory: #cuisBaseDirectory parent.<br>
><br>
> #userBaseDirectory is configurable via commandline:<br>
><br>
> No additional argument<br>
> DirectoryEntry userBaseDirectory. <br>
> /Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev-UserFiles .<br>
><br>
> -udIsBase<br>
> DirectoryEntry userBaseDirectory. <br>
> /Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev .<br>
><br>
> -ud ZZZZ<br>
> DirectoryEntry userBaseDirectory. <br>
> /Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev/ZZZZ .<br>
><br>
> -ud ../ZZZZ<br>
> DirectoryEntry userBaseDirectory. <br>
> /Users/juanvuletich/Cuis-Smalltalk/ZZZZ .<br>
><br>
> -ud /Users/juanvuletich/ZZZZ<br>
> DirectoryEntry userBaseDirectory. /Users/juanvuletich/ZZZZ .<br>
><br>
> Packages are looked for in the #projectBaseDirectory. Perhaps we could <br>
> make this configurable via cmdline argument too.<br>
I have seen some of these changes in Cuis 6.0, AFAIR I had to adapt <br>
Haver's image saving code to it.<br>
I will look into this after my holiday.<br>
I should adapt Haver's persistent stuff, like persistent workspaces, to<br>
use DirectoryEntry>>#userBaseDirectory for it's OODB files.<br>
<br>
One side issue: Is there any way to move UnicodeData.txt away from the <br>
image directory?<br>
Users may be tempted to clean up their image directory and delete non <br>
image/changes stuff,<br>
with rather disastrous results. (After some hair-tearing I created a <br>
symlink to this file in Cuis' repo,<br>
to make Cuis work again in Haver's project directory)<br>
<br>
><br>
>><br>
>> While I am already nitpicking:<br>
>> Some of the directory names you choose are not ideal (from a Linux <br>
>> standpoint)<br>
>><br>
>> CoreUpdates:<br>
>> Should be CuisCoreUpdates; it's highly Cuis specific. I am aware that <br>
>> this directory is hard-coded in the image.<br>
><br>
> Everything inside the Cuis repo == #cuisBaseDirectory is highly <br>
> specific! I don't think we'd prefix every Cuis file with 'Cuis'. What <br>
> do others think?<br>
Yes of course. Haver's distribution does not use prefixes. That is OK <br>
for me (as I said, this is nitpicking (on a high level))<br>
><br>
>><br>
>> CuisVM.app:<br>
>> Should be OpenSmalltalkVM.app. I am aware that that a shorter<br>
>> MacOS application name is beneficial. Nevertheless this VM will also <br>
>> run squeak images.<br>
><br>
> That is true, but this is intended to be a Cuis distribution. For <br>
> instance, I integrated both the Mac ARM and the Mac Intel into a <br>
> single .app file, that in its Info.plist file points to <br>
> CuisImage/Cuis6.1.image. I also integrated LinuxX64 and WindowsX64 VMs <br>
> in there. And I have only tested all this with Cuis. So, if people <br>
> wants to use parts for something else, they are more than welcome to <br>
> do so, under their own responsibility.<br>
><br>
> Additionally, this is the file Mac users will start. The three startup <br>
> files, 'CuisVM.app', 'RunCuisInLinux.sh' and 'RunCuisInWindows' are <br>
> the only three that really need 'Cuis' as part of the name, as we want <br>
> novice users to easily know that they need to run one of them<br>
Now that I have slept over this, I think it comes in handy<br>
for Haver. As mentioned in various mails, I modified OSVM's Linux version<br>
to handle additional mouse-buttons and some other things.<br>
<br>
I will distribute my VM version as HaverVM.app, using<br>
the MacOS APP directory layout.<br>
> .<br>
><br>
>><br>
>> Packages:<br>
>> For reason of consistency it should read CuisPackages, again all<br>
>> of these packages are Cuis specific.<br>
><br>
> Same as CoreUpdates. Do others see an issue here?<br>
Not me.<br>
<br>
<br>
Best Regards,<br>
<br>
Gerald<br>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>