chore: introducing the Mycelium AI Policy (#566) · hawkw/mycelium@b77e854

GitHub

5 min read Original article ↗

@@ -4,6 +4,81 @@ thanks for your interest in contributing to Mycelium, an alleged "operating

44

system"! please bear in mind that this is a hobby project that i work on in my

55

spare time, so pull requests may not always be reviewed in a timely manner.

667+

## AI policy

8+9+

when contributing to Mycelium, an alleged "operating system", you are free to

10+

use any tools you deem appropriate. this includes the LLM of your choosing,

11+

agents, loops, gastown, AI code review tools, Amazon Rufus, or even `vim`.

12+

however, all contributions to this project (including my own) must abide by

13+

exactly one rule:

14+15+

**your code (and any associated prose, such as commit messages and

16+

documentation) must not _look_ like it was written by a large language model.**

17+18+

basically, the game is simple: contributors are free to use whatever AI tools

19+

they wish when contributing to mycelium and associated projects, but in order to

20+

have your PRs merged, you have to be able to *trick me* into believing it was

21+

written by a human being. any PRs which appear to have been generated by a model

22+

will be closed as a violation of the Mycelium AI Policy (even if they were

23+

actually written on pencil and paper by a human being in a cave with no access

24+

to the internet). repeated violations of the Mycelium AI Policy may result in a

25+

ban from contributing to the repo.

26+27+

### advice on AI policy compliance

28+29+

+ when using an AI coding agent, the easiest way to ensure your contributions

30+

are compliant with the Mycelium AI Policy is to read the code that the model

31+

generates, and rewrite any parts of it that "feels like Claude-babble". repeat

32+

this process as needed until it no longer feels like it was written by a

33+

model.

34+

+ you may feel that it is possible to prompt an LLM into outputting code that

35+

doesn't look model-generated. my personal experience has been that this is

36+

impossible, and model-written code always requires some degree of rewriting to

37+

make it look Normal. if you think you're better at prompting than me, you are

38+

welcome to try it, but...good luck!

39+

+ while contributors are free to disclose the use of AI tools in their pull

40+

requests, note that this will put you at a substantial disadvantage, because

41+

an AI disclosure will mean I go in suspicious. if you can trick me into

42+

believing that a pull request which says "This code was written using Claude"

43+

was written entirely by an organic, free-range human being...well, I'll be

44+

impressed.

45+46+

### rationale

47+48+

the Mycelium AI Policy may, at first blush, seem a bit strange: why am I

49+

explicitly *encouraging* potential contributors to attempt to mislead a

50+

maintainer? and, doesn't the "you have to trick me" policy seem a bit...

51+

adversarial? to answer some of these questions, allow me to share some of the

52+

thinking behind the Mycelium AI Policy, and why I believe it is the best way to

53+

achieve *my personal goals* for this project.

54+55+

1. this project is a labor of love. I am doing this purely for fun, in my spare

56+

time. reviewing thousands of lines of slop is not particularly fun. reading

57+

the bizarre blend of Rationalist slang, technical jargon, and nonsensical

58+

metaphors that Claude's comments always seem to regress into is particularly

59+

infuriating and I don't ever want to see it in my weekend project.

60+

3. I believe that code can be beautiful. I love code which is both technically

61+

effective *and* a form of creative self-expression. I want the code in

62+

Mycelium to be beautiful. and I have never found purely model-generated code

63+

to be beautiful.

64+

4. however, I have also found LLMs to be an effective tool for generating large

65+

amounts of code faster than a human being can type it. i have also found them

66+

to be useful tools in applications where the model is *not* writing the code:

67+

while an LLM review may not question the high-level design of a feature the

68+

way a human reviewer would, they *are* remarkably thorough, and good at

69+

finding the one place where you forgot to change something or didn't use

70+

checked arithmetic or whatever. i don't want to completely forbid the use of

71+

a tool which i *have* found useful in some particular, restricted ways.

72+

5. i don't want to merge code that is not well-understood by a human being. i do

73+

not believe that it is possible for an engineer to take responsibility for

74+

code that they do not understand thoroughly. in LLM-assisted programming,

75+

there is an obvious temptation to not read the code that the model generates.

76+

we can all fall victim to this temptation from time to time. in my own work,

77+

i have found that the act of rewriting the model-generated code to not Look

78+

Like That forces the person who generated it to actually read and understand

79+

it thoroughly.

80+

6. it's my project and I can do whatever the hell I want to.

81+782

## building & running

883984

mycelium is built using [`inoculate`], the horrible mycelium build tool.

@@ -147,4 +222,4 @@ config file, i'd welcome a PR to add support for your preferred package manager.

147222

[`direnv`]: https://direnv.net/

148223

[`cargo nextest`]: https://nextest.sh

149224

[`justfile`]: #justfile

150-

[Just]: https://just.systems

225+

[Just]: https://just.systems