<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi Juan,<br>
<br>
sorry for the long delay, I caught a rather nasty cold.<br>
<br>
First and most important:<br>
<b>Thank your for your work!</b><br>
<br>
Second and less important:<br>
Haver's image saving problems are gone with Cuis Version 6.2 and
6.3.<br>
There are some minor issues like<br>
<ul>
<li>a different order of menu items in the preference menu
(trivial to fix)</li>
<li>font loading, the <tt>TrueTypeFonts</tt> directory is not
found in my setup (easy to fix)<br>
</li>
</ul>
<br>
For the remainder, please see my inline comments.<br>
<br>
<br>
Best Regards,<br>
<br>
Gerald<br>
<br>
<br>
<br>
On 12/22/23 1:30 PM, Juan Vuletich wrote:<br>
</div>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">Hi
Gerald,
<br>
<br>
On 12/22/2023 6:44 AM, Gerald Klix via Cuis-dev wrote:
<br>
<blockquote type="cite">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>
</blockquote>
<br>
When there was no prefs file, people would be annoyed by the need
to save the image to keep their preferences, and their preferences
being lost when a new image was published.
<br>
<br>
When I added the file, people would get annoyed that whatever they
chose with the Preferences menu was not persisted, even if they
saved the image. Needing to edit an external file when there was a
Preferences menu made no sense.
<br>
<br>
What I did is to create the file automatically when you change a
preference (but only for GUI size, ANSI/ST-80 assignment, and
ClickToFocus). Your preferences persist regardless of saving the
image or not, and you don't need to edit the file by hand.
<br>
<br>
If someone prefers to have #userBaseDirectory tied to the main
Cuis folder, they can use the -udIsBase command line argument, as
I said in another email yesterday.
<br>
<br>
Changing behavior is not a problem, especially if the new behavior
is more comfortable and more flexible than the old one.
<br>
</blockquote>
IC, to describe the situation in German: „Einen Tod muß man
sterben.“, meaning you have to choose one evil.<br>
<br>
I can only think of one – rather nifty – improvement:<br>
Add two preference menu options like:<br>
<br>
'Save preferences globally'<br>
This one selects the currently implemented behavior.<br>
<br>
'Save preferences only in image'<br>
This one implements the old behavior.<br>
<br>
Both will be persisted in <tt>UsersPrefs.txt</tt>. The later<br>
serves as a flag, that means: Ignore every other setting in <tt>UserPrefs.txt</tt>
and<br>
stick to the settings that are already persistent in the image.<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">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>
Fair enough. The script needs bash and sudo; it should be
replaced by something simpler.
<br>
<blockquote type="cite">
<blockquote type="cite">Maybe a simple image, like your hello
world demo, that starts the actual image is better.
<br>
This approach would be a clear case of eat your own dog-food
;-}
<br>
(<a class="moz-txt-link-freetext" href="https://lists.cuis.st/mailman/archives/cuis-dev/2023-October/008099.html">https://lists.cuis.st/mailman/archives/cuis-dev/2023-October/008099.html</a>)
<br>
</blockquote>
<br>
I don't see the need for an "official" way to do that. Expert
users can set up their environment as they prefer. In other
words, that's a nice idea, but doesn't need to be part of the
Cuis core. More like a community developed optional feature /
workflow. We'd need to be sure that Base Cuis supports those
developments, by making them possible.
<br>
</blockquote>
IHMO it will make sense for non version controlled Cuis
distributions, like CuisUniversity or Haver.
<br>
</blockquote>
<br>
Sure. Their maintainers are welcome to do so.<br>
</blockquote>
Please see below, keyword 'Image management application'<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">
<blockquote type="cite">
<br>
<blockquote type="cite">
<br>
<blockquote type="cite">...
<br>
</blockquote>
I would love to have the Cuis checkout separated from my
project. Additionally It should
<br>
be possible to reuse the checkout for more than one project.
<br>
</blockquote>
<br>
Some people already asked for handling more than one Cuis
folders (including image, etc) for one project. Others, like
you want the opposite: use a single Cuis folder for several
projects. So we need a way to support these different
scenarios. (see below)
<br>
</blockquote>
For Unix, it should be easy to distribute a shell script that
creates symlinks to all of the repos
<br>
in an the current directory. I don't see a portable solution for
windows.
<br>
</blockquote>
<br>
Again, the main distribution should be especially friendly for
novice and casual users. To me, this also means to try to avoid
stuff that is too complex for them, and that experts can do by
themselves easily.
<br>
<br>
It also means to try to give a platform agnostic experience. For
instance, right now, I'm doing a kind of introductory curse to CS
for my daughters and a few friends (teenagers and young adults). I
prepared a bunch of thumbdrives with this very Cuis setup. They
bring a mix of Windows, Intel and ARM Mac, and Linux laptops. This
works on all of them without needing to waste their attention on
irrelevant technicalities. I like that, and I think it reflects
the kind of experience most novices will have.
<br>
</blockquote>
Nice, I tried such a thing for two of my daughters individually and
two of my sons.<br>
I failed miserably.<br>
I hope you are better at teaching, than I am!<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">
<blockquote type="cite">
<br>
<blockquote type="cite">...
<br>
</blockquote>
<br>
One point to have in mind is that inside the Cuis repo
directory, no files from other repos should be stored. The
reason is that most users would no longer know what is part of
the Cuis distribution and what is not.
<br>
</blockquote>
I forgot about that point, because I created a bunch of symlinks
to the 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 perspective:
<br>
I am thinking of distribution contained in a ZIP-file, without
any version controlled files.
<br>
So yes, If you want to distribute this using git, not polluting
the repo with user files
<br>
makes perfect sense.
<br>
</blockquote>
<br>
And still I also want a good experience for people downloading the
Zip file that GitHub generates automatically, for people who don't
need or want git. A lot of use cases and details to keep in mind!
<br>
</blockquote>
IC.<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">
<blockquote type="cite">
<br>
<blockquote type="cite">...
<br>
</blockquote>
<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
#smalltalkImageDirectory, CoreUpdates/ and Packages/.
<br>
#projectBaseDirectory: #cuisBaseDirectory parent.
<br>
<br>
#userBaseDirectory is configurable via commandline:
<br>
<br>
No additional argument
<br>
DirectoryEntry userBaseDirectory.
/Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev-UserFiles
.
<br>
<br>
-udIsBase
<br>
DirectoryEntry userBaseDirectory.
/Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev .
<br>
<br>
-ud ZZZZ
<br>
DirectoryEntry userBaseDirectory.
/Users/juanvuletich/Cuis-Smalltalk/Cuis-Smalltalk-Dev/ZZZZ .
<br>
<br>
-ud ../ZZZZ
<br>
DirectoryEntry userBaseDirectory.
/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 make this configurable via cmdline argument too.
<br>
</blockquote>
I have seen some of these changes in Cuis 6.0, AFAIR I had to
adapt 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>
</blockquote>
<br>
That makes sense.
<br>
</blockquote>
I will look at these options, when I fix Haver's font loading
issues.<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">
<br>
One side issue: Is there any way to move UnicodeData.txt away
from the image directory?
<br>
Users may be tempted to clean up their image directory and
delete non image/changes stuff,
<br>
with rather disastrous results. (After some hair-tearing I
created a symlink to this file in Cuis' repo,
<br>
to make Cuis work again in Haver's project directory)
<br>
</blockquote>
<br>
I haven't found a better place... Perhaps TrueTypeFonts/ ? Mhhh...
<br>
</blockquote>
Suppose you want to write a maintenance application<br>
for images – something I am contemplating for years – a straight<br>
forward solution is to use directories in the filesystem to
structure<br>
a given set of tuples of image and change files. The current
solution<br>
forces the maintenance application to copy (or symlink)<br>
<tt>UnicodeData.txt</tt> and the file with the compressed sources.<br>
<br>
How about an 'image (related) data directory', that<br>
contains all that stuff? There should be command line options
similar<br>
to those implemented for the <tt>userBaseDirectory</tt>.<br>
<br>
The TrueTypeFonts directory seems to be already relative to the <tt>userBaseDirectory</tt>,<br>
which is, IHMO, is the best solution.<br>
<blockquote type="cite" cite="mid:65858148.9040904@cuis.st">
<br>
<blockquote type="cite">
<br>
<blockquote type="cite">...
<br>
</blockquote>
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>
</blockquote>
<br>
Makes sense. Check the Info.plist file, where there is a line that
references to 'CuisImage/Cuis6.1.image'. This is used to find the
image file if you just click on the .app "file" on a Mac. You'd
need to change this to point to the Haver image. So, calling it
Haver.app or HaverVM.app is reasonable.
<br>
<br>
BTW, in an older experiment I also included the image / changes /
sources as part of the .app structure, like Squeak's All-In-One.
Played with that and didn't like the image and chages to be so
"hidden". But a single structure for the included VMs is something
I do like.
<br>
</blockquote>
</body>
</html>