Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ukernelperson's Trove:Privacy policy: Difference between revisions

From μkernelperson's Trove
No edit summary
No edit summary
Line 8: Line 8:
We log all IP addresses. Indefinitely.
We log all IP addresses. Indefinitely.


We log all errors. Also indefinitely, including errors generated while logging other errors, which is a small infinite loop we have made peace with.
We log all errors. Also indefinitely, including errors generated while logging other errors, which is a small infinite loop we have made peace with. This is, incidentally, exactly the kind of document nobody reads in full before agreeing to it.<ref name="obar">Obar, J. A., and Oeldorf-Hirsch, A. (2018). The biggest lie on the Internet: ignoring the privacy policies and terms of service policies of social networking services. ''Information, Communication & Society'', 23(1), 128 to 147. https://doi.org/10.1080/1369118X.2018.1486870</ref>


== What We Do With It ==
== What We Do With It ==
Line 30: Line 30:
|}
|}


The table above is implemented for real as [[Template:Automaton]]. Calling it looks like this.
This table is not decoration. It is implemented at [[Template:Automaton]] and the calls below are live transclusions, not sample code, so what you see rendered is the template actually running against this page right now.


<pre>
'''Step 1''', starting state q0, reading clause "logging":
{{Automaton|state=q0|clause=logging}}
<pre>{{Automaton|state=q0|clause=logging}}</pre>
</pre>
Result: {{Automaton|state=q0|clause=logging}}


