-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define how to track multi-page documents #773
Comments
Thanks for this very detailed explanation. I believe the sections AND sub-documents types must be centralized as if not, it may result in unuseable datasets. So sub documents would have to be defined relative to their parent document type. In that sense, I do not see that much difference between option 3 and 4 anymore but would rather go for the option 4 syntax, which permits the factorizing of |
This comment was marked as off-topic.
This comment was marked as off-topic.
For option 4, I suggest an update to the factorised version as I find it more understandable: {
"name": "Twitter",
"documents": {
…
"Community Guidelines": {
"sections": {
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton",
"Hateful conduct policy": {
"fetch": "https://help.twitter.com/en/rules-and-policies/hateful-conduct-policy"
},
"Violent and Graphic Content": {
"fetch": "https://help.twitter.com/en/rules-and-policies/glorification-of-violence"
}
}
}
}
} |
We have strong time pressure to support multi-page documents for Community Guidelines in the context of the French presidential election. A first analysis of the ability to align Community Guidelines subdocuments is not very conclusive: we can cover with shared types between 100% (TikTok, LinkedIn) and 60% (Twitter), through 80% (YouTube, Instagram, Facebook) of Community Guidelines subdocuments. Option 1 would mean losing the non-covered ones; option 2 would mean creating a non-existing, virtual document; options 3 and 4 would mean opening up divergence for documents and making them incomparable. It seems impossible do decide what is most appropriate for Open Terms Archive at this stage. Thus, we'll use real options to try out both options 1 and 4 in parallel, as they seem to be the most sustainable and the most divergent. If we have enough time, we'll also try option 3. This means 2 (or 3) instances from experimental feature branches will run in parallel on a dedicated server. We will track documents this way and feed the results to analysts. We will conclude on the effectiveness and relevance of each option end of April. I will share here data on Community Guidelines alignment this week. |
As discussed with @clementbiron, we should also track the index page of Community Guidelines as it may contain important content. It will therefore have an impact on each option as follows: Option 1:{
"name": "Twitter",
"documents": {
…
"Community Guidelines": {
"fetch": "https://help.twitter.com/en/rules-and-policies",
"select": [ "#twtr-main" ],
},
"Community Guidelines - Hateful conduct policy": {
"fetch": "https://help.twitter.com/en/rules-and-policies/hateful-conduct-policy",
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton"
},
"Community Guidelines - Violent and Graphic Content": {
"fetch": "https://help.twitter.com/en/rules-and-policies/violent-groups",
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton"
}
}
} Resulting file structure:
Option 2: Not relevantOption 3:{
"name": "Twitter",
"documents": {
…
"Community Guidelines": {
"fetch": "https://help.twitter.com/en/rules-and-policies",
"select": "#main",
"Hateful conduct policy": {
"fetch": "https://help.twitter.com/en/rules-and-policies/hateful-conduct-policy",
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton"
},
"Violent and Graphic Content": {
"fetch": "https://help.twitter.com/en/rules-and-policies/glorification-of-violence",
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton"
}
}
}
} Resulting file structure:
Option 4:{
"name": "Twitter",
"documents": {
"Privacy Policy": {
"fetch": "https://twitter.com/en/privacy",
"select": ["main"]
},
"Community Guidelines": {
"fetch": "https://help.twitter.com/en/rules-and-policies",
"select": "#main",
"sections": {
"select": [ "#twtr-main" ],
"filters": "removeReturnToTopButton",
"Hateful conduct policy": {
"fetch": "https://help.twitter.com/en/rules-and-policies/hateful-conduct-policy"
},
"Violent and Graphic Content": {
"fetch": "https://help.twitter.com/en/rules-and-policies/glorification-of-violence"
}
}
}
}
} Resulting file structure:
|
Community guidelines ontology@Ndpnt collected the titles of the Community Guidelines subtypes of Facebook, Instagram, YouTube, Twitter, LinkedIn and TikTok. I then tried to align each of these subtypes and to give a more generic name that would be fit for Open Terms Archive. Interesting points
AlignedWhen lines have an empty header, this means there is ambiguity as to which platform document should get this type. I believe that each “subtype” should be prefixed with
UnclassifiedI did not manage to align these documents. They should either be read in full to understand where they could fit, or be left out.
Platform specificThese documents depend on platform features and have no reason to be tracked with a shared name. With option 1, they would be dropped.
Country specificTwitter has a document named “Platform Use Guidelines - Reporting false information in France”. On top of all of the above documents, Twitter goes really deep in specification and also adds some usage guidance that could be considered as parts of a manual.
|
The above table has been implemented in #778. |
Great to see these detailed discussions! With a lot of these things we have struggled at www.pga.hiig.de as well – and only responded with manual curation. I am curious to look at the results of the test runs – where do you stand currently with regard to the decision? I must confess that conceptually I am much more inclined to go for option 4 (or 3) than option 1. As part of our work at the PGA we have seen how all major platforms have evolved their community guidelines from single-pages documents into these nested websites of explanation. So I'd very much argue that this is "one thing" but that is has gotten much more complex over the years. And the wording and categorization is also changing over time. So this will remain a challenge – but much better to keep this under the umbrella of "community guidelines" than to have 10-20 separate document type that change names every other year and also re-integrate, bifurcate etc. This space is very much in flux. |
Thanks @ckatzenbach! This idea that this space will keep on evolving is very relevant indeed. Even if we happened to succeed to create an ontology for the current document set, we have to assess the chance that it would be stable over time.
As mentioned in #773 (comment), we are collecting data and feedback and intend to conclude on the effectiveness and relevance of each option end of April 🙂 |
Hi everyone, I'm Adrian and I worked with @ckatzenbach on the (historical) collection of these multi-page documents for the Platform Governance Archive. As he said, we ran into some of the exact same issues and questions during our collection process so it is very interesting to read your discussion here! Maybe it is helpful for you to hear about our experience and the solution that we ended up with. The first realization that we had when investigating the historical evolution of platform policies and collecting the documents is that what you called "the ontology of the Community Guidelines" is sometimes not as straightforward as one might expect. In the case of Facebook, it is still relatively clear from my perspective. Here, the Community Guidelines (initially called 'Content Code of Conduct' then 'Facebook Community Standards') evolved from a document that was completely displayed on one URL into first an interactive document with drop-down sections and then a multi-page document. But even today as it is spread across many different URLs, I think it is very clear that Facebook considers all of these subsites as part of one document: The Facebook Community Standards. Grouping these subsites into one document, from my perspective, does therefore not mean creating an artificial document. Much rather, the historical evolution of Facebook's Community Standards shows that the multi-page format should not be seen as a splitting up of the Community Guidelines into many sub-parts but much rather the contemporary form of displaying the document and making it easier to navigate for users. From my perspective, it therefore makes sense to puzzle the different Community Standards back together into one document because that's what they are from Facebook's/the user perspective and because that creates a document that can be compared to other platforms' Community Guidelines. Now in the case of Twitter, it is a bit more hard to define what actually constitutes their Community Guidelines: Do they, as you suggest, encompass all of the 75 subsites currently linked on their "Rules and policies" overview page (https://help.twitter.com/en/rules-and-policies#general)? Or should they rather be understood as "The Twitter Rules" page (https://help.twitter.com/en/rules-and-policies/twitter-rules) and the 18 selected sub policies that are linked there? (This is the option that we went for). These two options by themselves actually raised an ontological question for the collection: Are the Community Guidelines what platforms define as their Community Guidelines or do they actually encompass all of the platforms' rules that regulate their community in some way? That would mean that also rules or policies that are spelled out in sections of a site which are not part of the officially defined "Community Guidelines", for instance on help pages - as it very often happens - would also form part of a platform's Community Guidelines. For reasons of feasibility and practicability, we opted for taking the platforms own definition of their "Community Guidelines" as the reference point for our collection. In the case of Twitter, this meant considering "The Twitter Rules" page as their Community Guidelines, because this is what the company has generally and historically considered as their Community Guidelines. Our team member João can explain this decision in more detail because he went deep into the history of the Twitter Rules. Another argument for this approach would be that, as @MattiSG also noted, Twitter's "Rules and Policies" page includes many usage guidance/information pages such as "Updates to our Terms of Service and Privacy Policy" which are probably better classified as help pages than as rules/policies for the community. For Twitter, we hence decided to collect "The Twitter Rules", meaning that we collected the main page and the first sublevel of the policies that are linked on this page (if I understood it correctly this is what you referred to as nesting level). In practice this meant that we first had to create a timeline which denotes when subpolicies became part or where removed from the Twitter Rules page. It is important to note, that some of these subpages existed before they became part of the Twitter Rules or continue to exist after they are removed from the index pages. I guess as a general takeaway this means that taking an index page as the starting point for the collection entails monitoring when sublinks appear/are removed from this page. This is due to the fact that sections are sometimes merged or added to/removed from the master document. I have to admit that I did not understand all of the technicalities of your discussion above regarding the difference between option 3 and 4, so I cannot say how all of this influences your decision or speaks in favor of one or the other option. Generally however I would say that:
I'm very sorry for the length of this post and hope this is in any way helpful for your decision! Its actually quite helpful for us to spell our procedure out again in this discussion :) |
Comparison of implemented options 1 and 4As announced, we compared the results of running side-by-side implementations of options 1 and 4 for 7 weeks. Here are our results and observations 🙂 Common observations
DeclarationsFor Facebook, the resulting declaration was 101 lines for option 1 vs 83 lines for option 4. You can find them in full below. Option 1{
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards",
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
},
"Community Guidelines - Self-harm": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Hate Speech": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Child Exploitation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Violence Incitement": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Violent Organizations": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Spam": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Regulated Goods": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Harassment": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Misinformation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Intellectual Property": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Adult Nudity": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Sexual Solicitation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Platform Manipulation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Community Guidelines - Privacy Violations": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
"Deceased Users": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/memorialization/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
}
}
} Option 4{
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards",
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"],
"sections": {
"select": ["._9nrm", "._9q49", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"],
"Self-harm": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/"
},
"Hate Speech": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/"
},
"Child Exploitation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/"
},
"Violence Incitement": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/"
},
"Violent Organizations": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/"
},
"Spam": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/"
},
"Regulated Goods": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/"
},
"Harassment": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/"
},
"Misinformation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/"
},
"Intellectual Property": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/"
},
"Adult Nudity": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/"
},
"Sexual Solicitation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/"
},
"Platform Manipulation": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/"
},
"Privacy Violations": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/"
}
}
},
"Deceased Users": {
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/memorialization/",
"select": ["._9nrm", "._9q49", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
}
}
}
Snapshots and versions
Reliability and maintenanceNo difference was measured between the two options. ConclusionAfter implementation, none of the experimented solutions emerge as a clear winner. Along with comments from the PGA team (thanks @pg-adrian for your detailed message 🙇), this reinforces the validity of option 2, where all documents are consolidated into a single one. The blocking point that was identified was the risk of voiding the promise that documents tracked by Open Terms Archive can hold in court, since the resulting document could not easily be cited as it can not be referenced by a single URL or date. However, this coud be handled by ensuring snapshots are still integral copies of the documents found online. While admittedly to a lower extent, versions are already “recreated” from snapshots. Thus, as long as the resulting version references its source snapshots properly, it seems acceptable to consolidate them as part of a minimal readability improvement process. Detailed proposals for implementation of option 2 will be published in this RFC by next week. |
Reframing of problem statementDeclaring, maintaining and analysing the results of tracking community guidelines of several services, along with comments in this RFC, led us to the following reframing. This reframing does not impact the currently explored solution space, but it will hopefully help in avoiding confusion and managing expectations. Defining pages vs sectionsThe case of community guidelines is one where service providers have implemented their content sectioning by spreading it across separate web pages. However, this is not the only solution that they use. Solutions such as accordions have the same aim as splitting across pages: improving legibility. In the case of accordions, we have no problem representing the folded information in a single continuous flow. Similarly, we already split some pages into documents: when Terms of Service and Privacy Policy are on the same webpage, declaration files enable selecting each of those independently through In the case of this RFC, most of the proposed solutions made the confusion between sections and pages. This concept was not present in Open Terms Archive until now, because all the documents we handled were inside 1 or 0 page. Community Guidelines demonstrate the possibility of having 2 or more pages constituting one document. Distinguishing pages and sections support in Open Terms ArchiveThese topics are different, and it is important not to mix them. One is about how to track a document that is split across multiple pages through its sections. The other is how to annotate sections across a document, no matter if they are on a single page or on many. Postponing section supportWhile section support has value, it should not impact the data collection phase: Open Terms Archive is unique in part thanks to its separation of snapshots and versions. Section splitting (or annotations) should be another additional step in the pipeline, one that never puts snapshots authenticity or version consolidation at risk.
However, this RFC aims at extending OTA's current solid implementation of document tracking towards multi-page documents. The opportunity of adding section support at the same time is misleading. Such a feature will be handled independently, in its own timeframe. |
Great to hear that our experiences were helpful for you in reframing the problem statement and specifying your conceptualization of the relationship between documents, sections and pages and looking forward to read about the proposals for the implementation of option 2. |
Proposals for implementation of option 2Option 2A:Declare an array instead of an object for a document type where each entries of this array is a document declaration. {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": [
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards",
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72", "svg", "._9ooi", "._9q3_"]
}
]
}
}
Option 2B:Declare an array for each document keys inside a document declaration. {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": ["removeEmptyAnchorsLinks", "removeTrackingIDs", "removeLocaleFromUrls"],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": ["removeEmptyAnchorsLinks", "removeTrackingIDs", "removeLocaleFromUrls"],
"executeClientScripts": true
},
"Community Guidelines": {
"fetch": [
"https://transparency.fb.com/fr-fr/policies/community-standards", ,
"https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/",
"https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/",
"https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/",
"https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/",
"https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/",
"https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/",
"https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/",
"https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/",
"https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/",
"https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/",
"https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/",
"https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/",
"https://transparency.fb.com/fr-fr/policies/community-standards/memorialization/"
],
"select": [
"._9ntw",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c",
"._9nrm, ._9p7c"
],
"remove": [
"._9nxl, ._9ntv, .img",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_",
"._9p72, svg, ._9ooi, ._9q3_"
]
}
}
} Option 2C:A kind of mix of Option 2a and Option 2b where only the {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": [
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards",
"select": ["._9ntw"],
"remove": ["._9nxl"]
},
{
"fetch": [
"https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/",
"https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/",
"https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/",
"https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/"
],
"select": ["._9nrm"],
"remove": ["._9p72"]
},
{
"fetch": [
"https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/",
"https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/",
"https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/",
"https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/",
"https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/",
"https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/",
"https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/"
],
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
}
]
}
} Option 2D:Add a {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"],
"pages": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
]
}
}
} |
Thank you very much @Ndpnt for this work of consolidation! Reading through these examples, I am quite clearly in favour of 2D. I like how having a dedicated key makes it explicit and enables validation with no ambiguity: either we have a In particular, I dislike 2A and 2C because they are ambiguous on the intention: what does it mean that a document type maps to an array? Are there as many I have one suggestion for improvement though. For the moment, we voluntarily stuck to using verbs for every entry of a document declaration. I would suggest that we keep that behaviour, and use a verb such as NamingIn order to sort through synonyms, I ran a Google Trends search to find the most common term. The most common term for this operation seems to be “to merge”, followed by “to combine”. I confirmed this by running the same search with “PDF” or “pages” instead of “documents”. However, I am bit concerned that, in a context of operation where we rely a lot on Git, “merge” becomes ambiguous with the eponymous Git operation, when it is something very different that we want to describe here. Thus, I offer: Option 2.D.iSame as 2D, just renaming Support a Formal definition
Example{
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"combine": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
],
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
}
}
} |
Thanks for this very neat and understandable propositions. i'm in favor of the 2.D.i option which is the easiest to understand. |
Looping in @Amustache @LVerneyPEReN @afisher3578 @Manu1400 @streitlua for them to vote on these options or suggest improvements 🙂 |
Thanks @MattiSG for the relevant improvement of the option 2D. I am wondering if factored keys is easily understandable. 🤔 It could be For example: {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"combine": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
],
"with": {
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
}
}
}
} or {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"combine": {
"pages": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
],
"with": {
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"]
}
}
}
}
} |
Thanks @Ndpnt for this proposal! It is interesting, but is currently lacking the level of formality that would enable us to debate it properly in the context of an RFC, as it diverges without offering a clear option that we could decide on. Could we please evolve this into a formal option, with a clear naming proposal? 🙂 Thanks! |
I understand, you are right. I going to do this in the next days. |
I also like option 2.D.i - it's easy to understand how it works and the writing overheads are minimal. I agree that the "with" key could improve natural language readability, but I think that it's not necessary. In any case, I prefer @Ndpnt 's second proposition. |
Option 2.D.i.aSame as 2.D.i, but with the factorized values made explicit as default values with the suffix In this context, I suggest writing the defaults key before the Formal definition
Example {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"selectDefault": ["._9ntw"],
"removeDefault": ["._9nxl", "._9ntv", ".img"],
"combine": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
]
}
}
} |
Option 2.D.i.bSame as 2.D.i, but with the factorized values made explicit as default values within a new key In this context, I suggest writing the Formal definition
Example {
"name": "Facebook",
"documents": {
"Privacy Policy": {
"fetch": "https://fr-fr.facebook.com/privacy/explanation/",
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"select": ["div[role=\"main\"]"],
"remove": ["._5tko"],
"executeClientScripts": true
},
"Terms of Service": {
"fetch": "https://fr-fr.facebook.com/legal/terms/plain_text_terms",
"select": ["div[role=\"main\"]"],
"remove": ["footer[role=\"contentinfo\"]"],
"filter": [
"removeEmptyAnchorsLinks",
"removeTrackingIDs",
"removeLocaleFromUrls"
],
"executeClientScripts": true
},
"Community Guidelines": {
"defaults": {
"select": ["._9ntw"],
"remove": ["._9nxl", "._9ntv", ".img"],
},
"combine": [
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/suicide-self-injury/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/hate-speech/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/child-sexual-exploitation-abuse-nudity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/violence-incitement/" },
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/dangerous-individuals-organizations/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{
"fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/spam/",
"select": ["._9nrm", "._9p7c"],
"remove": ["._9p72"]
},
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/regulated-goods/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/bullying-harassment/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/misinformation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/intellectual-property/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/adult-nudity-sexual-activity/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/sexual-solicitation/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/inauthentic-behavior/" },
{ "fetch": "https://transparency.fb.com/fr-fr/policies/community-standards/privacy-violations-image-privacy-rights/" }
]
}
}
} |
Thanks Nico for these proposals. I am in favor of option 2.D.i because in options 2.D.i.a and 2.D.i.b the syntax is too different between a declaration for one page and a multipage declaration. This could be introduce complexity and confusion. But I would be curious to know the opinion of users who are less used to manipulating this syntax. |
In option 2.D.i, we have a |
I voted through emojis as discussed in retrospective. Also I believe 2.D.i with default at the top is enough and more readable than a |
I also found option 2.D.i to still be easy to understand, even as someone that is new to this syntax. |
Thanks everyone for your inputs and contributions on this first semi-formal RFC! 💖 I'm glad of the direction we're taking and the good collaboration around it 😊 We'll leave this open until next Tuesday for any additional comments. Until then, let's all try to stay focused on either casting votes on existing propositions, adding new ones formally, or adding objective data points 🙂 |
I noticed that, when we had a brief, transient issue with fetching documents on Instagram, we received a huge amount of notifications (and the same when the issue solved itself out) because the number of declared documents was very large in the implementation of option 1. The fact that all of the community guidelines were inaccessible at the same moment, and not other documents, is another hint that they are treated as a single group by platforms. As a maintainer, receiving all these notifications and trying to fix them was made needlessly more complex by having 20 documents instead of a single one. In my view, this very much goes in favour of concatenating (option 2), which was the path we were already on anyway 😉 |
Another example of multi-page document that is not Community Guidelines: AdMob policies and restrictions. |
Hi all, Among all proposed solutions, the one that received the most upvotes is the Option 2.D.i, so this is the option retained. Thanks again to everyone who participated in this RFC. |
Moved documentation issue to the Thanks again everyone for your contributions 🙇 |
Context and Problem Statement
Some documents are divided into several sub-documents accross many web pages.
For example, the Community Guidelines for Twitter or Facebook are divided, whereas those for TikTok are written in one document.
Currently multi-page documents are not tracked.
Solutions considered
Option 1: Create a document type for each sub-documents
For example in the
Twitter.json
declaration file:Resulting file structure:
Implications
Pros:
archivist
update neededCons:
Option 2: Concatenate all sub-documents in one document
For example in the
Twitter.json
declaration file:Resulting file structure:
Pros:
Cons:
Option 3: Allow sub-documents to be defined in one document as sub-document type
Resulting file structure:
Implications:
Pros:
Cons:
Option 4: Introduce the concept of sections
Or factorized version:
Resulting file structure:
Implications:
Pros:
Cons:
Remaining questions:
For options 1, 3 and 4, about consistency:
Do already unified documents have to be split in many documents for consistency? (Option B)
Which resulting file structure is expected:
Option A:
Option B:
For option 2, about snapshots:
How to store snapshots? with suffix in their filename? (like $documentType-part-1.html, $documentType-part-2.html, …)
Which snapshot ID is used as reference for related version?
How do we store snapshot ID used as reference in git version commit?
Possible solutions:
For option 3, about nesting:
Which nesting level is allowed?
For option 3 and 4, about storage:
How do we store sub-document in git commit?
How do we store section in git commit?
Questions to bear in mind when choosing an appropriate solution:
Some thoughts
The text was updated successfully, but these errors were encountered: