Modify

Opened 4 months ago

Last modified 9 days ago

#22452 new defect

JOSM on Microsoft Store

Reported by: taylor.smock Owned by: team
Priority: normal Milestone: 22.10
Component: Installer Windows Version:
Keywords: microsoft store Cc: Don-vip, stoecker, dafadllyn@…

Description

It has been brought to my attention (on #josm IRC) that someone has put JOSM on the Microsoft Store.

https://apps.microsoft.com/store/detail/openstreet-map-editor/9MVMVXFPM5SV

Notes:

Should we do something about it?

Attachments (1)

status.png (31.9 KB) - added by Don-vip 3 months ago.

Download all attachments as: .zip

Change History (48)

comment:1 Changed 4 months ago by stoecker

As far as GPL license conditions aren't violated it's ok to do so.

comment:2 Changed 4 months ago by weeklyOSM

I've just emailed reportapp@…:

I’d like to report https://apps.microsoft.com/store/detail/openstreet-map-editor/9MVMVXFPM5SV which is a rip-off of an open source app, https://josm.openstreetmap.de/

It doesn’t follow the licence of the open source app. The description is full of mistakes, which negatively affects our reputation. The $4.69 doesn’t go to the copyright holders. The privacy policy is fake.

Please remove this app from the store.

comment:3 Changed 4 months ago by taylor.smock

Fair enough. I figured I'd check just in case it would be something we had to respond to for trademark/copyright/other legal reasons.

Specific concerns:

  • We don't know if the distributor made changes to the application (since there is a $4.69 cost, I don't think we could download the application to check and see if there was a GPL violation)
  • The privacy policy could give users false impressions

    Our app does not collect or transmit any user's personally identifiable information. No personal information is used, stored, secured or disclosed by services this application works with.

JOSM communicates with josm.openstreetmap.de, openstreetmap.org, and any imagery service the user adds. While I don't think we could be legally liable for what someone else represents is our privacy policy, I don't think it is a good idea to take the chance. Especially since I don't think we have a stated privacy policy anywhere.

comment:4 in reply to:  2 Changed 4 months ago by stoecker

Replying to weeklyOSM:

which is a rip-off of an open source app, https://josm.openstreetmap.de/

Which in principle is ok.

It doesn’t follow the licence of the open source app.

Very likely true, but how do you know? To do so you'd need to buy the App and then request the source code. ;-)

The $4.69 doesn’t go to the copyright holders.

That's ok as well. GPL allows this.

The privacy policy is fake.

That's probably right - except the App was modified not to issue tracked information, but that would disable MOTD, Plugins and Maps features as well as any JOSM server related access which is unlikely.

Last edited 4 months ago by stoecker (previous) (diff)

comment:5 in reply to:  3 ; Changed 4 months ago by stoecker

Replying to taylor.smock:

Specific concerns:

Jupp. See the other text I wrote. Especially the private policy violation may be a cause for Microsoft Store to take it down :-)

comment:6 in reply to:  5 Changed 4 months ago by taylor.smock

Replying to stoecker:

Jupp. See the other text I wrote. Especially the private policy violation may be a cause for Microsoft Store to take it down :-)

I hope so -- I don't want someone to buy the app, read the privacy policy, then come after us, not the distributor. While I don't think that would happen, I don't like giving the legal system a chance to get things wrong.

comment:7 Changed 4 months ago by Don-vip

WTF. Thank you for letting us know. I'm also reporting it to Microsoft to take it down. As far as I understand:

  • there is no link to the licence nor to the source code, there is no way the GPL is respected here
  • the privacy policy is false as JOSM talks home with technical info some purists consider as personal info, and we definitively report performance data
  • the privacy policy references Apple (wtf?!)
  • we could also consider there is a violation of the "OpenStreetMap" trademark owned by the Foundation

comment:8 Changed 4 months ago by Don-vip

Keywords: microsoft store added

comment:9 Changed 4 months ago by Don-vip

