@@ -4,6 +4,81 @@ thanks for your interest in contributing to Mycelium, an alleged "operating
44system"! please bear in mind that this is a hobby project that i work on in my
55spare 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
883984mycelium 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