phetsims / ph-scale

"pH Scale" is an educational simulation in HTML5, by PhET Interactive Simulations.
http://phet.colorado.edu/en/simulation/ph-scale
GNU General Public License v3.0
0 stars 7 forks source link

Incorrect terminology used ("molecule" vs "ion") #258

Closed Nancy-Salpepi closed 1 year ago

Nancy-Salpepi commented 1 year ago

For https://github.com/phetsims/qa/issues/866 In the Micro and My Solution screens, the word "molecule" in the Molecule Count checkbox isn't the correct term. When checked, it shows the amounts of hydronium ion, hydroxide ion, and water molecules. Ions are not molecules, because molecules have no charge. Other options to consider are "particle" or "species."

From @arouinfar on Slack:

You’re definitely right about the terminology. I tried looking for a paper trail on the feature on GitHub and the design doc, and didn’t find anything helpful. If it was just the name on the checkbox, I would change it in a heartbeat. Unfortunately, “molecule” appears in all sorts of places throughout the PhET-iO tree so it’s a somewhat major change. Can you log an issue for it? Even if we decide not to move forward, we should have a documented discussion and update the Teacher Tips.

pixelzoom commented 1 year ago

Here's an inventory of what would need to change. Back to @arouinfar to advise on next steps.

Strings

This is the most problematic part of the change. Currently we have this translated string:

  "moleculeCount": {
    "value": "Molecule Count"
  },

... which is used to label this checkbox, which controls visibility of the counts shown above it:

screenshot_2071

Since we're showing counts for ions and a molecule (H2O), what label should we put on the checkbox? "Ions and Molecule Counts" is much too long. Could we simply shorten it to "Counts"?

If we introduce a new string, we'll need to notify translators after publication. And do I need to do anything if I delete a string? (Check with @jbphet.)

Code:

Code is not visible to the user, but should be changed for maintainability. This will take ~30 minutes.

Searching for "molecules" (not case-sensitive):

PhET-iO

This will change the API, and require migration rules. This will take ~30 minutes + PhET-iO team help.

API changes:

The new migration rules for tandem names would look something like this (or perhaps they should include complete phetioIDs?):

new TandemFragmentRenamed( 'numberOfH3OMoleculesProperty', 'numberOfHydroniumIonsProperty' );
new TandemFragmentRenamed( 'numberOfOHMoleculesProperty', 'numberOfHydroxideIonsProperty' );

Note the new names in the rules above. I'm proposing to use "Hydronium" and "Hydroxide", because I can't put "H3O+" and "OH-" in a tandem name.

According to @samreid in Slack#phet-io "Changing or removing phetioDocumentation does not require migration rules."

samreid commented 1 year ago

Ions are not molecules, because molecules have no charge.

According to Wikipedia:

An ion (/ˈaɪ.ɒn, -ən/)[1] is an atom or molecule with a net electrical charge.

So perhaps it is OK to call ions molecules?

Nancy-Salpepi commented 1 year ago

When an atom gains/loses electrons and thus takes on charge, it is no longer called an atom. It is called an ion. The same goes for molecules.

pixelzoom commented 1 year ago

Lots of conflicting info out there...

Oxford dictionary:

Ion: an atom or molecule with a net electric charge due to the loss or gain of one or more electrons

But then https://edu.rsc.org/cpd/atoms-molecules-and-ions/3010574.article:

Students should understand that:

  • Particles can be atoms, molecules or ions.
  • Atoms are single neutral particles.
  • Molecules are neutral particles made of two or more atoms bonded together.
  • An ion is a positively or negatively charged particle.

Should we ask a chemist? Or ChatGTP? :)

pixelzoom commented 1 year ago
  • Particles can be atoms, molecules or ions.

So maybe change "Molecule Count" to "Particle Counts"?

Nancy-Salpepi commented 1 year ago

I taught chemistry for 18 years. I also asked my friend who is a chemistry teacher and has a chemistry degree. Molecule is definitely not the correct term here. Yes--particle would be better in my/her opinion.

samreid commented 1 year ago

ChatGPT says:

An ion is an atom or group of atoms that has a net electric charge due to the loss or gain of one or more electrons. Ions can be either positive or negative, depending on the number of electrons they have compared to the number of protons in the nucleus. Atoms can become ions by either losing or gaining electrons, so an ion is still considered to be an atom. However, the term "atom" usually refers to a neutral atom, which has the same number of protons and electrons, while the term "ion" specifically refers to an atom or group of atoms that has a net electric charge.

UPDATE: Particle Counts sounds good to me.

pixelzoom commented 1 year ago

So what I'm hearing is that atoms and molecules are inherently neutral particles. And when they become charged, its no longer appropriate to call them atoms and molecules, and they should be referred to as ions. So what we have in our case is 2 ions (H3O+ and OH-) and 1 molecule (H2O). And since "Particles can be atoms, molecules or ions", it would be appropriate to refer to H3O+, OH-, and H2O together as "particles", and label the checkbox as "Particle Counts".

pixelzoom commented 1 year ago

Discussed with @arouinfar. Here's what we're going to change:

  "particleCounts": {
    "value": "Particle Counts"
  },
screenshot_2075

tandem renames (for consistency with concentrationH2OProperty, quantityH2OProperty, et.al.):

And then:

pixelzoom commented 1 year ago

Worked with @samreid and @zepumph, and here are the migration rules that are needed for this issue:

// Change terminology from 'Molecule Count' to 'Particle Counts', https://github.com/phetsims/ph-scale/issues/258
new TandemFragmentRenamed( 'numberOfH2OMoleculesProperty', 'particleCountH2OProperty' ),
new TandemFragmentRenamed( 'numberOfH3OMoleculesProperty', 'particleCountH3OProperty' ),
new TandemFragmentRenamed( 'numberOfOHMoleculesProperty', 'particleCountOHProperty' ),
new TandemFragmentRenamed( 'beakerControlPanel.moleculeCountCheckbox', 'beakerControlPanel.particleCountsCheckbox' ),
new TandemFragmentRenamed( 'viewProperties.moleculeCountVisibleProperty', 'viewProperties.particleCountsVisibleProperty' ),
new TandemFragmentRenamed( 'view.moleculeCountNode', 'view.particleCountsNode' )
pixelzoom commented 1 year ago

Back to @Nancy-Salpepi and @arouinfar to test-drive in master. The checkbox is now labeled "Particle Counts", and where you previous saw "molecule" in the Studio tree, you will now see "particle".

@Nancy-Salpepi Please also verify that 1.5 => 1.6 migration is working as expected. Links for testing with previous versions:

Nancy-Salpepi commented 1 year ago

Thanks for making the change. Things look good to me on master. Migration is working as expected. I see all the "Molecule Count" to "Particle Count" changes listed in the console in studio 1.6.0-dev.1.

Screenshot 2022-12-19 at 9 22 19 AM Screenshot 2022-12-19 at 9 23 16 AM

The basics version doesn't have "Molecule" in the tree(at least that I saw). A test migration worked as expected.

pixelzoom commented 1 year ago

Excellent, thanks @Nancy-Salpepi.

@arouinfar if everything looks OK after your reviw, feel free to close.

arouinfar commented 1 year ago

Thanks @Nancy-Salpepi @pixelzoom! Everything looks good in master, closing.