Physics
The totalitarian principle is a concept in physics that states
Everything not forbidden is compulsory.
In order words, any observable outcome not forbidden by a physical law
will occur. The many-worlds interpretation of quantum mechanics
suggests an even stronger statement that for every such outcome, there
is some alternate world in which it does occur.
Programming language design
While
Everything not forbidden is compulsory.
may sound absurd, its contrapositive
Anything not mandatory is forbidden.
sounds more like a rule you would expect in a computer system, although
it may not always be desirable. While it does not fully apply,
programming languages and command lines are infamously picky
about their inputs:
If you forget a comma in your English essay, your teacher doesn’t
hand it back and say, I can’t understand any of this.
In contrast, HTML parsers have historically been quite flexible
in what they accept. There's reason to believe this lack of strictness
was a strength: less technical users could create their web pages using
incorrect HTML that would still work. Somewhat related, browser vendors
were also able to add their own extensions and explore what could be
added to HTML. On the other hand, the result was large amounts of
invalid HTML to the point that HTML5 had to add explicit
rules for parsing invalid HTML.
Law and security
Alternatively, the weaker statement,
Everything which is not forbidden is allowed.
enshrines the principle of law that citizens are free to do whatever
they will except when explicitly forbidden by a law.
On the other hand, the same principle applied to computer security is
called enumerating badness
and is widely held to be
a bad idea: put simply, while you as the user of your computer want the
freedom to do whatever you want on it, you probably don't want arbitrary
code which may have been written by malicious actors to have those same
freedoms and it's unfeasible to list all the bad programs
as much as you may try.
Instead, many modern systems support the reverse,
Everything which is not allowed is forbidden.
or enumerating goodness
, in the form of
software repositories and app stores.
Although some of these implementations unfortunately
go against user freedom.
.NET
While it seems like we have exhausted the variants of this phrasing,
as the title of this post suggests, some software systems follow yet
another one:
Some things not allowed are compulsory.
Yes, you read that right.
Using the Windows Azure .NET SDK v2.3, in a
web role, the web.config
file contained
the following automatically generated XML:
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
I was cleaning up warnings in this project hoping narrow down an unrelated
issue and saw this warning on the <filter type="" />
tag:
The 'type' attribute is not allowed.
Naturally, I removed the type=""
attribute which didn't seem to be
doing anything since the warning said it wasn't even allowed.
To my surprise, when I ran the code, it failed to run due to the
initialization code throwing an exception with the following message:
Required attribute 'type' not found.
Hence, the type
attribute is apparently both not allowed and compulsory.
As the message telling me it is not allowed was merely a warning and not
an exception, I put it back and decided not to worry too much about it.
Removing the <filter />
tag entirely also seemed to work and eliminate
the warning as well.