Extension:WikiLambda/Approving Implementations and Testers
This page is currently a draft.
Every contributor to Wikifunctions can create a new Implementation or a new Tester for a Function. Implementations and Testers are both on wikipages of their own.
In order for a Tester to actually count against the Implementations, the Tester needs to be approved by a user with the appropriate rights. In order for an Implementation to actually be used when calling a Function, the Implementation must be approved. Both is done by contributors with the appropriate rights, in order to make vandalism attacks more difficult.
Testers and Implementations should only be approved if they conform to the semantics of the Function they test or implement. This is a form of code review.
Testers and Implementations can be deactivated again with users that have the same rights, in case it turns out they were wrong. This should be the only reason to remove them. Any other reason, Wikifunctions should deal with it robustly. This will likely not be the case early on in the project's lifetime.
What are the consequences of an Implementation being approved even though it is wrong? Function calls to that Function may call return wrong results. Also, the different Implementations of a Function should all agree with each other. An Implementation that does not can lead to confusion. If two different Implementations of the same Function have different results, this is in fact an indication that one or the other is wrong. Eventually, the system might downgrade Implementations that disagree with other Implementations. That is not implemented yet.
What are the consequences of a Tester being approved even though it is wrong? Implementations that do not pass the given Testers are downgraded and are less likely to be called. This might remove perfectly correct Implementations from running, which might reduce the performance of the system, or lead to wrong results. That is not implemented yet.