I thought we had a discussion some years ago about how we could/couldn't publish JOSM on the Windows (Microsoft) store but can't find the ticket anymore. I found #21877 but I'm thinking to a much older ticket.

comment:10 in reply to:  9 Changed 4 months ago by taylor.smock

Replying to Don-vip:

I thought we had a discussion some years ago about how we could/couldn't publish JOSM on the Windows (Microsoft) store but can't find the ticket anymore. I found #21877 but I'm thinking to a much older ticket.

Things you might have been thinking of:

  • #19025 (I don't think we could just upload an MSI to the store. With that said, I'm actually interested in this ticket since MSIX supports automatic updates)
  • #14117 (Mac App store)

comment:11 Changed 4 months ago by Don-vip

I think I had the long-term goal of publishing a native package on Microsoft store in mind while doing #17083 but seems I never wrote about it :D

comment:12 in reply to:  7 Changed 4 months ago by stoecker

Hello,

  • there is no link to the licence nor to the source code, there is no way the GPL is respected here

As said you'd need to obtain the software to know. GPL requests you to offer the source code to everybody "who got the software", not simply "to everybody".

comment:13 Changed 4 months ago by deichzerleger

comment:14 Changed 4 months ago by anonymous

Another angle, likely violating OpenStreetMap trademark. OSMF specially does not allow calling a thing "OpenStreetMap" because it damages our brand.

comment:15 Changed 4 months ago by Don-vip

I've created PrivacyPolicy, help and review to improve/correct the document greatly appreciated.

comment:16 Changed 4 months ago by Don-vip

I've submitted an official version to the MS store, it's currently in validation phase, let's see how long it takes...

comment:17 Changed 4 months ago by Don-vip

It's available! https://apps.microsoft.com/store/detail/josm/XPFCG1GV0WWGZX

EDIT: I just managed to install it with a single clik on Windows 11 and got the following status report, everything looks fine:

Revision:18570
Build-Date:2022-10-07 11:33:30

Identification: JOSM/1.5 (18570 en) Windows 11 64-Bit
OS Build number: Windows 10 Pro 2009 (22621)
Memory Usage: 432 MB / 30688 MB (253 MB allocated, but free)
Java version: 17.0.4+8-LTS, Azul Systems, Inc., OpenJDK 64-Bit Server VM
Look and Feel: com.formdev.flatlaf.FlatDarkLaf
Screen: \Display0 2560×1440 (scaling 1.00×1.00) \Display1 1920×1080 (scaling 1.00×1.00)
Maximum Screen Size: 2560×1440
Best cursor sizes: 16×16→32×32, 32×32→32×32
System property file.encoding: Cp1252
System property sun.jnu.encoding: Cp1252
Locale info: en_FR
Numbers with default locale: 1234567890 -> 1234567890
VM arguments: [-Djpackage.app-version=1.5.18570, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, --add-exports=java.base/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED, --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED, --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED, --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED, --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED, -Djpackage.app-path=%UserProfile%\AppData\Local\JOSM\JOSM.exe]
Last edited 4 months ago by Don-vip (previous) (diff)

comment:18 Changed 4 months ago by Don-vip

Component: CoreInstaller Windows
Milestone: 22.10

comment:19 Changed 4 months ago by taylor.smock

@Don-vip: A (hopefully) stupid question: is the app going to automatically update? Or do we need to add something to wiki:DevelopersGuide/Releasing to make certain the app store has the current tested version?

EDIT: If not, it looks like it should be doable. It will just take some scripting.(1)

(1) https://learn.microsoft.com/en-us/windows/uwp/publish/msiexe/store-submission-api

Last edited 4 months ago by taylor.smock (previous) (diff)

comment:20 in reply to:  19 Changed 4 months ago by Don-vip

Replying to taylor.smock:

@Don-vip: A (hopefully) stupid question: is the app going to automatically update?

That's the plan.

it looks like it should be doable. It will just take some scripting.(1)

