<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Hilaire,<br>
    <br>
    I'm not happy about this proposal.<br>
    <br>
    I think Preferences (both old and new) have a problem. The name
    clashing you see is a symptom of the problem. But the problem is
    having all packages use the central Preferences mechanism.<br>
    <br>
    Your proposal makes me remember the Windows Registry: A central
    repository of preferences/options/configurations for all apps in the
    system. It also has a hierarchical structure to support multiple
    users. Some of the problems of this approach (in particular in
    Windows) are:<br>
    - Modifying anything there is very dangerous. A single mistake could
    break the whole system beyond repair. So, everybody is really afraid
    of touching it.<br>
    - Anyone could modify stuff that isn't their business at all<br>
    - When you remove an app, in many cases they leave garbage there<br>
    - Sometimes you completely uninstall an app to solve some problem,
    and you reinstall it afterwards. The problem is never solved because
    it was garbage left in the Registry and never cleaned. Only solution
    is to format disk and reinstall Windows (and losing everything else,
    of course)<br>
    <br>
    I think it would be much better, as Luciano also suggests, to use
    the central Preference registry only for the base image, and have a
    good way to let packages have their own.<br>
    <br>
    Thanks,<br>
    <br>
    On 6/4/2022 6:17 AM, Hilaire Fernandes via Cuis-dev wrote:
    <blockquote cite="mid:c7030d4d-b1cc-6254-5122-cca38a9af10f@drgeo.eu"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
      <p> Hi </p>
      <p> Below redesign proposals to the PreferenceNG class and its
        protocol:<br>
      </p>
      <p> 1) In the PreferenceNG class, ThePreferences class variable is
        a dictionary of dictionaries where its keys are the category
        name. <br>
      </p>
      <p> 2) A preference is instantiated/updated identically with the
        messages #name:description:category:type:value: and
        #name:category:value: </p>
      <p> 3) To access a preference instantiated in the base image,
        nothing change: </p>
      <p>     PreferenceNG at: #color </p>
      <p> Internally PreferenceNG searches for the preference only in
        the base image preference categories: #system, #programming,
        #gui, #font. </p>
      <p> To access a preference in non base image category I propose
        the message #at:in: #at:in:put, #instanceAt:in:<br>
      </p>
      <p>     PreferenceNG at: #textSize in: #zork<br>
      </p>
      <p>    PreferenceNG at: #textSize in: #zork put: 12 </p>
      <p>     (the instantiate method can still be used to edit a
        preference value: <br>
             PreferenceNG name: #textSize category: #zork value: 12) </p>
      <p> Then I propose shortcuts compatible with the existing
        protocol: </p>
      <p>     Preference at: #zork:textSize </p>
      <p>     Preference at: #zork:textSize put: 16 </p>
      <p>     Preference instanceAt: #zork:textSize </p>
      <p>I will have to write a method to move the preferences in their
        own category dictionaries.</p>
      <p>Comments?</p>
      <p>Thanks<br>
      </p>
      <p>Hilaire<br>
      </p>
      <pre>-- 
GNU Dr. Geo
<a moz-do-not-send="true" href="http://drgeo.eu">http://drgeo.eu</a>
<a moz-do-not-send="true" href="http://blog.drgeo.eu">http://blog.drgeo.eu</a></pre>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a class="moz-txt-link-freetext" href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a>
<a class="moz-txt-link-freetext" href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a class="moz-txt-link-freetext" href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a class="moz-txt-link-freetext" href="https://twitter.com/JuanVuletich">https://twitter.com/JuanVuletich</a></pre>
  </body>
</html>