checkpoint rules & guidelines, FAQ update, draft IOCCC29 dates

This is a draft edit of the revised IOCCC guidelines for **IOCCC29**.

Due the above, `next/guidelines.md` has undergone a significant update.
The `next/rules.md` and `faq.md` files have been modified accordingly.

The `faq.md` version is now **29.01 2025-11-28**.
The `next/guidelines.md` version is now **29.00 2025-11-28**.
The `next/rules.md` version is now *29.08 2025-11-28**.

Draft **IOCCC29** dates have been added to `rules.md`.

Ran `make quick_www` to perform the above.

TODO: Continue to revise and improve the IOCCC guidelines.

TODO: Fix typos and minor nits in the `next/guidelines.md`.

TODO: Fix typos and minor nits in the `next/rules.md`.
This commit is contained in:
Landon Curt Noll committed 2025-11-29 00:14:31 -08:00
1 parent bf93637eae
commit 698cd8f92b
7 files changed
+2510 -3572

No files matched your search

+49 -35
View File
@@ -480,16 +480,22 @@ granted provided this copyright and notice are included in its entirety
and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="rules-version">Rules Version</h2>
<p>These IOCCC Rules are version <strong>29.05 2025-11-21</strong>.</p>
<p>These IOCCC Rules are version <strong>29.08 2025-11-28</strong>.</p>
<p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<div id="rule0">
<h2 id="rule-0---dates">Rule 0 - Dates</h2>
</div>
<p>This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.</p>
<p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p>
<p>This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.</p>
<p>The above dates are subject to change until the contest is officially open.</p>
<p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p>
<p>This IOCCC runs from <strong>2025-12-03 20:25:12.045045 UTC</strong> to <strong>2026-03-13 17:19:23.293137 UTC</strong>.</p>
<p>This contest will enter the <strong>pending state</strong> on <strong>2025-12-03 20:25:12.045045 UTC</strong>,
allowing people to register for the IOCCC.</p>
<p>This contest will enter the <strong>open state</strong> on <strong>2025-12-15 18:21:24.273033 UTC</strong>,
allowing people to upload submissions to the <a href="https://submit.ioccc.org">IOCCC submit server</a>.</p>
<p>This contest will enter the <strong>judging state</strong> on <strong>2026-03-13 17:19:23.293137 UTC</strong>,
when people will no longer be allowed to upload submissions.</p>
<p>Until the contest enters the <strong>open</strong> state, any or all
of the above <strong>dates and times may change <em>AT ANY TIME</em></strong>!</p>
<p>The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.</p>
<p>See <a href="../status.html">Current status of the IOCCC</a>.</p>
<div id="rule1">
<h2 id="rule-1---program">Rule 1 - Program</h2>
</div>
@@ -503,11 +509,13 @@ and
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.
During development this can be checked using <code>iocccsize(1)</code>:</p>
<p>iocccsize prog.c</p>
<p>See <a href="guidelines.html#guideline-2---size">Guidelines for Rule 2 - Size</a>.</p>
<div id="rule2a">
<h3 id="rule-2a---gross-size">Rule 2a - Gross Size</h3>
</div>
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
exceed <strong>4993</strong> bytes.</p>
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<div id="rule2b">
<h3 id="rule-2b---net-size">Rule 2b - Net Size</h3>
</div>
@@ -531,6 +539,7 @@ to register! The judges are <strong>NOT</strong> responsible for delayed or lost
email or for those who wait until the last minute to try to register!</p>
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<p>See <a href="rules.html#rule-8---submission">Rule 8 - Submission</a>.</p>
<p>See <a href="guidelines.html#guideline-3---register">Guidelines for Rule 3 - Register</a>.</p>
<div id="rule4">
<h2 id="rule-4---files">Rule 4 - Files</h2>
</div>
@@ -574,6 +583,9 @@ a case insensitive filesystem.</p></li>
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
<p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
<p>See <a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
<p>See FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
<p>See <a href="guidelines.html#mkiocccentry_toolkit">Guidelines for the mkiocccentry toolkit</a>.</p>
<p>See <a href="guidelines.html#makefile">Guidelines for the Makefile</a>.</p>
<div id="rule5">
<h2 id="rule-5---integrity">Rule 5 - Integrity</h2>
</div>
@@ -602,22 +614,14 @@ original form, including the removal of any created files and directories.</p>
<div id="rule7">
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
</div>
<p>In short: You wrote it, you own it, and its an original work.</p>
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong>
have permission from the original owner(s) to its use. If you submit
any content that is owned by others, you <strong>MUST</strong> detail that ownership,
i.e., who owns what, and document the permission you obtained from them
in your <code>remarks.md</code> file.</p>
<p>The IOCCC has a rich history of remarkable winning entries created by
authors who skilfully employed various techniques to develop their code.
While it isn’t required, you are allowed to use tools to develop and
test your submission. These tools may include, but aren’t limited to
code generators, code analysis tools, static code analysis tools, runtime
analysis tools, machine learning tools, natural language models, code
copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we encourage you to
describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p>
<p>You are permitted to use tools to write your code.</p>
<p>See <a href="rules.html#rule-16---anonymous">Rule 16 - Anonymous</a>.</p>
<p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
<div id="rule8">
<h2 id="rule-8---submission">Rule 8 - Submission</h2>
</div>
@@ -641,12 +645,12 @@ and
permitted. However, see the guidelines. Each entry <strong>MUST</strong> automate the
build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
<p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p>
<p><strong>NOTE</strong>: The references to <code>gmake(1)</code> can be any GNU Make compatible tool.</p>
<p>See <a href="rules.html#rule-15---building">Rule 15 - Building</a>.</p>
<div id="rule10">
<h2 id="rule-10---privileges">Rule 10 - Privileges</h2>
</div>
<p>Programs that require special privileges (setuid(2), setgid(2),
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>,
super-user, special owner, special group, etc.) are <strong>HIGHLY DISCOURAGED</strong>.
We do <strong>NOT</strong> guarantee these functions will behave as you expect on our
test platforms. If your program needs special permissions you <strong>MUST</strong>
@@ -679,6 +683,7 @@ is rejected.</p>
version, please indicate that in your <code>remarks.md</code> file of your non-rule
abusing version so that the Judges don’t think you uploaded a duplicate
into a wrong slot by mistake.</p>
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Abuse</a>.</p>
<div id="rule12">
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
</div>
@@ -732,6 +737,8 @@ environments and systems are available in the search
GNU long name options <code>--example</code> or extensions like <code>grep -P</code>.</p>
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
<p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
<p>See <a href="guidelines.html#guideline-15---building">Guidelines for Rule 15 - Building</a>.</p>
<div id="rule16">
<h2 id="rule-16---anonymous">Rule 16 - Anonymous</h2>
</div>
@@ -754,27 +761,33 @@ directory depths of <strong>4</strong>. The maximum number of files, excluding
<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>,
<code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>. And the maximum file-path
component is <strong>38</strong> and maximum path length is <strong>60</strong>.</p>
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball as constructed by
<code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.
The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
less than <code>27651*1024</code> bytes.</p>
<p>The tarball file <strong>MUST</strong> pass all <code>txzchk(1)</code> checks and the tarball
filename <strong>MUST</strong> pass all <code>fnamchk(1)</code> checks. You may <strong>NOT</strong> submit a tarball
created by the <code>-d</code> or <code>-s</code> seed options of <code>mkiocccentry(1)</code>.</p>
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball (i.e., tarball compressed by <code>xz(1)</code>)
as constructed by <code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.</p>
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p>
<p>The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
less than <code>27651*1024</code> (<strong>28314624</strong>) bytes.</p>
<p>The submission <strong>MUST</strong> be a tarball file that <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball
filename <strong>MUST</strong> pass all <code>fnamchk(1)</code> checks.</p>
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code>, <strong>NOR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.</p>
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
current version of <code>chksubmit(1)</code>.</p>
<p>Submissions may <strong>NOT</strong> use a
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
command line options that labeled as “<strong>for TESTING purposes</strong>”,
<strong>NOR</strong> labeled as “<strong>for the use by the IOCCC judges only</strong>”,
in their respective man pages.</p>
<p>Submissions may <strong>ONLY</strong> use
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
command lines that confirm to the command’s <code>-h</code> “<em>print help message</em>”.</p>
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2---size">Rule 2 - Size</a>
size checks performed by <code>iocccsize(1)</code>.</p>
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
<code>mkiocccentry(1)</code> generates.</p>
<p>Submissions that package using older versions of the mkiocccentry
toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>! Be sure
that you are using the latest tools from the
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what <code>chksubmit(1)</code> generates.</p>
<p>Any submission that fails to pass the checks performed by the most recent version of the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
GitHub repo.</p>
<p>In summary: it is best to use <code>mkioccentry(1)</code> to package your submission,
rather than roll-it-by-hand.</p>
<strong>WILL be rejected</strong>!</p>
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
<p>See FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it?</a>”.</p>
<p>See <a href="guidelines.html#guideline-17---packaging">Guidelines for Rule 17 - Packaging</a>.</p>
<div id="rule18">
<h2 id="rule-18---license">Rule 18 - License</h2>
</div>
@@ -789,14 +802,15 @@ Additional rules, both humorous and otherwise, may be added
below this rule in future contests.</p>
<p>See <a href="rules.html#rule-6---free">Rule 6 - Free</a>.</p>
<h2 id="further-reading">Further Reading</h2>
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on these rules.</p>
<p>Read the
<a href="https://www.ioccc.org/quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>
for an overview of how to enter the contest.</p>
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on The Rules.</p>
<p>See also the <a href="../faq.html">FAQ</a>.</p>
<p>And now <a href="guidelines.html#fun">for something completely different</a></p>
<p>Consider joining the <a href="https://discord.com/invite/Wa42Qujwnw">IOCCC Discord Server</a>
for discussions about The Rules, questions for the Judges, and <code>C</code> in general.</p>
<p>Leonid A. Broukhis<br />
<p>Leonid A. Broukhis
chongo (Landon Curt Noll) /\cc/\
<!-- AFTER: last line of markdown file: next/rules.md --></p>