(1) https://learn.microsoft.com/en-us/windows/uwp/publish/msiexe/store-submission-api

Thanks! I was looking for this.

comment:21 Changed 4 months ago by taylor.smock

No problem. An important note(1) I found while looking at the documentation for MSI/EXE installers:

The installer binary on the package URL must not change once it has been submitted. We recommend that you create and submit versioned package URLs (such as https://contoso.com/downloads/1.1/myinstaller.msi). If you need to update the package URL, you may create a new app submission with a new package URL.

We already (kind of) have that, assuming we can just link to the GitHub release page.

(1) https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/app-certification-process?pivots=store-installer-msi-exe#package-url

comment:22 Changed 4 months ago by Don-vip

Right now I configured the release with this URL: https://josm.openstreetmap.de/download/windows/josm-setup-18570-java17.msi

comment:23 Changed 3 months ago by taylor.smock

@Don-vip: Heads up, I just kicked off the release process for 22.10. I don't know if we have automated the Microsoft Store update process yet.

comment:24 Changed 3 months ago by Don-vip

Ticket #21877 has been marked as a duplicate of this ticket.

comment:25 in reply to:  23 Changed 3 months ago by Don-vip

Replying to taylor.smock:

@Don-vip: Heads up, I just kicked off the release process for 22.10. I don't know if we have automated the Microsoft Store update process yet.

Thanks. Not yet, working on it.

comment:26 Changed 3 months ago by Don-vip

Almost one hour to complete "Step 1: Complete prerequisites for using the Microsoft Store submission API" :(

comment:27 Changed 3 months ago by taylor.smock

Is there anything I can do to help?

I doubt it, since most of step 1 is probably getting the Azure AD setup.

It looks like parts of step 1 might be something we have to do on a yearly/bi-yearly basis. I don't know how long the key for signing the JAR is valid (it expires on 2023-09-11, so two years?), but maybe we should renew both at the same time. I assume there is a README somewhere for stuff that has to happen on a regular basis, like Java certificate renewals.

comment:28 in reply to:  27 Changed 3 months ago by stoecker

Replying to taylor.smock:

I assume there is a README somewhere for stuff that has to happen on a regular basis, like Java certificate renewals.

Rudimentary :-) Problem is that these tasks are different each time. Whatever README we have is outdated the next time we need it.

comment:29 Changed 3 months ago by stoecker

@Don-vip:

If there is a new certificate which needs to be renewed, then make the public part available in JOSM download folder, so that

  • it's official and can be checked and
  • I can add it to my certificate checks.

P.S. Is the Apple package signed with an own cert? I only check the server and the Java cert ATM...

Last edited 3 months ago by stoecker (previous) (diff)

comment:30 Changed 3 months ago by Don-vip

It just takes time to setup, but once it's here we'll only have to renew the Azure AD secret which will expire every 24 months. I'm coding the "Step 2: Obtain an Azure AD access token" part right now. @Dirk I'll probably ask you to review my changes once I'm done :)

EDIT: step 2 OK

Last edited 3 months ago by Don-vip (previous) (diff)

comment:31 in reply to:  29 Changed 3 months ago by Don-vip

Replying to stoecker:

If there is a new certificate which needs to be renewed, then make the public part available in JOSM download folder, so that

  • it's official and can be checked and
  • I can add it to my certificate checks.

Right now I didn't have to setup anything certificate-related. I'm only dealing with credentials.

comment:32 Changed 3 months ago by Don-vip

Done!
@Dirk can you please review my Perl code and commit the cron file if you agree with the changes?
Here is the new stuff:

sub getazuretoken
{
  # https://learn.microsoft.com/en-us/windows/uwp/publish/msiexe/store-submission-api#step-2-obtain-an-azure-ad-access-token
  my $tenantid = "xxx";
  my $appid    = "xxx";
  my $clientid = "xxx";
  my $secret   = "xxx"; # Expires 01/11/2024 then every 2 years! Impossible to create one that does not expire

  my $curlbase = "curl --silent --max-time 30";
  my $url = "https://login.microsoftonline.com/$tenantid/oauth2/v2.0/token";
  my $data = "grant_type=client_credentials"
  . "&client_id=$appid"
  . "&client_secret=$secret"
  . "&scope=https://api.store.microsoft.com/.default";
  my $cmd = "$curlbase -X POST -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' -d '$data' $url";
  my $res = `$cmd`;
  #  print $res;
  #  my $d = decode_json(encode("UTF-8",$res));
  my $d = decode_json($res);
  return $d->{access_token};
}

# ...

      if(-f $pwinmsi)
      {
        ln $winmsi,$pwinmsiln;
        # Update application on Windows Store using API
        my $sellerid = xxx; # https://partner.microsoft.com/en-us/dashboard/account/v3/organization/legalinfo
        my $productid = "xxx"; # https://partner.microsoft.com/fr-fr/dashboard/win32apps/xxx/overview
        my $packageid = xxx; # Obtained through API only, not UI : https://api.store.microsoft.com/submission/v1/product/xxx/packages
        my $azuretoken = getazuretoken();
        # https://learn.microsoft.com/en-us/windows/uwp/publish/msiexe/store-submission-api#step-3-use-the-microsoft-store-submission-api
        my $baseapiurl = "https://api.store.microsoft.com/submission/v1/product/$productid";
        my $curlbase = "curl --silent --max-time 30"
        . " --header 'Authorization: Bearer $azuretoken'"
        . " --header 'X-Seller-Account-Id: $sellerid'";
        # https://learn.microsoft.com/en-us/windows/apps/publish/store-submission-api#update-current-draft-packages-api
        $cmd = "$curlbase -X PATCH -d '{\"packageUrl\": \"https://josm.openstreetmap.de/download/windows/josm-setup-$rev-java$winjava.msi\"}' $baseapiurl/packages/$packageid";
        system($cmd);
        # https://learn.microsoft.com/en-us/windows/apps/publish/store-submission-api#commit-packages-api
        $cmd = "$curlbase -X POST -d '' $baseapiurl/packages/commit";
        system($cmd);
      }

@Taylor: ping me if you release an hotfix, I have performed the update by running curl command manually so I'm not 100% sure yet the code above works.

Also not that submissions to Microsoft Store are not live immediately, it takes a few hours to be actually published on the store. Last time it took less than 24 hours but I don't know exactly how long.

comment:33 in reply to:  32 Changed 3 months ago by taylor.smock

Replying to Don-vip:

@Taylor: ping me if you release an hotfix, I have performed the update by running curl command manually so I'm not 100% sure yet the code above works.

Will do. I'm not planning on releasing a hotfix, but then again, I (almost) never am.

comment:34 in reply to:  32 ; Changed 3 months ago by stoecker

Replying to Don-vip:

@Dirk can you please review my Perl code and commit the cron file if you agree with the changes?

Nothing obvious wrong.

Also not that submissions to Microsoft Store are not live immediately, it takes a few hours to be actually published on the store. Last time it took less than 24 hours but I don't know exactly how long.

Is there any way to access the live version, so we see if it worked.

comment:35 in reply to:  34 Changed 3 months ago by Don-vip

Replying to stoecker:

Is there any way to access the live version, so we see if it worked.

I don't know yet if the binary can be downloaded outside of the Microsoft Store Windows app. The submission is still in progress in the partner center:


Last edited 3 months ago by Don-vip (previous) (diff)

Changed 3 months ago by Don-vip

Attachment: status.png added

comment:36 Changed 2 months ago by matheusgomesms

Hi folks,

Is the last version on the MS Store? I downloaded from the store and JOSM keeps asking me to update (I am on 18570 and the last version is 18583). On the Store page I cannot check the version number (very poor from MS), but there is no option to update it there.

(I am asking here because I know you are planning to make it updatable from the store, but I am not sure if this was done).

comment:37 in reply to:  36 ; Changed 2 months ago by taylor.smock

Replying to matheusgomesms:

Hi folks,

Is the last version on the MS Store? I downloaded from the store and JOSM keeps asking me to update (I am on 18570 and the last version is 18583). On the Store page I cannot check the version number (very poor from MS), but there is no option to update it there.

(I am asking here because I know you are planning to make it updatable from the store, but I am not sure if this was done).

I don't use Windows personally, so I don't know how the update process from the store is supposed to work.

First question: Did you pay money for it? If so, you installed the wrong version, and are at the mercy of the third-party. The official version is at https://apps.microsoft.com/store/detail/josm/XPFCG1GV0WWGZX .
Second question: Can you provide the information requested in the BadReport macro?


Thanks for your report, however your ticket is incomplete and therefore not helpful in its current form.

Please add all needed information according to this list:

  • The required parts of the Status Report from your JOSM.
  • Describe what behaviour you expected.
  • Describe what did happen instead.
  • Describe if and how the issue is reproducible.
  • Add any relevant information like error messages or screenshots.

To ensure that all technical relevant information is contained, create new tickets by clicking in JOSMs Main Menu on Helpsource:trunk/resources/images/bug.svg Report Bug.


comment:38 in reply to:  37 Changed 2 months ago by matheusgomesms

Replying to taylor.smock:

First question: Did you pay money for it? If so, you installed the wrong version, and are at the mercy of the third-party. The official version is at https://apps.microsoft.com/store/detail/josm/XPFCG1GV0WWGZX .
Second question: Can you provide the information requested in the BadReport macro?

I am using the very same version linked by you (and on JOSM downloads page).

This is the report (just opened JOSM and got the report):

Revision:18570
Build-Date:2022-10-07 11:33:30

Identification: JOSM/1.5 (18570 pt_BR) Windows 11 64-Bit
OS Build number: Windows 10 Home 2009 (22621)
Memory Usage: 372 MB / 4072 MB (163 MB allocated, but free)
Java version: 17.0.4+8-LTS, Azul Systems, Inc., OpenJDK 64-Bit Server VM
Look and Feel: com.formdev.flatlaf.FlatDarkLaf
Screen: \Display0 2560×1440 (scaling 1.50×1.50)
Maximum Screen Size: 2560×1440
Best cursor sizes: 16×16→48×48, 32×32→48×48
System property file.encoding: Cp1252
System property sun.jnu.encoding: Cp1252
Locale info: pt_BR
Numbers with default locale: 1234567890 -> 1234567890
VM arguments: [-Djpackage.app-version=1.5.18570, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, --add-exports=java.base/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED, --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED, --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED, --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED, --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED, -Djpackage.app-path=%UserProfile%\AppData\Local\JOSM\JOSM.exe]

Plugins:
+ FixAddresses (36011)
+ ImportImagePlugin (36013)
+ PicLayer (1.0.2)
+ apache-commons (36034)
+ apache-http (35924)
+ buildings_tools (36011)
+ conflation (0.6.9)
+ continuosDownload (105)
+ ejml (35924)
+ flatlaf (36036)
+ geotools (36028)
+ imagery-xml-bounds (35976)
+ imagery_offset_db (35978)
+ indoorhelper (1.2.2)
+ jackson (36034)
+ jaxb (35952)
+ jna (36005)
+ jts (36004)
+ log4j (36034)
+ opendata (36025)
+ pdfimport (35976)
+ reltoolbox (35976)
+ reverter (36011)
+ tageditor (36011)
+ turnlanes-tagging (v0.0.5)
+ turnrestrictions (36011)
+ utilsplugin2 (36011)

Map paint styles:
- https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Styles/Coloured_Streets&zip=1
- https://josm.openstreetmap.de/josmfile?page=Pt:Styles/Coloured_buildings&zip
- <josm.pref>\plugins\indoorhelper\resources\sit.mapcss

Validator rules:
+ https://raw.githubusercontent.com/OSMBrasil/validador-josm/master/Rules_Brazilian-Specific.validator.mapcss

Last errors/warnings:
- 00000.755 W: extended font config - overriding 'filename.Myanmar_Text=mmrtext.ttf' with 'MMRTEXT.TTF'
- 00000.758 W: extended font config - overriding 'filename.Mongolian_Baiti=monbaiti.ttf' with 'MONBAITI.TTF'
- 00001.391 E: java.security.KeyStoreException: Windows-ROOT not found. Causa: java.security.NoSuchAlgorithmException: Windows-ROOT KeyStore not available
- 00003.064 W: Falha ao excluir o plugin desatualizado '<josm.pref>\plugins\flatlaf.jar'.
- 00003.065 W: Falha na instalação do plugin já baixado 'flatlaf'. Ignorando a instalação. JOSM irá carregar a versão antiga do plugin.

comment:39 Changed 2 months ago by taylor.smock

Stupid question: What happens if you uninstall JOSM and then reinstall it? While it shouldn't remove the preferences, you may want to back them up.

You can back up your preferences by going to JOSM Preferences -> Advanced Preferences -> select all the preference keys (ctrl+a) -> Export selected items.
To restore your preferences, go to JOSM Preferences -> Advanced Preferences -> Read from file.

comment:40 Changed 2 months ago by Don-vip

The update submission is still "in progress" in the MS partner center. It seems I must have missed something when I submitted the update 5 weeks ago. If someone is willing to investigate in the documentation what I did wrong ? The script I ran is in :comment:32. I won't have time to dig again in the documentation before holidays.

comment:41 in reply to:  40 Changed 2 months ago by taylor.smock

Replying to Don-vip:

The update submission is still "in progress" in the MS partner center. It seems I must have missed something when I submitted the update 5 weeks ago. If someone is willing to investigate in the documentation what I did wrong ? The script I ran is in :comment:32. I won't have time to dig again in the documentation before holidays.

Did we log the return output from curl somewhere? Specifically, I'm wondering if there are error details.

comment:42 Changed 2 months ago by Don-vip

I didn't log the response but if I 'm sure to have received an HTTP 200 response to the /commit call, otherwise I would have investigated further. Probably the "commit" is not enough and something more must be done.

comment:43 Changed 12 days ago by Klumbumbus

Any news about the update? #22686

comment:44 Changed 11 days ago by skyper

Ticket #22686 has been marked as a duplicate of this ticket.

comment:45 Changed 11 days ago by skyper

Cc: dafadllyn@… added

comment:46 Changed 9 days ago by stoecker

Ok. For newest release I got this as email:

$curlbase -X PATCH -d '{\"packageUrl\": \"https://josm.openstreetmap.de/download/windows/josm-setup-$rev-java$winjava.msi\"}'$baseapiurl/packages/$packageid

→ {"responseData":{},"isSuccess":true}

$curlbase -X POST -d '' $baseapiurl/packages/commit

→ {"responseData":{"pollingUrl":"submission/v1/product/22...dd/status"},"isSuccess":true}

We'll see what happens.

Last edited 9 days ago by stoecker (previous) (diff)

comment:47 Changed 9 days ago by taylor.smock

Ticket #22694 has been marked as a duplicate of this ticket.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set.
to The owner will be changed from team to the specified user.
The owner will change to taylor.smock
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket
The owner will be changed from team to anonymous.

Add Comment


E-mail address and name can be saved in the Preferences.

 

in reply to:  7 Changed by anonymous

Replying to Don-vip:

WTF. Thank you for letting us know. I'm also reporting it to Microsoft to take it down. As far as I understand:

  • there is no link to the licence nor to the source code, there is no way the GPL is respected here
  • the privacy policy is false as JOSM talks home with technical info some purists consider as personal info, and we definitively report performance data
  • the privacy policy references Apple (wtf?!)
  • we could also consider there is a violation of the "OpenStreetMap" trademark owned by the Foundation
Note: See TracTickets for help on using tickets.