Options, Settings, Properties, Configuration, Preferences — when and why? - properties

There are several words with similar (in some sense) meaning:
Options, Settings, Properties, Configuration, Preferences
English is not my native language. Could you explain the difference in simple English please? I think the following template could be useful:
Use XXX in your GUI in order to let people change behaviour of your application (maybe preferences or settings?)
Use YYY in your GUI in order to let people change parts of an object (perhaps properties or options?)
Use ZZZ in your code ...
What are best practices?

Tricky, this, as there's no one single consistent style followed by all applications. As you say they are (broadly) synonyms.
In truth it doesn't really matter so long as your expected audience understands what you mean.
The biggest difference is between Properties, which usually affect a component or object, and the others, which affect the whole application.
Following an approximate lead from Visual Studio and other Microsoft products:
Properties represent the characteristics of a single component or object in the application.
Options alter global ways that the application works. Microsoft products use this to customise the UI toolbar, for example. There's an implication here that you can disable UI elements altogether (e.g. a "Simple" user interface or an "Advanced" user interface).
Settings and Preferences change qualities of how the application works. The implication here is to change, not disable: for example, "Metric measurements" or "British Imperial measurements".
Configuration is often where an application is customised for each user or group.
But there's no single rule.
I'd suggest you use Properties for object characteristics and Settings for everything else that's application-wide.

These aren't set anywhere, but I figured I might as well chip in my 2¢ on the topic. When I see these in an application, this is what they imply to me:
Settings: "View or modify the list of things that can be set"
Options: "We have set some things already, and give you the option to change them"
Preferences: "Tell us how you prefer this to work"
Properties: "Change one or more properties of this item"
Edit: "This thing is already in a good state, but you can change it if you like"
Configuration: "We have defaults, but they're so barebones you probably want to configure it yourself"

I just did a quick scan and wanted to post this list for reference.
Edge Settings
Google Chrome Settings
Google Chrome DevTools Settings > Preferences
Mozilla FireFox Options (about:preferences) > Network Settings
Mozilla FireFox DevTools Settings > Editor Preferences
Opera Settings
DeviantArt Settings
Facebook Settings, News Feed Preferences
GitHub Settings
Google Settings
IMDb Account Settings > Preferences
Instagram Options (aria-label)
JSFiddle Settings
StackOverflow Settings > Preferences
Twitter Settings
YouTube Settings
FileZilla Edit > Settings
GitHub File > Options
Notepad++ Settings > Preferences
VS Code Preferences > Settings
Audacity Preferences
IcoFx Options > Preferences > Options
Process Explorer Options
TeamViewer Tools > Options
uTorrent Options > Preferences
Windows Media Player Tools/Organize > Options
phpmyadmin Settings
XAMPP Config > Service and Port Settings
> Log Options
MS Word File > Options > Proofing > AutoCorrect Options
> Writing Style Settings
Photoshop Edit > Color Settings
Edit > Preferences
Type > Language Options
3D > 3D Print Settings
Viev > 32-bit Preview Options
Window > Options
Windows Settings
Used as the parent (window/choice):
Settings : 20 times
Options : 10 times
Preferences : 4 times
Config(uration) : 1 time
Total mentions:
Settings : 24
Options : 15
Preferences : 12
Config(uration) : 1
Based on this, I'd sort these in this order (from general/fixed/app-related to specific/dynamic/user-related):
Settings > Options > Preferences

I think that one point of view is missing here namely the relation between configuration/settings/options/preferences.
To me a configuration or preferences contain many settings or options so there can be one setting or one option.
You usually say "Change this option/setting" and not "Change this preference/configuration", don't you?
When someone says preferences or configuration I understand it as a set of settings or options.

One thing that I don't see in the answers here (although bobince alludes to it) is that you should consider what is typical for your environment/operating system. For instance on windows I think "Options" is the most common choice even though many programs use different words. Likewise "Preferences" for mac os. Android OS uses "Settings"
So bottom line, use what is most common for your environment.

