Merge pull request #6355 from seotts/privacy-policy-apps

App privacy policy
This commit is contained in:
Sarah Otts 2021-12-08 10:35:05 -05:00 committed by GitHub
commit eebe3e1eb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 386 additions and 0 deletions

View file

@ -248,6 +248,13 @@
"view": "privacypolicy/privacypolicy",
"title": "Privacy Policy"
},
{
"name": "privacypolicy-apps",
"pattern": "^/privacy_policy/apps?$",
"routeAlias": "/privacy_policy/apps?$",
"view": "privacypolicy-apps/privacypolicy-apps",
"title": "Privacy Policy"
},
{
"name": "research",
"pattern": "^/research/?$",

View file

@ -0,0 +1,68 @@
{
"privacyApps.title":"Privacy Policy",
"privacyApps.updated":"The Scratch Privacy Policy was last updated: January 6, 2022",
"privacyApps.intro":"The Scratch Foundation (“Scratch”, “we” or “us”) understands how important privacy is to our community. We wrote this Privacy Policy to explain what Personal Information (“Information”) we collect through our offline editor (the “Scratch App”), how we use, process, and share it, and what were doing to keep it safe. It also tells you about your rights and choices with respect to your Personal Information, and how you can contact us if you have any questions or concerns.",
"privacyApps.collectionHeader": "What Information Does Scratch Collect About Me?",
"privacyApps.collectionParagraph": "For the purpose of this Privacy Policy, “Information” means any information relating to an identified or identifiable individual. The Scratch App automatically collects and stores locally the following Information through its telemetry system: the title of your project in text form, language setting, time zone and events related to your use of the Scratch App (namely when the Scratch App was opened and closed, if a project file has been loaded or saved, or if a new project is created). If you choose to turn on the telemetry sharing feature, the Scratch App will transmit this information to Scratch. Projects created in the Scratch App are not transmitted to or accessible by Scratch unless you choose to upload your project to the Scratch Online Community, at which point the information you share will be subject to the terms of the Scratch Online Community {privacyPolicyLink}. Please see the section “What Happens if I Upload My Project to the Scratch Online Community?” below for more information.",
"privacyApps.privacyPolicyLinkText": "Privacy Policy",
"privacyApps.usageHeader": "How Does Scratch Use My Information?",
"privacyApps.usageIntro": "We use this Information for the following purposes:",
"privacyApps.analyticsTitle": "Analytics and Improving the Scratch App",
"privacyApps.analyticsDescription": "We use the Information to analyze use of the Scratch App and to enhance your learning experience on the Scratch App.",
"privacyApps.researchTitle": "Academic and Scientific Research",
"privacyApps.researchDescription": "We de-identify and aggregate Information for statistical analysis in the context of scientific and academic research. For example, to help us understand how people learn through the Scratch App and how we can enhance learning tools for young people. The results of such research are shared with educators and researchers through conferences, journals, and other academic or scientific publications. You can find out more on our {researchPageLink} page.",
"privacyApps.researchPageLinkText": "Research",
"privacyApps.legalTitle": "Legal",
"privacyApps.legalDescription": "We may use your Information to enforce our {termsOfUseLink}, to defend our legal rights, and to comply with our legal obligations and internal policies. We may do this by analyzing your use of the Scratch App.",
"privacyApps.termsOfUseLinkText": "Terms of Use",
"privacyApps.processingHeader": "What Are The Legal Grounds For Processing Your Information?",
"privacyApps.processingParagraph": "If you are located in the European Economic Area, the United Kingdom or Switzerland, we only process your Information based on a valid legal ground. A “legal ground” is a reason that justifies our use of your Information. In this case, we or a third party have a legitimate interest in using your Information (if you choose to allow the Scratch App to send the Scratch team your Information) to create, analyze and share your aggregated or de-identified Information for research purposes, to analyze and enhance your learning experience on the Scratch App and otherwise ensure and improve the safety, security, and performance of the Scratch App. We only rely on our or a third partys legitimate interests to process your Information when these interests are not overridden by your rights and interests.",
"privacyApps.sharingHeader": "How Does Scratch Share My Information?",
"privacyApps.sharingIntro": "We disclose information that we collect through the Scratch App to third parties in the following circumstances:",
"privacyApps.serviceProvidersTitle": "Service Providers",
"privacyApps.serviceProvidersDescription": "To third parties who provide services such as website hosting, data analysis, Information technology and related infrastructure provisions, customer service, email delivery, and other services.",
"privacyApps.researchSharingDescription": "To research institutions, such as the Massachusetts Institute of Technology (MIT), to learn about how our users learn through the Scratch App and develop new learning tools. The results of this research or the statistical analysis may be shared through conferences, journals, and other publications.",
"privacyApps.mergerTitle": "Merger",
"privacyApps.mergerDescription": "To a potential or actual acquirer, successor, or assignee as part of any reorganization, merger, sale, joint venture, assignment, transfer, or other disposition of all or any portion of our organization or assets. You will have the opportunity to opt out of any such transfer if the new entitys planned processing of your Information differs materially from that set forth in this Privacy Policy.",
"privacyApps.legalSharingDescription": "If required to do so by law or in the good faith belief that such action is appropriate: (a) under applicable law, including laws outside your country of residence; (b) to comply with legal process; (c) to respond to requests from public and government authorities, such as school, school districts, and law enforcement, including public and government authorities outside your country of residence; (d) to enforce our terms and conditions; (e) to protect our operations or those of any of our affiliates; (f) to protect our rights, privacy, safety, or property, and/or that of our affiliates, you, or others; and (g) to allow us to pursue available remedies or limit the damages that we may sustain.",
"privacyApps.communityHeader": "What Happens If I Upload My Project to the Scratch Online Community?",
"privacyApps.communityParagraph": "While using the Scratch App, you may choose to upload your project to the Scratch online community (“Online Community”). If you choose to upload your project to the Online Community, you are sharing your information outside of the Scratch App and providing it to the Online Community service. The information you share when uploading your project, such as your account and project information, will be governed by the Scratch online community {privacyPolicyLink}.",
"privacyApps.studentsHeader": "Children and Student Privacy",
"privacyApps.coppa": "The Scratch Foundation is a 501(c)(3) nonprofit organization. As such, the Children's Online Privacy Protection Act (COPPA) does not apply to Scratch. Nevertheless, Scratch takes children's privacy seriously. Scratch collects only minimal information from its users, and only uses and discloses information to provide the services and for limited other purposes, such as research, as described in this Privacy Policy.",
"privacyApps.ferpa": "Scratch does not collect information from a student's education record, as defined by the Family Educational Rights and Privacy Act (FERPA). Scratch does not disclose information of students to any third parties except as described in this Privacy Policy.",
"privacyApps.eeaHeader": "Your Data Protection Rights (EEA)",
"privacyApps.eeaIntro": "If you are located in the European Economic Area, the United Kingdom or Switzerland, you have certain rights in relation to your Information:",
"privacyApps.accessTitle": "Access, Correction and Data Portability",
"privacyApps.accessDescription": "You may ask for an overview of the Information we process about you and to receive a copy of your Information. You also have the right to request to correct incomplete, inaccurate or outdated Information. To the extent required by applicable law, you may request us to provide your Information to another company.",
"privacyApps.objectionTitle": "Objection",
"privacyApps.objectionDescription": "You may object to (this means “ask us to stop”) any use of your Information that is not (i) processed to comply with a legal obligation, (ii) necessary to do what is provided in a contract between Scratch and you, or (iii) if we have a compelling reason to do so (such as, to ensure safety and security in our online community). If you do object, we will work with you to find a reasonable solution.",
"privacyApps.deletionTitle": "Deletion",
"privacyApps.deletionDescription": "You may also request the deletion of your Information, as permitted under applicable law. This applies, for instance, where your Information is outdated or the processing is not necessary or is unlawful; where you withdraw your consent to our processing based on such consent; or where you have objected to our processing. In some situations, we may need to retain your Information due to legal obligations or for litigation purposes. If you want to have all of your Information removed from our servers, please contact {helpEmail} for assistance.",
"privacyApps.restrictionTitle": "Restriction of Processing",
"privacyApps.restrictionDescription": "You may request that we restrict processing of your Information while we are processing a request relating to (i) the accuracy of your Information, (ii) the lawfulness of the processing of your Information, or (iii) our legitimate interests to process this Information. You may also request that we restrict processing of your Information if you wish to use the Information for litigation purposes.",
"privacyApps.withdrawalTitle": "Withdrawal Of Consent",
"privacyApps.withdrawalDescription": "Where we rely on consent for the processing of your Information, you have the right to withdraw it at any time and free of charge. When you do so, this will not affect the lawfulness of the processing before your consent withdrawal.",
"privacyApps.eeaComplaint":"In addition to the above-mentioned rights, you also have the right to lodge a complaint with a competent supervisory authority subject to applicable law. However, there are exceptions and limitations to each of these rights. We may, for example, refuse to act on a request if the request is manifestly unfounded or excessive, or if the request is likely to adversely affect the rights and freedoms of others, prejudice the execution or enforcement of the law, interfere with pending or future litigation, or infringe applicable law. To submit a request to exercise your rights, please contact {helpEmail} for assistance.",
"privacyApps.retentionHeader": "Data Retention",
"privacyApps.retentionParagraph": "We take measures to delete your Information or keep it in a form that does not allow you to be identified when this Information is no longer necessary for the purposes for which we process it, unless we are required by law to keep this Information for a longer period. When determining the retention period, we take into account various criteria, such as the type of services requested by or provided to you, the nature and length of our relationship with you, possible re-enrollment with our services, the impact on the services we provide to you if we delete some Information from or about you, mandatory retention periods provided by law and the statute of limitations.",
"privacyApps.protectHeader": "How Does Scratch Protect My Information?",
"privacyApps.protectParagraph": "Scratch has in place administrative, physical, and technical procedures that are intended to protect the Information we collect on the Scratch App against accidental or unlawful destruction, accidental loss, unauthorized alteration, unauthorized disclosure or access, misuse, and any other unlawful form of processing of the Information. However, as effective as these measures are, no security system is impenetrable. We cannot completely guarantee the security of our databases, nor can we guarantee that the Information you supply will not be intercepted while being transmitted to us over the Internet.",
"privacyApps.internationalTransferHeader": "International Data Transfer",
"privacyApps.internationalTransferParagraph": "We may transfer your Information to countries other than the country where you are located, including to the U.S. (where our Scratch servers are located) or any other country in which we or our service providers maintain facilities. If you are located in the European Economic Area, the United Kingdom or Switzerland, or other regions with laws governing data collection and use that may differ from U.S. law, please note that we may transfer your Information to a country and jurisdiction that does not have the same data protection laws as your jurisdiction. We apply appropriate safeguards to the Information processed and transferred on our behalf. Please contact us for more information on the safeguards used.",
"privacyApps.notificationsHeader": "Notifications Of Changes To The Privacy Policy",
"privacyApps.notificationsParagraph": "We review our Privacy Policy on a periodic basis, and we may modify our policies as appropriate. We will notify you of any material changes. We encourage you to review our Privacy Policy on a regular basis. The “Last Updated” date at the top of this page indicates when this Privacy Policy was last revised. Your continued use of the Scratch App following these changes means that you accept the revised Privacy Policy.",
"privacyApps.contactHeader": "Contact Us",
"privacyApps.contactIntro": "The Scratch Foundation is the entity responsible for the processing of your Information. If you have any questions about this Privacy Policy, or if you would like to exercise your rights to your Information, you may contact us at {helpEmail} or via mail at:"
}

View file

@ -0,0 +1,311 @@
const React = require('react');
const Page = require('../../components/page/www/page.jsx');
const render = require('../../lib/render.jsx');
const {FormattedMessage, injectIntl, intlShape} = require('react-intl');
const InformationPage = require('../../components/informationpage/informationpage.jsx');
const helpEmailLink = (
<a href="mailto:help@scratch.mit.edu">
help@scratch.mit.edu
</a>
);
const foundationAddress = (
<div>
Scratch Foundation<br />
ATTN: Privacy Policy<br />
201 South Street<br />
Boston, MA, 02111
</div>
);
const PrivacyPolicyApps = props => (
<InformationPage title={props.intl.formatMessage({id: 'privacyApps.title'})}>
<div className="inner info-inner">
<section>
<p className="lastupdate">
<i>
<FormattedMessage id="privacyApps.updated" />
</i>
</p>
<p className="intro">
<FormattedMessage id="privacyApps.intro" />
</p>
</section>
<section id="collection">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.collectionHeader" />
</h3>
<p>
<FormattedMessage
id="privacyApps.collectionParagraph"
values={{
privacyPolicyLink: (
<a href="/privacy_policy/">
<FormattedMessage id="privacyApps.privacyPolicyLinkText" />
</a>
)
}}
/>
</p>
</dl>
</section>
<section id="usage">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.usageHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.usageIntro" />
</p>
<dt>
<FormattedMessage id="privacyApps.analyticsTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.analyticsDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.researchTitle" />
</dt>
<dd>
<FormattedMessage
id="privacyApps.researchDescription"
values={{
researchPageLink: (
<a href="/research/">
<FormattedMessage id="privacyApps.researchPageLinkText" />
</a>
)
}}
/>
</dd>
<dt>
<FormattedMessage id="privacyApps.legalTitle" />
</dt>
<dd>
<FormattedMessage
id="privacyApps.legalDescription"
values={{
termsOfUseLink: (
<a href="/terms_of_use/">
<FormattedMessage id="privacyApps.termsOfUseLinkText" />
</a>
)
}}
/>
</dd>
</dl>
</section>
<section id="processing">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.processingHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.processingParagraph" />
</p>
</dl>
</section>
<section id="sharing">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.sharingHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.sharingIntro" />
</p>
<dt>
<FormattedMessage id="privacyApps.serviceProvidersTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.serviceProvidersDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.researchTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.researchSharingDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.mergerTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.mergerDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.legalTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.legalSharingDescription" />
</dd>
</dl>
</section>
<section id="community">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.communityHeader" />
</h3>
<p>
<FormattedMessage
id="privacyApps.communityParagraph"
values={{
privacyPolicyLink: (
<a href="/privacy_policy/">
<FormattedMessage id="privacyApps.privacyPolicyLinkText" />
</a>
)
}}
/>
</p>
</dl>
</section>
<section id="students">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.studentsHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.coppa" />
</p>
<p>
<FormattedMessage id="privacyApps.ferpa" />
</p>
</dl>
</section>
<section id="eea">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.eeaHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.eeaIntro" />
</p>
<dt>
<FormattedMessage id="privacyApps.accessTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.accessDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.objectionTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.objectionDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.deletionTitle" />
</dt>
<dd>
<FormattedMessage
id="privacyApps.deletionDescription"
values={{
helpEmail: helpEmailLink
}}
/>
</dd>
<dt>
<FormattedMessage id="privacyApps.restrictionTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.restrictionDescription" />
</dd>
<dt>
<FormattedMessage id="privacyApps.withdrawalTitle" />
</dt>
<dd>
<FormattedMessage id="privacyApps.withdrawalDescription" />
</dd>
<p>
<FormattedMessage
id="privacyApps.eeaComplaint"
values={{
helpEmail: helpEmailLink
}}
/>
</p>
</dl>
</section>
<section id="retention">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.retentionHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.retentionParagraph" />
</p>
</dl>
</section>
<section id="protect">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.protectHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.protectParagraph" />
</p>
</dl>
</section>
<section id="international-transfer">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.internationalTransferHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.internationalTransferParagraph" />
</p>
</dl>
</section>
<section id="notifications">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.notificationsHeader" />
</h3>
<p>
<FormattedMessage id="privacyApps.notificationsParagraph" />
</p>
</dl>
</section>
<section id="contact">
<dl>
<span className="nav-spacer" />
<h3>
<FormattedMessage id="privacyApps.contactHeader" />
</h3>
<p>
<FormattedMessage
id="privacyApps.contactIntro"
values={{
helpEmail: helpEmailLink
}}
/>
</p>
<p>
{foundationAddress}
</p>
</dl>
</section>
</div>
</InformationPage>
);
PrivacyPolicyApps.propTypes = {
intl: intlShape
};
const IntlPrivacyPolicyApps = injectIntl(PrivacyPolicyApps);
render(<Page><IntlPrivacyPolicyApps /></Page>, document.getElementById('app'));