That returns q1. Feed the result back in as the next state and you can walk a reader through the whole policy one clause at a time.
'''Step 2''', feeding that result back in as the new state, reading clause "sale":
<pre>{{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}</pre>
Result: {{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}


<pre>
'''Step 3''', feeding that result in, reading clause "waiver":
{{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}
<pre>{{Automaton|state={{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}|clause=waiver}}</pre>
</pre>
Result: {{Automaton|state={{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}|clause=waiver}}


That lands on q2. Keep chaining clauses and every reader eventually reaches q3, at which point there is no transition back to q0. We consider this a feature.
Every reader who makes it through all three clauses lands on q3 and there is no transition defined back to q0. This is not a metaphor, it is the actual output of the actual template, computed by the actual wiki software rendering this actual page.


== Yes, It Is Also Turing Complete, Sort Of ==
== Yes, It Is Also Turing Complete, Sort Of ==


Nest a self calling template like Template:Loop enough times, using #if for branching and #expr for arithmetic, and you get read, write, and conditional branch over effectively unbounded storage. That is the informal bar for Turing completeness, and it is not a new idea, people have proven the same thing about C++ templates and, memorably, about the card game Magic: The Gathering, both cited below. The only real limit here is $wgMaxTemplateDepth, which we treat as a constraint of the server rather than a limit on the policy.
Nest a self calling template like Template:Loop enough times, using #if for branching and #expr for arithmetic, and you get read, write, and conditional branch over effectively unbounded storage. That is the informal bar for Turing completeness, and it is not a new idea. The same informal argument has been made rigorously for C++ template metaprogramming<ref name="veldhuizen">Veldhuizen, T. L. (2003). C++ Templates are Turing Complete. https://www.osl.iu.edu/~tveldhui/papers/2003/turing.pdf</ref> and, more surprisingly, for the trading card game Magic: The Gathering, where optimal play was shown to be at least as hard as the Halting Problem.<ref name="mtg">Churchill, A., Biderman, S., and Herrick, A. (2019). Magic: The Gathering is Turing Complete. arXiv:1904.09828. https://arxiv.org/abs/1904.09828</ref> The only real limit on this policy's computational ambitions is <code>$wgMaxTemplateDepth</code>,<ref name="mwdepth">MediaWiki manual, Manual:$wgMaxTemplateDepth. https://www.mediawiki.org/wiki/Manual:$wgMaxTemplateDepth</ref> which we treat as a constraint of the server rather than a limit on the policy.


== Fine Print ==
== Fine Print ==
Line 55: Line 57:


== Bibliography ==
== Bibliography ==
<references>
<references/>
<ref name="obar">Obar, J. A., and Oeldorf-Hirsch, A. (2018). The biggest lie on the Internet: ignoring the privacy policies and terms of service policies of social networking services. ''Information, Communication & Society'', 23(1), 128 to 147. https://doi.org/10.1080/1369118X.2018.1486870</ref>
<ref name="veldhuizen">Veldhuizen, T. L. (2003). C++ Templates are Turing Complete. https://www.osl.iu.edu/~tveldhui/papers/2003/turing.pdf</ref>
<ref name="mtg">Churchill, A., Biderman, S., and Herrick, A. (2019). Magic: The Gathering is Turing Complete. arXiv:1904.09828. https://arxiv.org/abs/1904.09828</ref>
<ref name="mwdepth">MediaWiki manual, Manual:$wgMaxTemplateDepth. https://www.mediawiki.org/wiki/Manual:$wgMaxTemplateDepth</ref>
</references>

Revision as of 10:24, 27 July 2026

A Note Before We Start

This is a Schrodinger's Privacy Policy. Until someone actually inspects our server configuration it exists in two states at once, "we log everything forever" and "we log nothing at all". We do not publish our LocalSettings.php so there is no way for you to collapse that waveform. Do not trust the author. That includes this sentence.

What We Log

We log all IP addresses. Indefinitely.

We log all errors. Also indefinitely, including errors generated while logging other errors, which is a small infinite loop we have made peace with. This is, incidentally, exactly the kind of document nobody reads in full before agreeing to it.[1]

What We Do With It

We do not sell your data. This is the one sentence in this document you are allowed to take at face value, right up until you remember we just told you not to trust us, which makes trusting this one sentence a little awkward. We are aware of the irony and have chosen to keep it anyway.

The Automaton

Below is a small finite state machine that models how a reader's trust in this policy evolves clause by clause. States are q0 naive, q1 suspicious, q2 resigned, and q3 accepting, meaning you have stopped asking questions.

State Reads "logging" Reads "sale" Reads "waiver"
q0 q1 q0 q3
q1 q1 q2 q3
q2 q2 q2 q3
q3 q3 q3 q3

This table is not decoration. It is implemented at Template:Automaton and the calls below are live transclusions, not sample code, so what you see rendered is the template actually running against this page right now.

Step 1, starting state q0, reading clause "logging":

{{Automaton|state=q0|clause=logging}}

Result: q1

Step 2, feeding that result back in as the new state, reading clause "sale":

{{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}

Result: q2

Step 3, feeding that result in, reading clause "waiver":

{{Automaton|state={{Automaton|state={{Automaton|state=q0|clause=logging}}|clause=sale}}|clause=waiver}}

Result: q3

Every reader who makes it through all three clauses lands on q3 and there is no transition defined back to q0. This is not a metaphor, it is the actual output of the actual template, computed by the actual wiki software rendering this actual page.

Yes, It Is Also Turing Complete, Sort Of

Nest a self calling template like Template:Loop enough times, using #if for branching and #expr for arithmetic, and you get read, write, and conditional branch over effectively unbounded storage. That is the informal bar for Turing completeness, and it is not a new idea. The same informal argument has been made rigorously for C++ template metaprogramming[2] and, more surprisingly, for the trading card game Magic: The Gathering, where optimal play was shown to be at least as hard as the Halting Problem.[3] The only real limit on this policy's computational ambitions is $wgMaxTemplateDepth,[4] which we treat as a constraint of the server rather than a limit on the policy.

Fine Print

If a court strikes down a clause of this policy, the rest keeps going, and the struck clause keeps existing in our logs anyway since logs are records of what happened, not clauses of the policy, so there is nothing left to strike. Nothing here expires just because the site does.

Do not trust the author.

Bibliography

  1. Obar, J. A., and Oeldorf-Hirsch, A. (2018). The biggest lie on the Internet: ignoring the privacy policies and terms of service policies of social networking services. Information, Communication & Society, 23(1), 128 to 147. https://doi.org/10.1080/1369118X.2018.1486870
  2. Veldhuizen, T. L. (2003). C++ Templates are Turing Complete. https://www.osl.iu.edu/~tveldhui/papers/2003/turing.pdf
  3. Churchill, A., Biderman, S., and Herrick, A. (2019). Magic: The Gathering is Turing Complete. arXiv:1904.09828. https://arxiv.org/abs/1904.09828
  4. MediaWiki manual, Manual:$wgMaxTemplateDepth. https://www.mediawiki.org/wiki/Manual:$wgMaxTemplateDepth