I believe it's largely a matter of personal preference.
However, I feel that I usually see properties as referencing one single part of an appliation, where as Options/Settings are usually a more global property.
In addition, Preferences are probably not things that have as large of an impact as something labeled options or settings. Things such as a minor change in the display or something similar.
The most important thing is to have consistency across the application.
And personally, I prefer the term 'options', as it sounds less intimidating than settings, properties, or configuration.

Apart from Properties (which usually applies to a document or object inside a document, except when it doesn't), they're pretty much all the same. No-one agrees which terminology is best.
For example for program config, Apple style is ‘Preferences’ in the application menu, GNOME style is ‘Preferences’ on the ‘Edit’ menu. KDE style is a whole ‘Settings’ menu of its own. Windows style was ‘Options’ on the ‘Tools’ menu, though all bets are off now as more MS apps drop the menu bar and throw the old predictable controls all over the place with no consistent pettern.
RISC OS style was ‘Choices’ on the icon bar menu, just to add yet another pointless possibility.

Options: usually for components or objects. You have right to choose, so there're some options for you to choose.
Settings: There's a system. It may work as it always do, but it offers some settings for you to adjust its behaviors.
Properties: every object has properties. color, size, and etc. You 'set' settings. and you 'change' object's properties.
Configuration: usually, every system has its configurations, either a default one or a customized one. The system needs a proper configuration in order to run properly. Usually, it has little meaning of user's choice or not. Although you can adjust system's behavior with different configurations.
Preferences: you may prefer a different habit, so here comes the prefer-ences. Every user may have their own habits. Preferences is more like different users sets of prefers. In system level, it may work via different configurations, but on the GUI, we don't say configuration, we say preferences.
In conclusion, for example, in a drawing application, you may say, we change the properties of a circle, a shape. When you start the application, we have three options to choose for how the application would appear after launch. There are some configuration files under the installation folder, some may easy to understand, but some may be very technical, which is not prepared for normal users. Users they just change settings in the menu, to decide how a function works in the application. Settings and Preferences usually don't appear in the same application. Tools that more for efficiency, use Settings more. Applications that more for conveniency, use Preferences would be more friendly for users.
Hope those help.

Settings: Thinking of a slider to select a value from 1 to 10 for example
Options: Thinking of an on/off button
Preferences: Thinking of a choice from multiple choices, like morning, afternoon or evening
Configuration: Technical settings probably end users should not know about. Like what is the data source?

Related

How to do I control which CMake options appear only in "advanced mode"?

I use CMake 3.x in (more than) one of my projects. When I ccmake ., I get a terminal screen with various options to configure - supposedly, the ones a user might want to set manually before building. If I press t I enter "advanced mode", and numerous other options are visible.
Great, right? Except that some options in the non-advanced mode are such which I feel would be a better fit for the advanced mode and not be visible always (in my case it's the results of FindCUDA.cmake).
How can I make certain options only appear in advanced mode?
For make CACHE variable to be appeared in GUI (like ccmake) only in advanced mode, use command mark_as_advanced:
mark_as_advanced(my_cache_var)
Normally, mark_as_advanced is called by the script, which creates the variable. E.g. "Find" script marks as advanced some of variables obtained via find_path or find_library.
But it is correct to mark as "advanced" a variable created by some other script.

How to Show Review Bar in Okular by Default?

I use okular on Linux Mint.
Unfortunately the review bar which contains the annotation tools has to be manually loaded up each time okular is opened.
This is outrageously annoying if you open many hundred documents a day you need to highlight!
I neither found any option to show the review bar by default in the program's settings or via web search. I did not even found a shortcut that could be bound to a mouse key for easier opening. (The standard F6 shortcut does not do the trick for me.)
Is there any solution you can recommend?
Based on the information available on the official KDE Okular Handbook (currently at version 0.26) there is no functionality associated with this feature, so it technically can't be done by default from inside Okular.
To access the "Review" function (which includes highlighters, etc) you should press F6 or choose the Review option from the tools menu. At the moment all you can do in regards to tool configuration is change the available components of the review tool, adding or removing highlighter/marker tools. You can also configure shortcuts for the Review function, assigning an additional/alternate shortcut to open the review tool panel (Relevant to those with multimedia keys associated with their F-keys).
If the lack of this feature bugs you, you can always post a feature request to the KDE Bug Traker; Remember to search for existing requests before posting to avoid duplicates.

IDEA: How to suppress warnings for spelling typos?

One of my functions encrypts a string and one of my tests verifies that it took place. Naturally, strings like sldjf982389 are not recognized as a valid English word, so IntelliJ complains.
If there a way to suppress these warnings without adding junk to the dictionary?
You can use following #SuppressWarnings
For example idea is complaining about "contentid" that should be "contentId" according to him
#SuppressWarnings("SpellCheckingInspection")
public static final String ARG_CONTENT_ID = "contentid";
You can disable that in the Inspections menu. Click on the little green box at the top of source code, or navigate to File > Settings > Inspections, under the Project Settings divider. You can then untick the box shown below.
SUPPRESSION facility for ANY inpection is built in :
Pay attention to right arrows on the menus.
For Intellij IDEA 2020, the path to uncheck typos is File > Settings > Editor > Inspections > Proofreading > Typo
For what it's worth, on intelliJ v2019.2
Go to File > Settings > Editor > Color Scheme > General > Errors and Warnings > Typo and uncheck Effects check box. Fin!
Project-level versus Application-level dictionaries
JetBrains is apparently steering people away from the complexity of inline-code spell-checker suppressions in favor of having the word added to the appropriate dictionary.
At first, I was also seeking the inline-code suppression, however, I can see that the dictionary philosophy is easier in the bigger picture of completing work and not becoming bogged down with inline-code suppressions and the clutter thereof e.g. for words that may commonly be used elsewhere in the project or several projects.
The option to use dictionary per-project or app-wide is available.
Find controls for per-project & app-wide dictionaries at menu item Editor > Natural Languages > Spelling. See the Dictionaries section of Spellchecking page of the IntelliJ manual.
In case you want to turn off spellchecking forever (for all projects) — I just found quick and dirty hack.
Go to File / Settings, then Editor / Colors & Fonts / General. Find settings for typo errors and set color for underline to color of background.

How to automate or programmatically make changes to System Preference settings on Mac OS X

I am trying to figure out how to programmatically change System Preference settings on the Mac OS X. If that is not possible, create some post-installation automation script (using Apple Script or other means) and run it as part of the installer. I am particularly interested in making changes to the "Language & Text" settings which are part of the "personal" settings in System Preferences.
Here is more description of my problem:
I am trying to create an installer for a custom keyboard layout I wrote for Mac OS X. The keyboard layout basically allows people to transliterate ASCII keboard input to foreign letters. The foreign language does not exist on Mac OSX*. I was able to use Apple's PackageMaker to create a basic installer that dumps all the necessary files (.keylayout file, icons and the custom fonts) in their respective directories in the target computer. But there are a couple of personal settings that need to be configured in System Preferences before the keyboard layout can be selected and used. I would like to auto-configure these "one-time" settings for the user during the installation process. Is it possible to make changes to the settings using Cocoa/Objective-C. If not, I would like your help on how I can use Apple Script to automate the configuration. Please include some sample code or pointers to examples if possible. Thank you.
Here are the settings that need to be configured on System Preferences
Select System Preferences --> Language & Text -- Input Sources
Select "The Language Name" from the list
Click on "Keyboard Shortcuts" and enable "Select the previous input source" and "Select next source in Input Menu".
Double click on the shortcut combinations "⌘ space" and change them to "⌘ L" for the "Select the previous input source" and "ctrl⌘L" for "Select next source in Input Menu"
Exit systems preference. Done
NB: *The system language need not be changed. Only the input source (keyboard layout).
See NSUserDefaults. The values you want to set are probably in NSGlobalDomain.

Is there a client-side IDE for textareas on webpages?

Much of my work involves a web-based CMS I cannot modify. That means lots of textareas, and none of the IDE features I love, such as tab functionality, syntax highlighting, etc.
Are there any browser modifications, or bookmarklets, or anything that would allow a client side inline override of textareas, allowing IDE like features (even as basic as simply allowing use of the tab key instead of alt+009) in a webpage's textarea field?
Yes there are. For example: Web Wiz Rich Text Editor, the first one I found when Googling "browser text editor". :) It appears to be free to use, with paid premium versions.
I'm sure there are others!