From 330ebccc76c3e5a0f1f92573110d5eb149a1357e Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Thu, 17 Oct 2024 11:50:22 -0700 Subject: [PATCH] Reorder FAQ table of contents Numerous sections have had questions moved to another section including the new sections 'The mkiocccentry toolkit: finer details' and 'History of the IOCCC'. The first section was renamed (pending any better name as it might not be quite right) 'Entering the IOCCC: the bare minimum you need to know'. Renamed some questions to better (hopefully) account for what they are about. The purpose of not making the actual content match this reordering is so that if any changes need to be made they do not have to be done again (though a few were moved). Thus before more work can be done some discussion is needed. The guidelines and rules now refer at the top to the general FAQ especially about the bare minimum one needs to know. --- faq.html | 1568 +++++++++++++++++------------------ faq.md | 1849 +++++++++++++++++++++--------------------- next/guidelines.html | 8 +- next/guidelines.md | 8 +- next/rules.html | 8 +- next/rules.md | 10 +- 6 files changed, 1753 insertions(+), 1698 deletions(-) diff --git a/faq.html b/faq.html index 7dd543acd..4d0c1ec84 100644 --- a/faq.html +++ b/faq.html @@ -389,130 +389,135 @@
This is FAQ version 28.0.5 2024-10-14.
-This is FAQ version 28.0.7 2024-10-17.
+mkiocccentry tool?.auth.json file?.info.json file?.auth.json and/or .info.json files?fnamchk tool?mkiocccentry tool and how do I use it?mkiocccentry and related tools?mkiocccentry tool and how do I use it?mkiocccentry and its related tools?mkiocccentry tool?fnamchk tool?.auth.json and/or .info.json files?.auth.json file?.info.json file?author handle?author_handle.json file and how are they used?entry_id?.entry.json file and how is it used?try.sh and try.alt.sh scripts and why should I use them?try.sh and try.alt.sh scripts and why should I use them?author handle?author_handle.json file and how are they used?entry_id?.top, .allyear, .year and .path files?.entry.json file and how is it used?.top, .allyear, .year and .path files?Jump to: top
Jump to: top
To submit your code to the IOCCC, you MUST follow these steps:
@@ -552,13 +557,13 @@ to our submission portal. mkiocccentry work_dir prog.c Makefile remarks.md [file ...]where:
work_dir
+work_dir
directory where the entry directory and tarball are formed
prog.c
+prog.c
path to the C source for your entry
Makefile
+Makefile
Makefile to build (make all) and cleanup (make clean & make clobber)
remarks.md
+remarks.md
Remarks about your entry in markdown format: see the FAQ on “remarks.md” for more info.
mkiocccentry tool.
-If you choose to risk violating rules, be sure an explain your reason +
If you choose to risk violating rules, be sure and explain your reason
for doing so in your remarks.md file.
See also Rule 17!
Jump to: top
+mkiocccentry tool and how do I use it?This tool comes from the mkiocccentry
+repo and it is required that you
+use it to package your submission. Not doing so puts you at a great risk of
+violating the Rules and in particular Rule
+17. The mkiocccentry tool first gathers your source
+code, your Makefile, your remarks, other information about your submission,
+information about the author (or authors) and then runs a lot of tests before (if
+all is OK) forming your tarball. After this is done it will additionally run the
+txzchk(1) tool (which runs the fnamchk(1) tool) on the submission tarball.
See the +FAQ on “submitting to the IOCCC” +for details on how to register for the IOCCC.
+Once you have registered, you will need to package your entry with the
+mkiocccentry tool. The below details discuss this very important tool. As it
+is complicated we will explain how to use this tool.
As the Guidelines state, the synopsis is:
+ mkiocccentry [options] work_dir prog.c \
+ Makefile remarks.md [file ...]
+… where work_dir is a directory that will be used to build the submission
+tarball, prog.c is your submission source code, Makefile is your submission’s
+Makefile, remarks.md are your remarks (that will be the basis of the
+README.md file which will be used to form the index.html file, if your
+submission wins) and the remaining args are the paths to any other files you
+wish to submit.
The work_dir MUST already exist, as a directory, and it is an error if it
+is not a directory that can be written to. In this directory your submission
+directory will be created, with the name based on your IOCCC registration
+username, which is in the form of a UUID and submission number; see the
+rules for more details on this, and in particular Rule
+17.
If the subdirectory in the work directory already exists, you will have to
+move it, remove it or otherwise specify a different work directory (NOT the
+subdirectory), as it needs to be empty and the mkiocccentry(1) tool does not
+check this for you as it could not do anything about anyway.
This subdirectory is where your files will be copied to. Your submission
+tarball (which you will upload to the submit server) that txzchk(1) will
+validate will be placed in the work directory, and its contents will
+be the subdirectory with your submission’s files.
The mkiocccentry(1) tool will ask you for information about your
+submission as well as author details (that will only be looked at if the
+submission wins), run some tests and run a number of other tools, as already
+mentioned and as described below.
mkiocccentry and its related tools?After you +download the mkiocccentry repo +by running:
+git clone https://github.com/ioccc-src/mkiocccentry.git
+or downloading the zip file, you should change to the mkiocccentry directory so you can compile the tools. See the
+FAQ on “compiling mkiocccentry”
+at the mkiocccentry repo.
See also the +mkiocccentry repo FAQ +for more up to date information on downloading, compiling, and related FAQ information.
+Jump to: top
+Yes! The mkiocccentry(1) tool has some options to help write OR read from an
+answers file so you do not have to input the author(s) or the submission
+details (like the abstract, summary etc.), just to change a file.
To write to answers.txt try:
mkiocccentry -a answers.txt ...
+Alternatively, if you wish to overwrite a file, you can use the -A
+flag with the same option argument. Be very careful that you do not accidentally
+overwrite your prog.c or some other important file!
To make use of the answers file, use the -i answers option like:
mkiocccentry -i answers.txt ...
There are types of entries that are frequently submitted to the IOCCC. While we do not wish to prevent people from sending @@ -691,7 +770,7 @@ of the same theme.
Jump to: top
We recommend starting with the sample
@@ -714,12 +793,12 @@ your Makefile should copy prog.c into the desired file
make compatible make(1)
command that is compatible with GNU Make version 3.81.
Jump to: top
-While your entry’s source filename, as submitted, must be prog.c, your entry’s Makefile
may copy prog.c to a different filename as part of the compiling/building process. For example:
... Makefile continues above ...
+ # Makefile continues above ...
all: desired_name
@@ -737,12 +816,12 @@ may copy prog.c to a different filename as part of the compiling/bu
clobber: clean
rm -f desired_name.c desired_name
- ... Makefile continues below ...
+ # Makefile continues below ...
We recommend that the make clobber rule remove files that your entry
creates as part of the compiling/building process.
You may also copy the compiled prog into a different file as part of compiling process.
For example:
... Makefile continues above ...
+ # Makefile continues above ...
all: desired_name
@@ -756,12 +835,12 @@ For example:
clobber: clean
rm -f desired_name
- ... Makefile continues below ...
+ # Makefile continues below ...
Jump to: top
Jump to: top
The IOCCC judges to welcome feedback on the IOCCC @@ -794,7 +873,7 @@ discussion.
Jump to: top
We realise that the IOCCC rules, IOCCC guidelines @@ -841,7 +920,7 @@ FAQ on “rules, guidelines, tools feedback”.
Jump to: top
The IOCCC makes extensive use of markdown. @@ -857,7 +936,7 @@ as it lists things you should not use in markdown files.
See also CommonMark Spec.Jump to: top
mkiocccentry tool?mkiocccentry tool?As the mkiocccentry toolkit is crucial in the contest, both for submitters and the judges, if you find a bug @@ -869,7 +948,7 @@ FAQ on “mkiocccentry repo.
Jump to: top
.auth.json file?.auth.json file?This file is constructed by the mkiocccentry(1) prior to forming the xz
compressed tarball of your submission. The .auth.json file contains
@@ -1139,7 +1218,7 @@ validate the .auth.json file.
Jump to: top
.info.json file?.info.json file?This file is constructed by the mkiocccentry(1) prior to forming the xz
compressed tarball of your submission. The .info.json file contains
@@ -1575,7 +1654,7 @@ FAQ on “validating JSON documents”.
Jump to: top
If you want or need to verify that a JSON document (as a string or file) is @@ -1606,7 +1685,7 @@ the tool.
Jump to: top
.auth.json and/or .info.json files?.auth.json and/or .info.json files?If you want to validate the .auth.json or .info.json files you
@@ -1648,109 +1727,171 @@ it will report this as an error. Thus, if you were to package y
submission manually then you would be violating Rule
17.
Jump to: top
-The tool that validates submission tarballs can be obtained from the IOCCC
-mkiocccentry repo. The
-mkiocccentry tool itself will run the validator after forming the tarball.
-However, you may wish to manually validate the tarball. The tool that does this
-is txzchk.
If you wish to validate the tarball without running the mkiocccentry(1) tool,
-for instance the tarball
-submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz you can, after
-installing the tools, do:
txzchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-Assuming that the tarball exists and is valid, you should see no output.
-If you wish to see the contents, for instance like mkiocccentry(1) does, you
-could do:
txzchk -v 1 submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-As the guidelines state, it is beyond the scope
-of this document to discuss the many tests that txzchk(1) runs; if you must
-know we refer you to the source
-code.
Jump to: top
-fnamchk tool?This tool, which is in the mkiocccentry -repo, validates the directory name -of your submission.
-Rather than mkiocccentry running this tool manually, txzchk’s algorithm uses
-the output of this tool. If you wish to validate your tarball filename manually,
-you can do so. For instance:
fnamchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-Assuming everything is OK, it would show:
----
12345678-1234-4321-abcd-1234567890ab-2
See also the -FAQ on “validating your submission tarball” +
By tradition, we do not say.
+Jump to: top
+First, PLEASE read the IOCCC markdown guidelines.
+Next, while you may put in as much or as little as you wish into your entry’s
+remarks.md file, we do have few important suggestions:
We recommend that you explain how to use your entry. Explain the +command line (if any command line options and arguments are used) +and any input or actions if applicable.
+We highly recommend that you explain why you think your entry is +well obfuscated.
+For those entries that win the IOCCC, we often use much of text from the
+remarks.md file in the Author’s remarks section of the index.html file.
+For this reason, a well written remarks.md file is considered a plus.
While not required, consider adding bit of humor to your remarks.md
+as most people who are not humor impaired, as well as the IOCCC judges
+appreciate the opportunity for a fun read as well as a chuckle or two.
Jump to: top
+Because the publication on the IOCCC site IS the award! +Anyone is free to put their IOCCC hopefuls, lookalikes and/or +entries that do not win on their web page for everyone to see.
+Jump to: top
+It takes a fair amount of time to setup, run, respond to messages, process entries, +review entries, trim down the set entries to a set of winning entries, doing the +write-up of the entries, announcing the entries, reviewing final edits of the +winning entry set, posting the winning entries, being flamed :-), tell folks who send in +late entries to wait until the next contest, etc… It takes a few weekends and +a number nights of study and work … which is hard given that we are busy with +many other activities as well.
+Note that we do not contact the author if an entry does not compile or does not +work as advertised; we might attempt to fix obvious compilation problems or +incompatibilities, but no more than that - so be sure that your entry does work +on at least a couple different platforms, at least one of them being UNIX or +SUS-conforming. See the +FAQ on “SUS” for more information.
Jump to: top
-mkiocccentry tool and how do I use it?This tool also comes from the mkiocccentry
-repo and it is required that you
-use it to package your submission. Not doing so puts you at a great risk of
-violating the Rules and in particular Rule
-17. The mkiocccentry tool first gathers your source
-code, your Makefile, your remarks, other information about your submission,
-information about the author (or authors) and then runs a lot of tests before (if
-all is OK) forming your tarball. After this is done it will additionally run the
-txzchk(1) tool (which runs the fnamchk(1) tool) on the submission tarball.
See the -FAQ on “submitting to the IOCCC” -for details on how to register for the IOCCC.
-Once you have registered, you will need to package your entry with the
-mkiocccentry tool. The below details discuss this very important tool. As it
-is complicated we will explain how to use this tool.
As the Guidelines state, the synopsis is:
- mkiocccentry [options] work_dir prog.c \
- Makefile remarks.md [file ...]
-… where work_dir is a directory that will be used to build the submission
-tarball, prog.c is your submission source code, Makefile is your submission’s
-Makefile, remarks.md are your remarks (that will be the basis of the
-README.md file which will be used to form the index.html file, if your
-submission wins) and the remaining args are the paths to any other files you
-wish to submit.
The work_dir MUST already exist, as a directory, and it is an error if it
-is not a directory that can be written to. In this directory your submission
-directory will be created, with the name based on your IOCCC registration
-username, which is in the form of a UUID and submission number; see the
-rules for more details on this, and in particular Rule
-17.
If the subdirectory in the work directory already exists, you will have to
-move it, remove it or otherwise specify a different work directory (NOT the
-subdirectory), as it needs to be empty and the mkiocccentry(1) tool does not
-check this for you as it could not do anything about anyway.
This subdirectory is where your files will be copied to. Your submission
-tarball (which you will upload to the submit server) that txzchk(1) will
-validate will be placed in the work directory, and its contents will
-be the subdirectory with your submission’s files.
The mkiocccentry(1) tool will ask you for information about your
-submission as well as author details (that will only be looked at if the
-submission wins), run some tests and run a number of other tools, as already
-mentioned and as described below.
To help you with editing a submission, the mkiocccentry(1) tool has
-some options to write OR read from an answers file so you do not have to input
-the information about the author(s) and the submission itself, after saving the
-answers to a file. To write to answers.txt try:
mkiocccentry -a answers.txt ...
-Alternatively, if you wish to overwrite a file, you can use the -A
-flag with the same option argument. Be very careful that you do not accidentally
-overwrite your prog.c or some other important file!
To make use of the answers file, use the -i answers option like:
mkiocccentry -i answers.txt ...
+Are you trying to trick us? :-)
+By tradition, we do not say how many judging rounds we have in a given IOCCC.
+We often report when the IOCCC judges start the 1st round, and then usually +report when the IOCCC judges start near final judging rounds, and sometimes we +also report when we enter what we believe is the final judging round, so you may +guess that we have at least 3 rounds. :-) The actual number of rounds is +certainly more than 3.
+Jump to: top
+In some years, the IOCCC judges discover a truly amazing IOCCC entry that +stands out among all of the other IOCCC entries received that year. +For such an IOCCC entry, the IOCCC judges award a “Grand Prize” +or “Best of Show award.
+In 1984-1987, the grand prize winning entries are:
+ +Starting from 1988, the entry we liked the most in that year is called +“Best of Show”. Here are the “Best of Show” entries:
+In 1993, 1994 and 1995 the judges were unable to select a clear overall +winning entry. So to give a nod to the entry that had the highest approval ranking +from the judges, they used the following awards:
+These could be considered the ‘best entry’ for those years with 1 or +more other entries that came in close behind.
+Jump to: top
+Once the IOCCC closes, the judges will:
+Judge the submissions.
Select the winning entries and announce them on the @IOCCC +mastodon feed.
Notify the authors of entries that won the IOCCC via email using their previously +registered email address.
Announce who are authors of this year’s winning IOCCC entries via the @IOCCC mastodon +feed.
Upload the winning code to the Official IOCCC winner +repo.
Update the Official IOCCC website, and in particular +display this year’s winning IOCCC entries at the top of the IOCCC +winning entries page. This is done by updating this repo.
Update the IOCCC news page, also by updating this repo.
Jump to: top
+Jump to: top
mkiocccentry checksmkiocccentry(1) will check and warn about the following conditions:
See also the Guidelines and the Rules (and in particular Rule 17).
Jump to: top
-mkiocccentry and its related tools?After you -downloaded the mkiocccentry repo
-Quoting from the mkiocccentry repo FAQ:
+The tool that validates submission tarballs can be obtained from the IOCCC
+mkiocccentry repo. The
+mkiocccentry tool itself will run the validator after forming the tarball.
+However, you may wish to manually validate the tarball. The tool that does this
+is txzchk.
If you wish to validate the tarball without running the mkiocccentry(1) tool,
+for instance the tarball
+submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz you can, after
+installing the tools, do:
txzchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+Assuming that the tarball exists and is valid, you should see no output.
+If you wish to see the contents, for instance like mkiocccentry(1) does, you
+could do:
txzchk -v 1 submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+As the guidelines state, it is beyond the scope
+of this document to discuss the many tests that txzchk(1) runs; if you must
+know we refer you to the source
+code.
Jump to: top
+fnamchk tool?This tool, which is in the mkiocccentry +repo, validates the directory name +of your submission.
+Rather than mkiocccentry running this tool manually, txzchk’s algorithm uses
+the output of this tool. If you wish to validate your tarball filename manually,
+you can do so. For instance:
fnamchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+Assuming everything is OK, it would show:
--git clone https://github.com/ioccc-src/mkiocccentry.git
+
12345678-1234-4321-abcd-1234567890ab-2
You need to compile the mkiocccentry and related tools.
-Quoting from the mkiocccentry repo FAQ:
---cd mkiocccentry ; make clobber all
-
See the -mkiocccentry repo FAQ -for more up to date information on downloading, compiling, and related FAQ information.
-Jump to: top
-Jump to: top
-It was a dark and stormy night…
-OK, let’s go back to 1984, not 1830: one day (1984 March 23 to be exact), Larry Bassel -and I (Landon Curt Noll) were working for National Semiconductor’s Genix porting -group, and we were both in our offices trying to fix some very broken code.
-Larry had been trying to fix a bug in the classic Bourne shell (C code #defined
-to death to sort of look like Algol) and I had been working on the finger(1)
-program from early BSD (a bug ridden finger implementation to be sure).
We happened to both wander (at the same time) out to the hallway -in Building 7C to clear our heads.
-We began to compare notes: ‘You won’t believe the code I am trying to fix’.
-And: ’Well you cannot imagine the brain damage level of the code I’m trying to -fix’.
-As well as: ’It’s more than bad code, the author really had to try to make it -this bad!
-After a few minutes we wandered back into my office where I posted a -flame to -net.lang.c -inviting people to try and out obfuscate the UN*X source code we had just been working on.
-BTW: I (Landon Curt Noll) had to post this typo -correction. -Thus began the tradition of putting typos in the contest rules and guidelines -… to make them more obfuscated of course! :-)
-BTW: This posting was made back in the days when AT&T was the evil giant. -Now, Microsoft makes AT&T look mild and kind in comparison. :-( (IMHO) ).
-BTW: See the story about the ‘Bill Gates’ award. :-)
-OK, back to the story.
-We (Larry and I) received a number of entries by email. -When we began to receive messages from outside of the US, Larry and I -decided to include International in the name.
-The -1st IOCCC entries -were posted on 17 April 1984.
-There were 4 entries that won in 1984:
- -BTW: The (dis)honorable mention wished to remain anonymous. -While many have asked who it was, we have continued to follow the -author’s wish to remain anonymous.
-A few years ago, we asked the author if they still wanted to remain anonymous. -They said: ‘Yes, I want to keep my anonymity. But you can tell them that I am well known for my connection to the -C language’. It was not until 2001 that another anonymous -entry received an award.
-BTW: The 1984/mullender remains one of my (Landon Curt Noll) all time favorites.
-The name used in the posting of the 1st winning IOCCC -entry -posting was International Obfuscated C Code Contest or -IOCCC for short.
-The posting said ‘1st annual’, so in 1985 we held the 2nd IOCCC contest -and the tradition continues as the longest running contest on the Internet.
-P.S. Part of the inspiration for making the IOCCC a contest goes to the -Bulwer-Lytton fiction contest.
-Jump to: top
-Some years, such as 1997, 1999, 2002-2003, 2007-2010, 2016-2017, 2021-2023, no IOCCC was held.
-While we try to hold the IOCCC every year, sometime the other demands on the IOCCC judges -do not permit us to hold a new IOCCC.
-The pause during the 2021-2023 period was due to the IOCCC judges developing tools to -make it much more likely for the IOCCC to be held on a yearly basis later on.
-Jump to: top
-The long history of the official IOCCC website can be -viewed at the Internet Wayback Machine Wayback Machine.
-One can view several thousand snapshots showing how the IOCCC website has -evolved going back -as far as 1998 Dec 12 -www.ioccc.org.
-On 2020 Dec 31, the IOCCC source tree was moved to the IOCCC winner -repo on -GitHub. From this point on, the official IOCCC web -site became a GitHub Pages -website.
-Furthermore, a bzip2 compressed tarball containing the released
-IOCCC entry source code may be found under the
-archive/historic directory. The file
-archive-all.tar.bz2 contains
-all years and the individual years are in the form
-archive/historic/archive-YYYY.tar.bz2.
These files were obtained from the Internet Wayback -Machine from the snapshot of the website -on 2020 Dec -28. -See archive/historic/index.html for -details about these bzip2 compressed tarballs.
-The Official IOCCC winner repo -was created on 2020 Dec -29.
-An IOCCC judge formed a local -directory git repo on Tue Dec 29 23:48:30 -2020 -0800 via commit -28efc67f5dd692a3544708bf7fa26286adb82dfb -and then on Wed Dec 30 16:57:03 2020 -0800 added a preview of -1984-2019 via commit -c0663537cb88d39b74285a930ff1a668c6d5968b.
-On 2020 Dec 30, with commit -c0663537cb88d39b74285a930ff1a668c6d5968b, -the official IOCCC website of 2022 Dec -29 was -uploaded into the Official IOCCC winner -repo.
-The winning -entries -of the IOCCC 2020, -after a far too long of a delay -(due in part to a former IOCCC judge whose resignation was noted on -2021 Jan 04 commit) -from their initial 2020 Jul 25 -announcement, -were added by an IOCCC judge -to their local git repository and then were -merged into the Official IOCCC winner repo on 2020 Dec -31.
-These 2020 IOCCC winning entries, -as shown in the Internet Wayback Machine -snapshot of 2021 Jan 02 -were the first IOCCC entries to have been released via -git and GitHub.
-Starting on 2020 Dec -30 -edits to the Official IOCCC winner -repo began.
-The local git repository of an IOCCC -judge was edited starting Wed -Dec 30 16:57:03 2020 --0800 -and was occasionally committed to the Official IOCCC winner -repo.
-The first accepted pull request to -the Official IOCCC winner repo was made -by Yusuke Endoh on 2021 Jan -5.
-Between Wed Dec 30 16:57:03 2020 --0800 -and Sat Jan 29 21:56:53 2022 --0800, -an IOCCC judge made edits to -their local repository with occasional pushes to the Official IOCCC winner -repo and the Official -www.ioccc.org website. After -that time and until the Great Fork Merge, very few changes -were made to the Official IOCCC winner -repo and the Official -www.ioccc.org website most of -which were news updates.
-While the temp-test-ioccc -repo has history -going back to 2020 Dec -29, -the repo was forked on Sun Sep 18 17:30:00 2022 -0700. The -first push into the temp-test-ioccc -repo -occurred on Sun Sep 18 11:15:49 2022 -0700.
-At this same time, the temp-test-ioccc website went live.
-Edits were made by an IOCCC judge -to their local git repository and were pushed into the temp-test-ioccc -repo -and to the temp-test-ioccc website.
-The first accepted pull request -made directly to the temp-test-ioccc -repo on -Wed Feb 22 05:44:55 2023 -0800 with commit -11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec -by Cody Boone -Ferguson.
-A decision was made by the -IOCCC to -mostly use frequent commits to individual components of the IOCCC, -rather than to use occasional site wide massive updates in order -to improve the tractability of changes made to components of the -IOCCC such as IOCCC entries although occasionally site wide updates -were performed in order to address an issue common to many IOCCC -entries. And while some people prefer infrequent updates to a repo -the IOCCC judges believe -the ability to trace changes with commit messages is important.
-Changes to the IOCCC content included things such as:
-winners.html, via the gen-authors.sh tool.As of 2024 Sep 1 temp-test-ioccc -repo -there were 5858 commits ahead -of the IOCCC winner repo.
-On 202y mm dd, the temporary repo was merged back into the IOCCC winner -repo resulting in many, many substantial improvements -to the official IOCCC website.
-Jump to: top
-The IOCCC size rule has changed over the years.
-In later years, Rule 2 was split into two parts. These two parts of Rule 2 are:
-NOTE: The size rule was actually rule 1.
-NOTE: The size rule was actually rule 1.
-NOTE: The size rule was actually rule 1.
-Jump to: top
-The Great Fork Merge was when thousands of changes that had been applied to the -temp-test-ioccc repo was applied -to the Official IOCCC winner repo causing the -Official IOCCC website to be updated into its present form.
-See the -FAQ on “Great Fork Merge Date” +
See also the +FAQ on “validating your submission tarball” for more information.
Jump to: top
-The term IOCCC BOF stood for International Obfuscated C Code -Contest Birds Of a Feather. It was a special session held at the -general USENIX conference, usually -immediately after the BSD BOF, where the winners of a new IOCCC were -announced in the early years of the IOCCC.
-Jump to: top
-Jump to: top
-By tradition, we do not say.
-Jump to: top
-First, PLEASE read the IOCCC markdown guidelines.
-Next, while you may put in as much or as little as you wish into your entry’s
-remarks.md file, we do have few important suggestions:
We recommend that you explain how to use your entry. Explain the -command line (if any command line options and arguments are used) -and any input or actions if applicable.
-We highly recommend that you explain why you think your entry is -well obfuscated.
-For those entries that win the IOCCC, we often use much of text from the
-remarks.md file in the Author’s remarks section of the index.html file.
-For this reason, a well written remarks.md file is considered a plus.
While not required, consider adding bit of humor to your remarks.md
-as most people who are not humor impaired, as well as the IOCCC judges
-appreciate the opportunity for a fun read as well as a chuckle or two.
Jump to: top
-Because the publication on the IOCCC site IS the award! -Anyone is free to put their IOCCC hopefuls, lookalikes and/or -entries that do not win on their web page for everyone to see.
-Jump to: top
-It takes a fair amount of time to setup, run, respond to messages, process entries, -review entries, trim down the set entries to a set of winning entries, doing the -write-up of the entries, announcing the entries, reviewing final edits of the -winning entry set, posting the winning entries, being flamed :-), tell folks who send in -late entries to wait until the next contest, etc… It takes a few weekends and -a number nights of study and work … which is hard given that we are busy with -many other activities as well.
-Note that we do not contact the author if an entry does not compile or does not -work as advertised; we might attempt to fix obvious compilation problems or -incompatibilities, but no more than that - so be sure that your entry does work -on at least a couple different platforms, at least one of them being UNIX or -SUS-conforming. See the -FAQ on “SUS” -for more information.
-Jump to: top
-Are you trying to trick us? :-)
-By tradition, we do not say how many judging rounds we have in a given IOCCC.
-We often report when the IOCCC judges start the 1st round, and then usually -report when the IOCCC judges start near final judging rounds, and sometimes we -also report when we enter what we believe is the final judging round, so you may -guess that we have at least 3 rounds. :-) The actual number of rounds is -certainly more than 3.
-Jump to: top
-In some years, the IOCCC judges discover a truly amazing IOCCC entry that -stands out among all of the other IOCCC entries received that year. -For such an IOCCC entry, the IOCCC judges award a “Grand Prize” -or “Best of Show award.
-In 1984-1987, the grand prize winning entries are:
- -Starting from 1988, the entry we liked the most in that year is called -“Best of Show”. Here are the “Best of Show” entries:
-In 1993, 1994 and 1995 the judges were unable to select a clear overall -winning entry. So to give a nod to the entry that had the highest approval ranking -from the judges, they used the following awards:
-These could be considered the ‘best entry’ for those years with 1 or -more other entries that came in close behind.
-Jump to: top
-Once the IOCCC closes, the judges will:
-Judge the submissions.
Select the winning entries and announce them on the @IOCCC -mastodon feed.
Notify the authors of entries that won the IOCCC via email using their previously -registered email address.
Announce who are authors of this year’s winning IOCCC entries via the @IOCCC mastodon -feed.
Upload the winning code to the Official IOCCC winner -repo.
Update the Official IOCCC website, and in particular -display this year’s winning IOCCC entries at the top of the IOCCC -winning entries page. This is done by updating this repo.
Update the IOCCC news page, also by updating this repo.
Jump to: top
-Jump to: top
In general the best way to compile everything in an entry directory is to run:
@@ -2375,7 +2065,7 @@ were to do something likemake CC=gcc=mp-12 it would register as Some entries that won the IOCCC, particularly entries from long ago, no longer compile on more @@ -2408,7 +2098,7 @@ compiles does not mean it will run on your specific system.
Jump to: top
Unfortunately some older entries are non-portable and require 32-bit support or @@ -2440,7 +2130,7 @@ for more information about pull requests.
Jump to: top
Although we have fixed numerous entries to work with clang (sometimes in an alt @@ -2486,7 +2176,7 @@ FAQ on “GitHub pull request” for more information about pull requests.
Jump to: top
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
longer be available, code wise, except for Plan 9, but Plan 9 was never used for
@@ -2497,7 +2187,7 @@ judging the IOCCC. A Unix man page for cb
Jump to: top
Jump to: top
This depends on your operating system but below are instructions for Linux and macOS with alternative methods for macOS and different package managers with Linux.
@@ -2721,7 +2411,7 @@ FAQ on “GitHub pull request” for more information about pull requests.Jump to: top
This depends on your operating system but below are instructions for Linux and macOS with alternative methods for macOS and different package managers with Linux.
@@ -2752,12 +2442,14 @@ for downloading, installing and using ncurses.Jump to: top
This might depend on the entry but most likely the Swiss Army Knife of sound processing programs, SoX, will work. How to -install depends on your OS.
+install depends on your OS. See below. +After it is installed, you should be able to compile and use the program as +described in the index.html file.
As root or via sudo:
dnf install -y sox sox-devel
@@ -2782,7 +2474,7 @@ include this here, at least for now.
include this here, at least for now.
Jump to: top
While we know that use of -Weverything is generally not recommended
by clang C compiler developers, we do use the -Weverything
@@ -2848,7 +2540,7 @@ better than other entries.
grep intr or whatever.
Jump to: top
What may have worked years ago may not work well or work at all today. @@ -3129,9 +2821,9 @@ provided by the author and any other file in the winning entry, found under the entry’s subdirectory.
If you downloaded 1984/mullender/1984_mullender.tar.bz2, for instance, you might
then do:
cd 1984/mullender
- make everything
- ./mullender.alt cd 1984/mullender
+ make everything
+ ./mullender.altto compile all versions and then run the alternate version (if you have
a PDP-11 or VAX-11 you would be able to run the original version). For more help
on compiling entries, see also the
@@ -3172,8 +2864,8 @@ if you switched to each entry’s directory and ran make everything
If you download the 1984 tarball, i.e. 1984/1984.tar.bz2, then you might
extract it and then switch to the directory and compile everything of each
entry:
cd 1984
- make everything cd 1984
+ make everythingFor more help on compiling entries, see also the FAQ on “IOCCC Makefile rules”.
Of course in this case you can also switch to individual entries and look at the @@ -3219,7 +2911,7 @@ inevitable in obfuscated code and even non-obfuscated code.
should be worried about too much as this is on the compiler developers, not you.Jump to: top
This depends on your operating system but below are instructions for Linux and macOS with alternative methods for macOS and different package managers with Linux.
@@ -3249,13 +2941,13 @@ for downloading, installing and using zlib.We recommend trying a method suitable for your environment first, if possible.
Jump to: top
Please see the official Ruby installation guide.
Jump to: top
First, if gem is not installed, see the gem GitHub repo.
Assuming you have git(1) installed, you can do:
Once this is done, try as root or via sudo:
gem install rake
Jump to: top
-Jump to: top
Some may wonder: “Doesn’t this tamper with the entry too much?”
@@ -3309,7 +3001,7 @@ can look almost identical.Jump to: top
We have set up make rules to easily do see what was changed in the winning IOCCC @@ -3423,7 +3115,7 @@ FAQ on “entry source code changes” for more information.
Jump to: top
Due to the fact that the original code has sometimes had to change these files are the original winning entry or as close to as possible to the original that @@ -3432,7 +3124,7 @@ author might have made a modification without saving the original).
Jump to: top
The alternate versions are exactly what they sound like, versions of their @@ -3461,7 +3153,7 @@ for more information.
Jump to: top
There are a number of reasons this was done but they usually come down to a
@@ -3478,7 +3170,7 @@ the body of the old main() and that function would call itself agai
cases, however, this had to be done even without clang objections.
Jump to: top
The reasons this was done varies. One of the earliest changes was making the old
.hint or .text files README.md files. The first time this was done was for
@@ -3503,7 +3195,7 @@ other times something else.
Jump to: top
###- What is the original source file?
Every entry has what is called the “original source file”. This is @@ -3565,13 +3257,13 @@ the source code as it is now now, try:
FAQ on “what changed” for more information and make rules relating to “original source file” differences.Jump to: top
-Jump to: top
Jump to: top
We do not ‘maintain’ the contest entries as such. The code is made available on an ‘AS @@ -3614,7 +3306,7 @@ for more information about pull requests.
Jump to: top
If you see a problem with an IOCCC entry, first check the known bugs @@ -3653,7 +3345,7 @@ have the final say in the matter.
Jump to: top
If you discover a problem with the IOCCC website that is related @@ -3677,7 +3369,7 @@ the issue. Otherwise, if you do not see the same issue reported, then feel free to open a new IOCCC website issue.
Jump to: top
For IOCCC website problems that relate to a particular IOCCC entry, please see the @@ -3737,7 +3429,7 @@ and ask for help. See FAQ on “fixing an entry” for information on opening up an IOCCC issue.
You may correct or update IOCCC author information by submitting a
GitHub pull request that modifies an author’s author_handle.json file.
We would appreciate if you try to fix the broken (the link goes nowhere) or wrong (the link goes to something that clearly is not the original intent) web link. @@ -3857,7 +3549,7 @@ FAQ on “report website problem”.
Jump to: top
The IOCCC judges run the IOCCC entirely out of @@ -3877,7 +3569,7 @@ efforts, we suggest making an Anonymous gift via the
THANK YOU in advance for your willingness to assist!
Jump to: top
-Jump to: top
As entries have been fixed it is entirely possible that some of the entries no @@ -3975,7 +3667,7 @@ get around rule 2 size limits is discouraged).
Jump to: top
While IOCCC judges look favorably on most requests to use IOCCC material,
@@ -4035,7 +3727,7 @@ For additional information on the Copyright and CC BY-SA
FAQ 6.4: Why do you sometimes use the first person plural?
+Why do you sometimes use the first person plural?
Jump to: top
An author_handle is string that refers to a given author and is unique to the
IOCCC. Each author has exactly one author_handle.
TL:DR: The contents of these JSON files contain the best known @@ -4429,7 +4121,7 @@ and/or correct IOCCC author information.
Jump to: top
entry_id?entry_id?An entry_id is a string that identifies a winning entry of the IOCCC.
An entry_id is a 4-digit year, followed by an underscore, followed by a directory name.
.top, .allyear, .year and .path files?.top, .allyear, .year and .path files?The IOCCC is now attempting to use the following terms:
Jump to: top
First, if you do not already have a GitHub account or you have not installed an @@ -4677,7 +4369,7 @@ example, you would type:
Jump to: top
Disclaimer: This FAQ is not a license, has no legal @@ -4704,7 +4396,7 @@ including, of course, the IOCCC winners themselves! It is designed to help ensure that everyone may enjoy the IOCCC.
Jump to: top
The IOCCC uses Mastodon for news updates, announcements, and for various other social media purposes.
@@ -4732,7 +4424,7 @@ mastodon feed page and/or mastodon app from time to time to view IOCCC mastodon updates.Jump to: top
If you are an author of a winning entry, you may find your own author_handle by going to your entry in the authors.html web page and viewing the string @@ -4765,7 +4457,7 @@ FAQ on “Author, Entry, Submission” for more information on terms such as author, entry, and submission.
Jump to: top
Sometimes an author will state that for best viewing purposes you should have your tabstop set at say 4 or 8. If you use vim or vi or vim in no compatible @@ -4876,7 +4568,7 @@ JSON files.
name’s initial and then scroll down (if necessary) to the author in question.Jump to: top
.entry.json file and how is it used?.entry.json file and how is it used?TL:DR: The contents of this JSON file contain information about each winning entry in JSON format.
@@ -5292,7 +4984,7 @@ name. Theentry_text for the try scripts will be
Jump to: top
-FAQ 6.18: I do not understand the IOCCC, can you explain it to me?
+I do not understand the IOCCC, can you explain it to me?
The IOCCC stands for the International Obfuscated C Code Contest.
The IOCCC is a C programming contest.
@@ -5334,6 +5026,330 @@ and inexplicable.
already happened.” 😜
Share and enjoy! ☺️
+
+
+Section 6: History of the IOCCC
+
+
+Jump to: top
+
+
+
+How did the IOCCC get started?
+
+
+
+It was a dark and stormy night…
+OK, let’s go back to 1984, not 1830: one day (1984 March 23 to be exact), Larry Bassel
+and I (Landon Curt Noll) were working for National Semiconductor’s Genix porting
+group, and we were both in our offices trying to fix some very broken code.
+Larry had been trying to fix a bug in the classic Bourne shell (C code #defined
+to death to sort of look like Algol) and I had been working on the finger(1)
+program from early BSD (a bug ridden finger implementation to be sure).
+We happened to both wander (at the same time) out to the hallway
+in Building 7C to clear our heads.
+We began to compare notes: ‘You won’t believe the code I am trying to fix’.
+And: ’Well you cannot imagine the brain damage level of the code I’m trying to
+fix’.
+As well as: ’It’s more than bad code, the author really had to try to make it
+this bad!
+After a few minutes we wandered back into my office where I posted a
+flame to
+net.lang.c
+inviting people to try and out obfuscate the UN*X source code we had just been working on.
+BTW: I (Landon Curt Noll) had to post this typo
+correction.
+Thus began the tradition of putting typos in the contest rules and guidelines
+… to make them more obfuscated of course! :-)
+BTW: This posting was made back in the days when AT&T was the evil giant.
+Now, Microsoft makes AT&T look mild and kind in comparison. :-( (IMHO) ).
+BTW: See the story about the ‘Bill Gates’ award. :-)
+OK, back to the story.
+We (Larry and I) received a number of entries by email.
+When we began to receive messages from outside of the US, Larry and I
+decided to include International in the name.
+The
+1st IOCCC entries
+were posted on 17 April 1984.
+There were 4 entries that won in 1984:
+
+BTW: The (dis)honorable mention wished to remain anonymous.
+While many have asked who it was, we have continued to follow the
+author’s wish to remain anonymous.
+A few years ago, we asked the author if they still wanted to remain anonymous.
+They said: ‘Yes, I want to keep my anonymity. But you can tell them that I am well known for my connection to the
+C language’. It was not until 2001 that another anonymous
+entry received an award.
+BTW: The 1984/mullender remains one of my (Landon Curt Noll) all time favorites.
+The name used in the posting of the 1st winning IOCCC
+entry
+posting was International Obfuscated C Code Contest or
+IOCCC for short.
+The posting said ‘1st annual’, so in 1985 we held the 2nd IOCCC contest
+and the tradition continues as the longest running contest on the Internet.
+P.S. Part of the inspiration for making the IOCCC a contest goes to the
+Bulwer-Lytton fiction contest.
+Jump to: top
+
+Why are some years missing IOCCC entries?
+
+Some years, such as 1997, 1999, 2002-2003, 2007-2010, 2016-2017, 2021-2023, no IOCCC was held.
+While we try to hold the IOCCC every year, sometime the other demands on the IOCCC judges
+do not permit us to hold a new IOCCC.
+The pause during the 2021-2023 period was due to the IOCCC judges developing tools to
+make it much more likely for the IOCCC to be held on a yearly basis later on.
+Jump to: top
+
+
+What is the history of the IOCCC website?
+
+
+In the beginning of www.ioccc.org
+The long history of the official IOCCC website can be
+viewed at the Internet Wayback Machine Wayback Machine.
+One can view several thousand snapshots showing how the IOCCC website has
+evolved going back
+as far as 1998 Dec 12
+www.ioccc.org.
+On 2020 Dec 31, the IOCCC source tree was moved to the IOCCC winner
+repo on
+GitHub. From this point on, the official IOCCC web
+site became a GitHub Pages
+website.
+2020 Dec 28 bzip2 compressed tarball archive
+Furthermore, a bzip2 compressed tarball containing the released
+IOCCC entry source code may be found under the
+archive/historic directory. The file
+archive-all.tar.bz2 contains
+all years and the individual years are in the form
+archive/historic/archive-YYYY.tar.bz2.
+These files were obtained from the Internet Wayback
+Machine from the snapshot of the website
+on 2020 Dec
+28.
+See archive/historic/index.html for
+details about these bzip2 compressed tarballs.
+2022 Dec 29 Official IOCCC winner repo
+The Official IOCCC winner repo
+was created on 2020 Dec
+29.
+2020 Dec 30 IOCCC content uploaded to GitHub
+An IOCCC judge formed a local
+directory git repo on Tue Dec 29 23:48:30
+2020 -0800 via commit
+28efc67f5dd692a3544708bf7fa26286adb82dfb
+and then on Wed Dec 30 16:57:03 2020 -0800 added a preview of
+1984-2019 via commit
+c0663537cb88d39b74285a930ff1a668c6d5968b.
+On 2020 Dec 30, with commit
+c0663537cb88d39b74285a930ff1a668c6d5968b,
+the official IOCCC website of 2022 Dec
+29 was
+uploaded into the Official IOCCC winner
+repo.
+2020 IOCCC winning entries released using git via GitHub
+The winning
+entries
+of the IOCCC 2020,
+after a far too long of a delay
+(due in part to a former IOCCC judge whose resignation was noted on
+2021 Jan 04 commit)
+from their initial 2020 Jul 25
+announcement,
+were added by an IOCCC judge
+to their local git repository and then were
+merged into the Official IOCCC winner repo on 2020 Dec
+31.
+These 2020 IOCCC winning entries,
+as shown in the Internet Wayback Machine
+snapshot of 2021 Jan 02
+were the first IOCCC entries to have been released via
+git and GitHub.
+2020 Dec 30 thru 202y MMM DD - Work on the temp-test-ioccc GitHub repo
+Starting on 2020 Dec
+30
+edits to the Official IOCCC winner
+repo began.
+The local git repository of an IOCCC
+judge was edited starting Wed
+Dec 30 16:57:03 2020
+-0800
+and was occasionally committed to the Official IOCCC winner
+repo.
+The first accepted pull request to
+the Official IOCCC winner repo was made
+by Yusuke Endoh on 2021 Jan
+5.
+Between Wed Dec 30 16:57:03 2020
+-0800
+and Sat Jan 29 21:56:53 2022
+-0800,
+an IOCCC judge made edits to
+their local repository with occasional pushes to the Official IOCCC winner
+repo and the Official
+www.ioccc.org website. After
+that time and until the Great Fork Merge, very few changes
+were made to the Official IOCCC winner
+repo and the Official
+www.ioccc.org website most of
+which were news updates.
+While the temp-test-ioccc
+repo has history
+going back to 2020 Dec
+29,
+the repo was forked on Sun Sep 18 17:30:00 2022 -0700. The
+first push into the temp-test-ioccc
+repo
+occurred on Sun Sep 18 11:15:49 2022 -0700.
+At this same time, the temp-test-ioccc website went live.
+Edits were made by an IOCCC judge
+to their local git repository and were pushed into the temp-test-ioccc
+repo
+and to the temp-test-ioccc website.
+The first accepted pull request
+made directly to the temp-test-ioccc
+repo on
+Wed Feb 22 05:44:55 2023 -0800 with commit
+11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec
+by Cody Boone
+Ferguson.
+A decision was made by the
+IOCCC to
+mostly use frequent commits to individual components of the IOCCC,
+rather than to use occasional site wide massive updates in order
+to improve the tractability of changes made to components of the
+IOCCC such as IOCCC entries although occasionally site wide updates
+were performed in order to address an issue common to many IOCCC
+entries. And while some people prefer infrequent updates to a repo
+the IOCCC judges believe
+the ability to trace changes with commit messages is important.
+Changes to the IOCCC content included things such as:
+
+- Moving IOCCC entries into their own separate directories.
+- Establishing a detailed manifest for an IOCCC winning entries.
+- Fixing lots and lots of typos.
+- Fixing Makefiles and code to allow for nearly all winning entries to be
+compiled with/in modern systems.
+- Fixing Makefiles and code to allow for nearly all winning entries to run
+with/in modern systems.
+- Reworking the Makefiles to use a consistent set of rules.
+- Reworking the Makefiles specific to the gcc and clang C compilers.
+- Replacing the various hint files with a index.html markdown (from README.md
+files) that is more consistent across IOCCC years.
+- Generating HTML content from markdown files and JSON data files via a set of
+tools and scripts.
+- Setting up a system whereby authors of IOCCC entries may update their own
+contact information via a GitHub pull
+request.
+- Setting up to generate the top level years.html file via the
+gen-years.sh tool.
+- Setting up to generate the top level authors.html file, renamed
+from
winners.html, via the gen-authors.sh tool.
+- Making use of a new and improved IOCCC CSS for website consistency
+- Etc.
+
+
+202y mm dd The Great Fork Merge
+
+As of 2024 Sep 1 temp-test-ioccc
+repo
+there were 5858 commits ahead
+of the IOCCC winner repo.
+On 202y mm dd, the temporary repo was merged back into the IOCCC winner
+repo resulting in many, many substantial improvements
+to the official IOCCC website.
+Jump to: top
+
+
+How has the IOCCC size limit rule changed over the years?
+
+
+The IOCCC size rule has changed over the years.
+In later years, Rule 2 was split into two parts. These two parts of Rule 2 are:
+
+- Rule 2a: Overall size limit of “prog.c”
+- Rule 2b: Size of “prog.c”, w/o counting certain types of characters
+
+
+IOCCC 1984-1985
+
+NOTE: The size rule was actually rule 1.
+
+- Rule 2a: 512
+- Rule 2b: n/a
+
+
+IOCCC 1986-1987
+
+NOTE: The size rule was actually rule 1.
+
+- Rule 2a: 1024
+- Rule 2b: n/a
+
+
+IOCCC 1988-1991
+
+NOTE: The size rule was actually rule 1.
+
+- Rule 2a: 1536
+- Rule 2b: n/a
+
+
+IOCCC 1992-2000
+
+
+- Rule 2a: 3217
+- Rule 2b: 1536
+
+
+IOCCC: 2001-2012
+
+
+- Rule 2a: 4096
+- Rule 2b: 2048
+
+
+IOCCC 2013-2020
+
+
+- Rule 2a: 4096
+- Rule 2b: 2053
+
+
+IOCCC 2024-date
+
+
+- Rule 2a: 4993
+- Rule 2b: 2503
+
+Jump to: top
+
+What is the Great Fork Merge?
+
+The Great Fork Merge was when thousands of changes that had been applied to the
+temp-test-ioccc repo was applied
+to the Official IOCCC winner repo causing the
+Official IOCCC website to be updated into its present form.
+See the
+FAQ on “Great Fork Merge Date”
+for more information.
+Jump to: top
+
+
+What is an IOCCC BOF?
+
+
+The term IOCCC BOF stood for International Obfuscated C Code
+Contest Birds Of a Feather. It was a special session held at the
+general USENIX conference, usually
+immediately after the BSD BOF, where the winners of a new IOCCC were
+announced in the early years of the IOCCC.
+Jump to: top
Jump to: top
+ mkiocccentry [options] work_dir prog.c \
+ Makefile remarks.md [file ...]
+```
+
+... where `work_dir` is a directory that will be used to build the submission
+tarball, `prog.c` is your submission source code, `Makefile` is your submission's
+`Makefile`, `remarks.md` are your remarks (that will be the basis of the
+`README.md` file which will be used to form the `index.html` file, if your
+submission wins) and the remaining args are the paths to any other files you
+wish to submit.
+
+The `work_dir` **MUST** already exist, as a directory, and it is an error if it
+is not a directory that can be written to. In **this** directory your **submission
+directory** will be created, with the name based on your IOCCC registration
+username, which is **in the form of a UUID** and submission number; see the
+[rules](next/rules.html) for more details on this, and in particular [Rule
+17](next/rules.html#rule17).
+
+If the **_subdirectory_ in the _work directory_** already exists, you will have to
+move it, remove it or otherwise specify a different work directory (**NOT** the
+subdirectory), as it needs to be empty and the `mkiocccentry(1)` tool does not
+check this for you as it could not do anything about anyway.
+
+This _subdirectory is where your files will be **copied** to_. Your _submission
+tarball_ (which you will upload to the submit server) that `txzchk(1)` will
+validate _will be placed in the **work directory**_, and **its _contents_ will
+be the _subdirectory_ with your submission's files**.
+
+The `mkiocccentry(1)` tool will ask you for information about your
+submission _as well as author details_ (that will only be looked at if the
+submission wins), run some tests and run a number of other tools, as already
+mentioned and as described below.
+
+
+
+
+
+
+### FAQ 0.16 - How do I compile `mkiocccentry` and its related tools?
+
+
+
+After you
+[download the mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#download)
+by running:
+
+```
+git clone https://github.com/ioccc-src/mkiocccentry.git
+```
+
+or downloading the zip file, you should change to the `mkiocccentry` directory so you can compile the tools. See the
+FAQ on "[compiling mkiocccentry](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#compiling)"
+at the `mkiocccentry` repo.
+
+See also the
+[mkiocccentry repo FAQ](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md)
+for more up to date information on downloading, compiling, and related FAQ information.
+
+Jump to: [top](#)
+
+
+### Is there a way to not have to re-enter the same information, when making a change to my submission?
+
+
+Yes! The `mkiocccentry(1)` tool has some options to help write _OR_ read from an
+answers file so you do not have to input the author(s) or the submission
+details (like the abstract, summary etc.), just to change a file.
+
+To write to `answers.txt` try:
+
+```
+ mkiocccentry -a answers.txt ...
+```
+
+Alternatively, if you wish to overwrite a file, you can use the `-A`
+flag with the same option argument. Be **very careful** that you do not accidentally
+overwrite your `prog.c` or some other important file!
+
+To make use of the answers file, use the `-i answers` option like:
+
+```
+ mkiocccentry -i answers.txt ...
+```
+
-### FAQ 0.1: What types of entries have been frequently submitted to the IOCCC?
+### What types of entries have been frequently submitted to the IOCCC?
There are types of entries that are frequently submitted to the IOCCC.
@@ -394,7 +504,7 @@ Jump to: [top](#)
-### FAQ 0.2: What should I put in my submission's Makefile?
+### What should I put in my submission Makefile?
@@ -425,15 +535,15 @@ command that is compatible with GNU Make version 3.81.
Jump to: [top](#)
-
-### FAQ 0.3: May I use a different source or compiled filename than prog.c or prog?
+
+### May I use a different source or compiled filename than prog.c or prog?
While your entry's source filename, as submitted, must be `prog.c`, your entry's `Makefile`
may copy `prog.c` to a different filename as part of the compiling/building process. For example:
```
- ... Makefile continues above ...
+ # Makefile continues above ...
all: desired_name
@@ -451,7 +561,7 @@ may copy `prog.c` to a different filename as part of the compiling/building proc
clobber: clean
rm -f desired_name.c desired_name
- ... Makefile continues below ...
+ # Makefile continues below ...
```
We recommend that the `make clobber` rule remove files that your entry
@@ -461,7 +571,7 @@ You may also copy the compiled `prog` into a different file as part of compiling
For example:
```
- ... Makefile continues above ...
+ # Makefile continues above ...
all: desired_name
@@ -475,7 +585,7 @@ For example:
clobber: clean
rm -f desired_name
- ... Makefile continues below ...
+ # Makefile continues below ...
```
Jump to: [top](#)
@@ -484,7 +594,7 @@ Jump to: [top](#)
-### FAQ 0.4: What platform should I assume for my submission?
+### What platform should I assume for my submission?
@@ -499,7 +609,7 @@ Jump to: [top](#)
-### FAQ 0.5: How may I comment or make a suggestion on IOCCC rules, guidelines and tools?
+### How can I comment or make a suggestion on IOCCC rules, guidelines and tools?
@@ -527,7 +637,7 @@ Jump to: [top](#)
-### FAQ 0.6: What is the best way to ask a question about the IOCCC rules, guideline and tools?
+### What is the best way to ask a question about the IOCCC rules, guideline and tools?
@@ -587,7 +697,7 @@ Jump to: [top](#)
-### FAQ 0.7: - What are the IOCCC best practices for using markdown?
+### - What are the IOCCC best practices for using markdown?
@@ -609,7 +719,7 @@ Jump to: [top](#)
-### FAQ 0.8: How do I report bugs in a `mkiocccentry` tool?
+### How do I report bugs in an `mkiocccentry` tool?
As the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) is
@@ -626,7 +736,7 @@ Jump to: [top](#)
-### FAQ 0.9: What is a `.auth.json` file?
+### What is a `.auth.json` file?
This file is constructed by the `mkiocccentry(1)` **prior to** forming the xz
@@ -898,7 +1008,7 @@ Jump to: [top](#)
-### FAQ 0.10: What is a `.info.json` file?
+### What is a `.info.json` file?
This file is constructed by the `mkiocccentry(1)` **prior to** forming the xz
@@ -1345,7 +1455,7 @@ Jump to: [top](#)
-### FAQ 0.11: How can I validate any JSON document?
+### How can I validate any JSON document?
@@ -1396,7 +1506,7 @@ Jump to: [top](#)
-### FAQ 0.12: How can I validate my `.auth.json` and/or `.info.json` files?
+### How can I validate my `.auth.json` and/or `.info.json` files?
@@ -1449,154 +1559,224 @@ submission manually then you would be violating [Rule
Jump to: [top](#)
-
-
-
-### FAQ 0.13 - How can I validate my submission tarball?
+
+
+
+
+## Section 1: IOCCC Judging process
-
-
-
-The tool that validates submission tarballs can be obtained from the [IOCCC
-mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). The
-`mkiocccentry` tool itself will run the validator **after** forming the tarball.
-However, you may wish to manually validate the tarball. The tool that does this
-is `txzchk`.
-
-If you wish to validate the tarball without running the `mkiocccentry(1)` tool,
-for instance the tarball
-`submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz` you can, after
-installing the tools, do:
-
-```
- txzchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-```
-
-Assuming that the tarball exists and is valid, you should see no output.
-
-If you wish to see the contents, for instance like `mkiocccentry(1)` does, you
-could do:
-
-```
- txzchk -v 1 submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-```
-
-As the [guidelines state](next/guidelines.html#txzchk), it is beyond the scope
-of this document to discuss the many tests that `txzchk(1)` runs; if you must
-know we refer you to the [source
-code](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c).
Jump to: [top](#)
-
-
-### FAQ 0.14 - What is the `fnamchk` tool?
+
+
+### How many submissions do the judges receive for a given IOCCC?
-This tool, which is in the [mkiocccentry
-repo](https://github.com/ioccc-src/mkiocccentry), validates the directory name
-of your submission.
+By tradition, we do not say.
-Rather than `mkiocccentry` running this tool manually, `txzchk`'s algorithm uses
-the output of this tool. If you wish to validate your tarball filename manually,
-you can do so. For instance:
+Jump to: [top](#)
-```
- fnamchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
-```
-Assuming everything is OK, it would show:
+
+
+
+### What should I put in the remarks.md file of my submission?
+
+
+
-> `12345678-1234-4321-abcd-1234567890ab-2`
+First, **PLEASE** read the [IOCCC markdown guidelines](markdown.html).
-See also the
-FAQ on "[validating your submission tarball](#txzchk)"
+Next, while you may put in as much or as little as you wish into your entry's
+`remarks.md` file, we do have few important suggestions:
+
+We recommend that you explain how to use your entry. Explain the
+command line (if any command line options and arguments are used)
+and any input or actions if applicable.
+
+We highly recommend that you explain why you think your entry is
+well obfuscated.
+
+For those entries that win the IOCCC, we often use much of text from the
+`remarks.md` file in the _Author's remarks_ section of the `index.html` file.
+For this reason, a well written `remarks.md` file is considered a plus.
+
+While not required, consider adding bit of humor to your `remarks.md`
+as most people who are not humor impaired, as well as the IOCCC judges
+appreciate the opportunity for a fun read as well as a chuckle or two.
+
+
+#### What helps:
+
+- explaining what your entry does
+- how to entice it to do what it is supposed to do
+- what obfuscations are used
+- what are the limitations of your entry in respect of portability and/or input data
+- how it works (if you are really condescending)
+
+
+#### What does not help:
+
+- admitting that your entry is not very obfuscated (you see, the contest is
+called the **IOCCC**, not the **INVOCCC** :-) ); but even if you do not admit
+it, not very obfuscated entries have a minuscule chance to win (although
+[2000/tomx](2000/tomx/index.html) is a notable counterexample).
+- mentioning your name or any identifying information in the remark section (or
+in the C code for that matter) - we like to be unbiased during the judging
+rounds; we look at the author name only if an entry wins. See the guidelines if
+this is not clear!
+- leaving the remark section empty.
+
+Jump to: [top](#)
+
+
+
+
+### Why don't you publish submissions that do not win?
+
+
+
+Because the publication on the IOCCC site **_IS_** the award!
+Anyone is free to put their IOCCC hopefuls, lookalikes and/or
+entries that do not win on their web page for everyone to see.
+
+Jump to: [top](#)
+
+
+
+### How much time does it take to judge the contest?
+
+
+It takes a fair amount of time to setup, run, respond to messages, process entries,
+review entries, trim down the set entries to a set of winning entries, doing the
+write-up of the entries, announcing the entries, reviewing final edits of the
+winning entry set, posting the winning entries, being flamed :-), tell folks who send in
+late entries to wait until the next contest, etc... It takes a few weekends and
+a number nights of study and work ... which is hard given that we are busy with
+many other activities as well.
+
+Note that we do not contact the author if an entry does not compile or does not
+work as advertised; we might attempt to fix obvious compilation problems or
+incompatibilities, but no more than that - so be sure that your entry does work
+on at least a couple different platforms, at least one of them being UNIX or
+SUS-conforming. See the
+FAQ on "[SUS](#SUS)"
for more information.
Jump to: [top](#)
-
-### FAQ 0.15 - What is the `mkiocccentry` tool and how do I use it?
+
+
+### How many judging rounds do you have?
+
-This tool also comes from the [mkiocccentry
-repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you
-use it to package your submission. Not doing so puts you at a great risk of
-violating the [Rules](next/rules.html) and in particular [Rule
-17](next/rules.html#rule17). The `mkiocccentry` tool first gathers your source
-code, your Makefile, your remarks, other information about your submission,
-information about the author (or authors) and then runs a lot of tests before (if
-all is OK) forming your tarball. After this is done it will additionally run the
-`txzchk(1)` tool (which runs the `fnamchk(1)` tool) on the submission tarball.
+Are you trying to trick us? :-)
-See the
-FAQ on "[submitting to the IOCCC](#submit)"
-for details on how to register for the IOCCC.
+By tradition, we do not say how many judging rounds we have in a given IOCCC.
-Once you have registered, you will need to package your entry with the
-`mkiocccentry` tool. The below details discuss this very important tool. As it
-is complicated we will explain how to use this tool.
+We often report when the IOCCC judges start the 1st round, and then usually
+report when the IOCCC judges start near final judging rounds, and sometimes we
+also report when we enter what we believe is the final judging round, so you may
+guess that we have at least 3 rounds. :-) The actual number of rounds is
+certainly more than 3.
-As the [Guidelines](next/guidelines.html) state, the synopsis is:
+Jump to: [top](#)
-```
- mkiocccentry [options] work_dir prog.c \
- Makefile remarks.md [file ...]
-```
-... where `work_dir` is a directory that will be used to build the submission
-tarball, `prog.c` is your submission source code, `Makefile` is your submission's
-`Makefile`, `remarks.md` are your remarks (that will be the basis of the
-`README.md` file which will be used to form the `index.html` file, if your
-submission wins) and the remaining args are the paths to any other files you
-wish to submit.
+
+
+
+### Why do some IOCCC entries receive the Grand Prize or Best of Show award?
+
+
+
-The `work_dir` **MUST** already exist, as a directory, and it is an error if it
-is not a directory that can be written to. In **this** directory your **submission
-directory** will be created, with the name based on your IOCCC registration
-username, which is **in the form of a UUID** and submission number; see the
-[rules](next/rules.html) for more details on this, and in particular [Rule
-17](next/rules.html#rule17).
+In some years, the IOCCC judges discover a truly amazing IOCCC entry that
+stands out among all of the other IOCCC entries received that year.
+For such an IOCCC entry, the IOCCC judges award a "Grand Prize"
+or "Best of Show award.
-If the **_subdirectory_ in the _work directory_** already exists, you will have to
-move it, remove it or otherwise specify a different work directory (**NOT** the
-subdirectory), as it needs to be empty and the `mkiocccentry(1)` tool does not
-check this for you as it could not do anything about anyway.
+In 1984-1987, the grand prize winning entries are:
-This _subdirectory is where your files will be **copied** to_. Your _submission
-tarball_ (which you will upload to the submit server) that `txzchk(1)` will
-validate _will be placed in the **work directory**_, and **its _contents_ will
-be the _subdirectory_ with your submission's files**.
+- [1984/mullender](years.html#1984_mullender)
+- [1985/shapiro](years.html#1985_shapiro)
+- [1986/wall](years.html#1986_wall)
+- [1987/lievaart](years.html#1987_lievaart)
-The `mkiocccentry(1)` tool will ask you for information about your
-submission _as well as author details_ (that will only be looked at if the
-submission wins), run some tests and run a number of other tools, as already
-mentioned and as described below.
+Starting from 1988, the entry we liked the most in that year is called
+"Best of Show". Here are the "Best of Show" entries:
-To help you with editing a submission, the `mkiocccentry(1)` tool has
-some options to write _OR_ read from an answers file so you do not have to input
-the information about the author(s) and the submission itself, after saving the
-answers to a file. To write to `answers.txt` try:
+- [1988/applin](years.html#1988_applin)
+- [1989/jar.2](years.html#1989_jar.2)
+- [1990/theorem](years.html#1990_theorem)
+- [1991/brnstnd](years.html#1991_brnstnd)
+- [1992/vern](years.html#1992_vern)
+- [1996/august](years.html#1996_august)
+- [1998/banks](years.html#1998_banks)
+- [2000/jarijyrki](years.html#2000_jarijyrki)
+- [2020/carlini](years.html#2020_carlini)
-```
- mkiocccentry -a answers.txt ...
-```
-Alternatively, if you wish to overwrite a file, you can use the `-A`
-flag with the same option argument. Be **very careful** that you do not accidentally
-overwrite your `prog.c` or some other important file!
+In 1993, 1994 and 1995 the judges were unable to select a clear overall
+winning entry. So to give a nod to the entry that had the highest approval ranking
+from the judges, they used the following awards:
-To make use of the answers file, use the `-i answers` option like:
+- [1993/rince](years.html#1993_rince) - Most Well Rounded
+- [1994/shapiro](years.html#1994_shapiro) - Most Well Rounded
+- [1995/leo](years.html#1995_leo) - Best Use of Obfuscation
-```
- mkiocccentry -i answers.txt ...
-```
+These could be considered the 'best entry' for those years with 1 or
+more other entries that came in close behind.
+
+Jump to: [top](#)
+
+
+
+
+
+### How are winning IOCCC entries announced?
+
+
+
+
+Once the [IOCCC](index.html) closes, the judges will:
+
+* Judge the submissions.
+
+* Select the [winning entries](years.html) and announce them on the [@IOCCC
+mastodon feed](https://fosstodon.org/@ioccc).
+
+* Notify the authors of entries that won the IOCCC via email using their previously
+registered email address.
+
+* Announce who are authors of this year's winning IOCCC entries via the [@IOCCC mastodon
+feed](https://fosstodon.org/@ioccc).
+
+* Upload the winning code to the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner).
+
+* Update the [Official IOCCC website](index.html), and in particular
+display this year's winning IOCCC entries at the top of the [IOCCC
+winning entries page](years.html). This is done by updating this repo.
+
+* Update the [IOCCC news](news.html) page, also by updating this repo.
+
+Jump to: [top](#)
+
+
+
+## Section 2: The mkiocccentry toolkit: finer details
+
+
+Jump to: [top](#)
-#### `mkiocccentry` checks
+### What sort of checks does the mkiocccentry tool perform?
`mkiocccentry(1)` will check and warn about the following conditions:
@@ -1682,645 +1862,80 @@ See also the [Guidelines](next/guidelines.html) and the [Rules](next/rules.html)
Jump to: [top](#)
-
-
-
-### FAQ 0.16 - How do I compile `mkiocccentry` and its related tools?
+
+
+
+### FAQ 0.13 - How can I validate my submission tarball?
+
-After you
-[downloaded the mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#download)
+The tool that validates submission tarballs can be obtained from the [IOCCC
+mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). The
+`mkiocccentry` tool itself will run the validator **after** forming the tarball.
+However, you may wish to manually validate the tarball. The tool that does this
+is `txzchk`.
-Quoting from the mkiocccentry repo FAQ:
+If you wish to validate the tarball without running the `mkiocccentry(1)` tool,
+for instance the tarball
+`submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz` you can, after
+installing the tools, do:
-> **git clone https://github.com/ioccc-src/mkiocccentry.git**
+```
+ txzchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+```
-You need to [compile the mkiocccentry and related tools](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#compiling).
+Assuming that the tarball exists and is valid, you should see no output.
-Quoting from the mkiocccentry repo FAQ:
+If you wish to see the contents, for instance like `mkiocccentry(1)` does, you
+could do:
-> **cd mkiocccentry ; make clobber all**
+```
+ txzchk -v 1 submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+```
-See the
-[mkiocccentry repo FAQ](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md)
-for more up to date information on downloading, compiling, and related FAQ information.
+As the [guidelines state](next/guidelines.html#txzchk), it is beyond the scope
+of this document to discuss the many tests that `txzchk(1)` runs; if you must
+know we refer you to the [source
+code](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c).
Jump to: [top](#)
-
-## Section 1: History of the IOCCC
-
-
-Jump to: [top](#)
-
-
-
-
-
-### FAQ 1.0: How did the IOCCC get started?
-
-
-
-
-**It was a dark and stormy night...**
-
-OK, let's go back to 1984, not 1830: one day (1984 March 23 to be exact), Larry Bassel
-and I (Landon Curt Noll) were working for National Semiconductor's Genix porting
-group, and we were both in our offices trying to fix some very broken code.
-
-Larry had been trying to fix a bug in the classic Bourne shell (C code `#define`d
-to death to sort of look like Algol) and I had been working on the `finger(1)`
-program from early BSD (a bug ridden `finger` implementation to be sure).
-
-We happened to both wander (at the same time) out to the hallway
-in Building 7C to clear our heads.
-
-We began to compare notes: '_You won't believe the code I am trying to fix_'.
-
-And: '_Well you cannot imagine the brain damage level of the code I'm trying to
-fix'_.
-
-As well as: '_It's more than bad code, the author really had to try to make it
-this bad!_
-
-After a few minutes we wandered back into my office where I posted a
-[flame to
-net.lang.c](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=789%40nsc.UUCP&rnum=3&filter=0")
-inviting people to try and out obfuscate the UN\*X source code we had just been working on.
-
-BTW: I (Landon Curt Noll) had to post this [typo
-correction](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=795%40nsc.UUCP&rnum=10&filter=0).
-Thus began the tradition of putting typos in the contest rules and guidelines
-... to make them more obfuscated of course! :-)
-
-BTW: This posting was made back in the days when AT&T was the evil giant.
-Now, Microsoft makes AT&T look mild and kind in comparison. :-( (IMHO) ).
-
-BTW: See the story about the '[Bill Gates](1993/cmills/index.html)' award. :-)
-
-OK, back to the story.
-
-We (Larry and I) received a number of entries by email.
-When we began to receive messages from outside of the US, Larry and I
-decided to include International in the name.
-
-The
-[1st IOCCC entries](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=837%40nsc.UUCP&rnum=2&filter=0)
-were posted on 17 April 1984.
-
-There were 4 entries that won in 1984:
-
-1. [(dis)honorable mention](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=842%40nsc.UUCP&rnum=8&filter=0)
-2. [3rd place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=843%40nsc.UUCP&rnum=7&filter=0)
-3. [2nd place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=844%40nsc.UUCP&rnum=6&filter=0)
-4. [1st place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=845%40nsc.UUCP&rnum=5&filter=0)
-
-BTW: The (dis)honorable mention wished to remain anonymous.
-While many have asked who it was, we have continued to follow the
-author's wish to remain anonymous.
-
-A few years ago, we asked the author if they still wanted to remain anonymous.
-They said: '_Yes, I want to keep my anonymity. But you can tell them that I am well known for my connection to the
-C language_'. It was not until 2001 that another [anonymous
-entry](2001/anonymous/index.html) received an award.
-
-BTW: The [1984/mullender](1984/mullender/index.html) remains one of my (Landon Curt Noll) all time favorites.
-
-The name used in the posting of the [1st winning IOCCC
-entry](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=837%40nsc.UUCP&rnum=2&filter=0)
-posting was **I**nternational **O**bfuscated **C** **C**ode **C**ontest or
-**IOCCC** for short.
-
-The posting said '_1st annual_', so in 1985 we held the [2nd IOCCC contest](years.html#1985)
-and the tradition continues as the longest running contest on the Internet.
-
-P.S. Part of the inspiration for making the IOCCC a contest goes to the
-[Bulwer-Lytton fiction contest](http://www.bulwer-lytton.com/).
-
-Jump to: [top](#)
-
-
-
-### FAQ 1.1: Why are some years missing IOCCC entries?
-
-
-Some years, such as 1997, 1999, 2002-2003, 2007-2010, 2016-2017, 2021-2023, no IOCCC was held.
-
-While we try to hold the IOCCC every year, sometime the other demands on the IOCCC judges
-do not permit us to hold a new IOCCC.
-
-The pause during the 2021-2023 period was due to the IOCCC judges developing tools to
-make it much more likely for the IOCCC to be held on a yearly basis later on.
-
-Jump to: [top](#)
-
-
-
-
-### FAQ 1.2: What is the history of the IOCCC website?
+
+
+### FAQ 0.14 - What is the `fnamchk` tool?
-#### In the beginning of www.ioccc.org
+This tool, which is in the [mkiocccentry
+repo](https://github.com/ioccc-src/mkiocccentry), validates the directory name
+of your submission.
-The long history of the [official IOCCC website](https://www.ioccc.org) can be
-viewed at the [Internet Wayback Machine Wayback Machine](https://web.archive.org).
+Rather than `mkiocccentry` running this tool manually, `txzchk`'s algorithm uses
+the output of this tool. If you wish to validate your tarball filename manually,
+you can do so. For instance:
-One can [view several thousand snapshots showing how the IOCCC website has
-evolved](https://web.archive.org/web/20230000000000*/www.ioccc.org) going back
-as far as [1998 Dec 12
-www.ioccc.org](https://web.archive.org/web/19981212030016/https://www.ioccc.org/).
+```
+ fnamchk submit.12345678-1234-4321-abcd-1234567890ab-2.1720636351.txz
+```
-On 2020 Dec 31, the IOCCC source tree was moved to the [IOCCC winner
-repo](https://web.archive.org/web/20210101211346/https://www.ioccc.org/) on
-[GitHub](https://github.com). From this point on, the [official IOCCC web
-site](https://www.ioccc.org) became a [GitHub Pages](https://pages.github.com)
-website.
+Assuming everything is OK, it would show:
-#### 2020 Dec 28 bzip2 compressed tarball archive
+> `12345678-1234-4321-abcd-1234567890ab-2`
-Furthermore, a bzip2 compressed tarball containing the released
-IOCCC entry source code may be found under the
-[archive/historic](archive/historic/index.html) directory. The file
-[archive-all.tar.bz2](archive/historic/archive-all.tar.bz2) contains
-all years and the individual years are in the form
-`archive/historic/archive-YYYY.tar.bz2`.
-
-These files were obtained from the [Internet Wayback
-Machine](https://web.archive.org) from the [snapshot of the website
-on 2020 Dec
-28](https://web.archive.org/web/20201228005211/https://www.ioccc.org/).
-See [archive/historic/index.html](archive/historic/index.html) for
-details about these bzip2 compressed tarballs.
-
-
-#### 2022 Dec 29 Official IOCCC winner repo
-
-The [Official IOCCC winner repo](https://github.com/ioccc-src/winner)
-was [created on 2020 Dec
-29](https://github.com/ioccc-src/winner/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb).
-
-
-#### 2020 Dec 30 IOCCC content uploaded to GitHub
-
-An [IOCCC judge](https://www.ioccc.org/judges.html) formed a local
-directory [git](https://git-scm.com) repo on **Tue Dec 29 23:48:30
-2020 -0800** via [commit
-28efc67f5dd692a3544708bf7fa26286adb82dfb](https://github.com/ioccc-src/winner/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb)
-and then on **Wed Dec 30 16:57:03 2020 -0800** added a preview of
-1984-2019 via [commit
-c0663537cb88d39b74285a930ff1a668c6d5968b](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b).
-
-On 2020 Dec 30, with [commit
-c0663537cb88d39b74285a930ff1a668c6d5968b](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b),
-the [official IOCCC website of 2022 Dec
-29](https://web.archive.org/web/20221231001721/https://www.ioccc.org/) was
-uploaded into the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner).
-
-
-#### 2020 IOCCC winning entries released using git via GitHub
-
-The [winning
-entries](https://github.com/ioccc-src/winner/commit/9d61fc0fb4a3245afb1435458cfb597fad0e8e6a)
-of the [IOCCC 2020](years.html#2020),
-after a far too long of a delay
-(due in part to a [former IOCCC judge whose resignation was noted on
-2021 Jan 04](https://github.com/ioccc-src/winner/commit/c94fc84c35dc83e3eb9900720b95917a15c27afe) commit)
-from their initial [2020 Jul 25
-announcement](https://web.archive.org/web/20200726232505/http://www.ioccc.org:80/index.html),
-were added by an [IOCCC judge](https://www.ioccc.org/judges.html)
-to their local [git](https://git-scm.com) repository and then were
-merged into the [Official IOCCC winner repo on 2020 Dec
-31](https://github.com/ioccc-src/winner/commit/b1638ff0012964d79ab1c44aa815d3f824f35b6c).
-
-These [2020 IOCCC winning entries](years.html#2020),
-as shown in the [Internet Wayback Machine](https://web.archive.org)
-[snapshot of 2021 Jan 02](https://web.archive.org/web/20210102042216/www.ioccc.org/years.html)
-were the first IOCCC entries to have been released via
-[git](https://git-scm.com) and [GitHub](https://github.com).
-
-
-#### 2020 Dec 30 thru 202y MMM DD - Work on the temp-test-ioccc GitHub repo
-
-Starting on [2020 Dec
-30](https://github.com/ioccc-src/winner/commit/2f20ae8451ada03f4601ac727d10e1d8630861a8)
-edits to the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner) began.
-
-The local [git](https://git-scm.com) repository of an [IOCCC
-judge](https://www.ioccc.org/judges.html) was [edited starting Wed
-Dec 30 16:57:03 2020
--0800](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b)
-and was occasionally committed to the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner).
-
-The [first accepted pull request](https://github.com/ioccc-src/winner/pull/2) to
-the [Official IOCCC winner repo](https://github.com/ioccc-src/winner) was made
-by [Yusuke Endoh](https://www.ioccc.org/winners.html#Yusuke_Endoh) on [2021 Jan
-5](https://github.com/ioccc-src/winner/commit/84c62c4cbf56ac1351ea91e5019f51103615fda2).
-
-
-Between [Wed Dec 30 16:57:03 2020
--0800](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b)
-and [Sat Jan 29 21:56:53 2022
--0800](https://github.com/ioccc-src/winner/commit/098a3e7e04d43e480ecc4b5482c83274e1434002),
-an [IOCCC judge](https://www.ioccc.org/judges.html) made edits to
-their local repository with occasional pushes to the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner) and the [Official
-www.ioccc.org website](https://www.ioccc.org/index.html). After
-that time and until the **Great Fork Merge**, very few changes
-were made to the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner) and the [Official
-www.ioccc.org website](https://www.ioccc.org/index.html) most of
-which were news updates.
-
-While the [temp-test-ioccc
-repo](https://github.com/ioccc-src/temp-test-ioccc) has history
-going back to [2020 Dec
-29](https://github.com/ioccc-src/temp-test-ioccc/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb),
-the repo was forked on **Sun Sep 18 17:30:00 2022 -0700**. The
-first [push into the temp-test-ioccc
-repo](https://github.com/ioccc-src/temp-test-ioccc/commit/edbc3089e1b755d85a020af7975bbc7df3737a5f)
-occurred on Sun Sep 18 11:15:49 2022 -0700.
-
-At this same time, the [temp-test-ioccc website](https://ioccc-src.github.io/temp-test-ioccc/) went live.
-
-Edits were made by an [IOCCC judge](https://www.ioccc.org/judges.html)
-to their local [git](https://git-scm.com) repository and [were pushed into the temp-test-ioccc
-repo](https://github.com/ioccc-src/temp-test-ioccc/commit/2f20ae8451ada03f4601ac727d10e1d8630861a8)
-and to the [temp-test-ioccc website](https://ioccc-src.github.io/temp-test-ioccc/).
-
-The [first accepted pull request](https://github.com/ioccc-src/temp-test-ioccc/pull/15)
-made directly to the [temp-test-ioccc
-repo](https://github.com/ioccc-src/temp-test-ioccc) on
-[Wed Feb 22 05:44:55 2023 -0800 with commit
-11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec](https://github.com/ioccc-src/temp-test-ioccc/commit/11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec)
-by [Cody Boone
-Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson).
-
-A [decision was made by the
-IOCCC](https://github.com/ioccc-src/temp-test-ioccc/discussions/1918) to
-mostly use frequent commits to individual components of the IOCCC,
-rather than to use occasional site wide massive updates in order
-to improve the tractability of changes made to components of the
-IOCCC such as IOCCC entries although occasionally site wide updates
-were performed in order to address an issue common to many IOCCC
-entries. And while some people prefer infrequent updates to a repo
-the [IOCCC judges](https://www.ioccc.org/judges.html) believe
-the ability to trace changes with commit messages is important.
-
-Changes to the IOCCC content included things such as:
-
-* Moving IOCCC entries into their own separate directories.
-* Establishing a detailed manifest for an IOCCC winning entries.
-* Fixing lots and lots of typos.
-* Fixing Makefiles and code to allow for nearly all winning entries to be
-compiled with/in modern systems.
-* Fixing Makefiles and code to allow for nearly all winning entries to run
-with/in modern systems.
-* Reworking the Makefiles to use a consistent set of rules.
-* Reworking the Makefiles specific to the gcc and clang C compilers.
-* Replacing the various hint files with a index.html markdown (from README.md
-files) that is more consistent across IOCCC years.
-* Generating HTML content from markdown files and JSON data files via a [set of
-tools and scripts](bin/index.html).
-* Setting up a system whereby authors of IOCCC entries may update their own
-contact information via a [GitHub pull
-request](https://github.com/ioccc-src/winner/pulls).
-* Setting up to generate the top level [years.html](years.html) file via the
-[gen-years.sh](%%REPO_URL%%/bin/gen-years.sh) tool.
-* Setting up to generate the top level [authors.html file](authors.html), renamed
-from `winners.html`, via the [gen-authors.sh](%%REPO_URL%%/bin/gen-authors.sh) tool.
-* Making use of a new and improved [IOCCC CSS](%%REPO_URL%%/ioccc.css) for website consistency
-* Etc.
-
-
-
-#### 202y mm dd The Great Fork Merge
-
-
-As of 2024 Sep 1 [temp-test-ioccc
-repo](https://github.com/ioccc-src/temp-test-ioccc)
-there were [5858 commits ahead](https://github.com/ioccc-src/winner/compare/master...ioccc-src:temp-test-ioccc:master)
-of the [IOCCC winner repo](https://github.com/ioccc-src/winner).
-
-On 202y mm dd, the temporary repo was merged back into the [IOCCC winner
-repo](https://github.com/ioccc-src/winner) resulting in many, many substantial improvements
-to the [official IOCCC website](https://www.ioccc.org).
-
-Jump to: [top](#)
-
-
-
-
-### FAQ 1.3: How has the IOCCC size limit rule changed over the years?
-
-
-
-The IOCCC size rule has changed over the years.
-
-In later years, Rule 2 was split into two parts. These two parts of Rule 2 are:
-
-* Rule 2a: Overall size limit of "prog.c"
-* Rule 2b: Size of "prog.c", w/o counting certain types of characters
-
-
-#### IOCCC 1984-1985
-
-
-**NOTE**: The size rule was actually rule 1.
-
-* Rule 2a: 512
-* Rule 2b: n/a
-
-
-#### IOCCC 1986-1987
-
-
-**NOTE**: The size rule was actually rule 1.
-
-* Rule 2a: 1024
-* Rule 2b: n/a
-
-
-#### IOCCC 1988-1991
-
-
-**NOTE**: The size rule was actually rule 1.
-
-* Rule 2a: 1536
-* Rule 2b: n/a
-
-
-### IOCCC 1992-2000
-
-
-* Rule 2a: 3217
-* Rule 2b: 1536
-
-
-### IOCCC: 2001-2012
-
-
-* Rule 2a: 4096
-* Rule 2b: 2048
-
-
-### IOCCC 2013-2020
-
-
-* Rule 2a: 4096
-* Rule 2b: 2053
-
-
-### IOCCC 2024-date
-
-
-* Rule 2a: 4993
-* Rule 2b: 2503
-
-Jump to: [top](#)
-
-
-
-### FAQ 1.4: What is the **Great Fork Merge**?
-
-
-The **Great Fork Merge** was when thousands of changes that had been applied to the
-[temp-test-ioccc repo](https://github.com/ioccc-src/temp-test-ioccc) was applied
-to the [Official IOCCC winner repo](https://github.com/ioccc-src/winner) causing the
-[Official IOCCC website](index.html) to be updated into its present form.
-
-See the
-FAQ on "[Great Fork Merge Date](#great_fork_merge_date)"
+See also the
+FAQ on "[validating your submission tarball](#txzchk)"
for more information.
Jump to: [top](#)
-
-
-### FAQ 1.5: What is an IOCCC BOF?
-
-
-
-The term **IOCCC BOF** stood for **International Obfuscated C Code
-Contest Birds Of a Feather**. It was a special session held at the
-general [USENIX conference](https://www.usenix.org/conferences), usually
-immediately after the BSD BOF, where the winners of a new IOCCC were
-announced in the early years of the IOCCC.
-
-Jump to: [top](#)
-
-## Section 2: IOCCC Judging process
-
-Jump to: [top](#)
-
-
-
-### FAQ 2.0: How many entries do the judges receive for a given IOCCC?
-
-
-By tradition, we do not say.
-
-Jump to: [top](#)
-
-
-
-
-
-### FAQ 2.1: What should I put in the remarks.md file of my submission?
-
-
-
-
-First, **PLEASE** read the [IOCCC markdown guidelines](markdown.html).
-
-Next, while you may put in as much or as little as you wish into your entry's
-`remarks.md` file, we do have few important suggestions:
-
-We recommend that you explain how to use your entry. Explain the
-command line (if any command line options and arguments are used)
-and any input or actions if applicable.
-
-We highly recommend that you explain why you think your entry is
-well obfuscated.
-
-For those entries that win the IOCCC, we often use much of text from the
-`remarks.md` file in the _Author's remarks_ section of the `index.html` file.
-For this reason, a well written `remarks.md` file is considered a plus.
-
-While not required, consider adding bit of humor to your `remarks.md`
-as most people who are not humor impaired, as well as the IOCCC judges
-appreciate the opportunity for a fun read as well as a chuckle or two.
-
-
-#### What helps:
-
-- explaining what your entry does
-- how to entice it to do what it is supposed to do
-- what obfuscations are used
-- what are the limitations of your entry in respect of portability and/or input data
-- how it works (if you are really condescending)
-
-
-#### What does not help:
-
-- admitting that your entry is not very obfuscated (you see, the contest is
-called the **IOCCC**, not the **INVOCCC** :-) ); but even if you do not admit
-it, not very obfuscated entries have a minuscule chance to win (although
-[2000/tomx](2000/tomx/index.html) is a notable counterexample).
-- mentioning your name or any identifying information in the remark section (or
-in the C code for that matter) - we like to be unbiased during the judging
-rounds; we look at the author name only if an entry wins. See the guidelines if
-this is not clear!
-- leaving the remark section empty.
-
-Jump to: [top](#)
-
-
-
-### FAQ 2.2: Why don't you publish submissions that do not win?
-
-
-Because the publication on the IOCCC site **_IS_** the award!
-Anyone is free to put their IOCCC hopefuls, lookalikes and/or
-entries that do not win on their web page for everyone to see.
-
-Jump to: [top](#)
-
-
-
-### FAQ 2.3: How much time does it take to judge the contest?
-
-
-It takes a fair amount of time to setup, run, respond to messages, process entries,
-review entries, trim down the set entries to a set of winning entries, doing the
-write-up of the entries, announcing the entries, reviewing final edits of the
-winning entry set, posting the winning entries, being flamed :-), tell folks who send in
-late entries to wait until the next contest, etc... It takes a few weekends and
-a number nights of study and work ... which is hard given that we are busy with
-many other activities as well.
-
-Note that we do not contact the author if an entry does not compile or does not
-work as advertised; we might attempt to fix obvious compilation problems or
-incompatibilities, but no more than that - so be sure that your entry does work
-on at least a couple different platforms, at least one of them being UNIX or
-SUS-conforming. See the
-FAQ on "[SUS](#SUS)"
-for more information.
-
-Jump to: [top](#)
-
-
-
-
-### FAQ 2.4: How many judging rounds do you have?
-
-
-
-Are you trying to trick us? :-)
-
-By tradition, we do not say how many judging rounds we have in a given IOCCC.
-
-We often report when the IOCCC judges start the 1st round, and then usually
-report when the IOCCC judges start near final judging rounds, and sometimes we
-also report when we enter what we believe is the final judging round, so you may
-guess that we have at least 3 rounds. :-) The actual number of rounds is
-certainly more than 3.
-
-Jump to: [top](#)
-
-
-
-
-
-### FAQ 2.5: Why do some IOCCC entries receive the Grand Prize or Best of Show award?
-
-
-
-
-In some years, the IOCCC judges discover a truly amazing IOCCC entry that
-stands out among all of the other IOCCC entries received that year.
-For such an IOCCC entry, the IOCCC judges award a "Grand Prize"
-or "Best of Show award.
-
-In 1984-1987, the grand prize winning entries are:
-
-- [1984/mullender](years.html#1984_mullender)
-- [1985/shapiro](years.html#1985_shapiro)
-- [1986/wall](years.html#1986_wall)
-- [1987/lievaart](years.html#1987_lievaart)
-
-Starting from 1988, the entry we liked the most in that year is called
-"Best of Show". Here are the "Best of Show" entries:
-
-- [1988/applin](years.html#1988_applin)
-- [1989/jar.2](years.html#1989_jar.2)
-- [1990/theorem](years.html#1990_theorem)
-- [1991/brnstnd](years.html#1991_brnstnd)
-- [1992/vern](years.html#1992_vern)
-- [1996/august](years.html#1996_august)
-- [1998/banks](years.html#1998_banks)
-- [2000/jarijyrki](years.html#2000_jarijyrki)
-- [2020/carlini](years.html#2020_carlini)
-
-
-In 1993, 1994 and 1995 the judges were unable to select a clear overall
-winning entry. So to give a nod to the entry that had the highest approval ranking
-from the judges, they used the following awards:
-
-- [1993/rince](years.html#1993_rince) - Most Well Rounded
-- [1994/shapiro](years.html#1994_shapiro) - Most Well Rounded
-- [1995/leo](years.html#1995_leo) - Best Use of Obfuscation
-
-These could be considered the 'best entry' for those years with 1 or
-more other entries that came in close behind.
-
-Jump to: [top](#)
-
-
-
-
-
-### FAQ 2.6: How are IOCCC entries announced?
-
-
-
-
-Once the [IOCCC](index.html) closes, the judges will:
-
-* Judge the submissions.
-
-* Select the [winning entries](years.html) and announce them on the [@IOCCC
-mastodon feed](https://fosstodon.org/@ioccc).
-
-* Notify the authors of entries that won the IOCCC via email using their previously
-registered email address.
-
-* Announce who are authors of this year's winning IOCCC entries via the [@IOCCC mastodon
-feed](https://fosstodon.org/@ioccc).
-
-* Upload the winning code to the [Official IOCCC winner
-repo](https://github.com/ioccc-src/winner).
-
-* Update the [Official IOCCC website](index.html), and in particular
-display this year's winning IOCCC entries at the top of the [IOCCC
-winning entries page](years.html). This is done by updating this repo.
-
-* Update the [IOCCC news](news.html) page, also by updating this repo.
-
-Jump to: [top](#)
-
-
-
-## Section 3: Compiling and running IOCCC entries
+
+## Section 2: Compiling and running IOCCC entries
Jump to: [top](#)
@@ -2328,7 +1943,7 @@ Jump to: [top](#)
-### FAQ 3.0: What Makefile rules are available to build or clean up IOCCC entries?
+### What Makefile rules are available to build or clean up IOCCC entries?
@@ -2393,7 +2008,7 @@ Jump to: [top](#)
-### FAQ 3.1: Why doesn't an IOCCC entry compile?
+### Why don't certain IOCCC entries compile?
@@ -2436,7 +2051,7 @@ Jump to: [top](#)
-### FAQ 3.2: Why does an IOCCC entry fail on my 64-bit system?
+### Why does an IOCCC entry fail on my 64-bit system?
@@ -2475,7 +2090,7 @@ Jump to: [top](#)
-### FAQ 3.3: Why do some IOCCC entries fail to compile under macOS?
+### Why do some IOCCC entries fail to compile under macOS?
@@ -2500,7 +2115,7 @@ Jump to: [top](#)
-### FAQ 3.4: Why does clang or gcc fail to compile an IOCCC entry?
+### Why does clang or gcc fail to compile some IOCCC entries?
@@ -2535,7 +2150,7 @@ Jump to: [top](#)
-### FAQ 3.5: What is this cb tool that is mentioned in the IOCCC?
+### What is this cb tool that is mentioned in the IOCCC?
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
@@ -2550,7 +2165,7 @@ Jump to: [top](#)
-### FAQ 3.6: An IOCCC entry messed up my terminal application, how do I fix this?
+### An IOCCC entry messed up my terminal application, how do I fix this?
@@ -2567,7 +2182,7 @@ Jump to: [top](#)
-### FAQ 3.7: How do I run an IOCCC entry that requires X11?
+### How do I compile and run an IOCCC entry that requires X11?
@@ -2783,7 +2398,7 @@ Jump to: [top](#)
-### FAQ 3.8: How do I compile an IOCCC entry that requires SDL1 or SDL2?
+### How do I compile and install SDL1 or SDL2 for entries that require it?
This depends on your operating system but below are instructions for Linux and
@@ -2908,7 +2523,7 @@ Jump to: [top](#)
-### FAQ 3.9: How do I compile an IOCCC entry that requires (n)curses?
+### How do I compile and install (n)curses for entries that require it?
This depends on your operating system but below are instructions for Linux and
@@ -2976,13 +2591,16 @@ Jump to: [top](#)
-### FAQ 3.10: How do I compile and use an IOCCC entry that requires sound?
+### How do I compile and run an IOCCC entry that requires sound?
This might depend on the entry but most likely the Swiss Army Knife of sound
processing programs, [SoX](https://sox.sourceforge.net), will work. How to
-install depends on your OS.
+install depends on your OS. See below.
+
+After it is installed, you should be able to compile and use the program as
+described in the index.html file.
#### Red Hat based Linux
@@ -3035,11 +2653,13 @@ Not applicable, see above.
Usually the index.html file will explain how to use it under Linux so we do not
include this here, at least for now.
+
+
+
Jump to: [top](#)
-
-### FAQ 3.11: Why do Makefiles use -Weverything with clang?
+### Why do Makefiles use -Weverything with clang?
While we know that use of `-Weverything` is generally not recommended
@@ -3132,7 +2752,7 @@ Jump to: [top](#)
-### FAQ 3.12: How do I find out how to send interrupt/EOF etc. for entries that require it?
+### How do I find out how to send interrupt/EOF etc. for entries that require it?
@@ -3171,7 +2791,7 @@ Jump to: [top](#)
-### FAQ 3.13: Why does an IOCCC entry fail to compile and/or fail to run?
+### Why does an IOCCC entry fail to compile and/or fail to run?
@@ -3755,7 +3375,7 @@ Jump to: [top](#)
-### FAQ 3.23: How do I compile an IOCCC entry that requires zlib?
+### How do I compile and install zlib for IOCCC entries that require it?
This depends on your operating system but below are instructions for Linux and
@@ -3821,7 +3441,7 @@ We recommend trying a method suitable for your environment first, if possible.
Jump to: [top](#)
-### FAQ 3.24: How do I install Ruby for entries that require it?
+### How do I install Ruby for entries that require it?
Please see the [official Ruby installation
@@ -3830,7 +3450,7 @@ guide](https://www.ruby-lang.org/en/documentation/installation/).
Jump to: [top](#)
-### FAQ 3.25: How do I install rake for entries that require it?
+### How do I install rake for entries that require it?
First, if `gem` is not installed, see the [gem GitHub repo
@@ -3858,8 +3478,8 @@ Once this is done, try as root or via `sudo`:
Jump to: [top](#)
-
-## Section 4: Changes made to IOCCC entries
+
+## Section 3: Changes made to IOCCC entries
Jump to: [top](#)
@@ -3867,7 +3487,7 @@ Jump to: [top](#)
-### FAQ 4.1: Why were some calls to the libc function gets(3) changed to use fgets(3)?
+### Why were some calls to the libc function gets(3) changed to use fgets(3)?
@@ -3919,7 +3539,7 @@ Jump to: [top](#)
-### FAQ 4.2: What was changed in an IOCCC entry source code?
+### How can I find out what was changed in an IOCCC entry source code?
@@ -4065,7 +3685,7 @@ Jump to: [top](#)
-### FAQ 4.4: What is the meaning of the file ending in .orig.c in IOCCC entries?
+### What is the meaning of the file ending in .orig.c in IOCCC entries?
Due to the fact that the original code has sometimes had to change these files
@@ -4078,7 +3698,7 @@ Jump to: [top](#)
-### FAQ 4.5: What are alternate versions and why were alternate versions added to some entries when the original entry worked fine and well?
+### What are alternate versions and why were alternate versions added to some entries when the original entry worked fine and well?
@@ -4116,7 +3736,7 @@ Jump to: [top](#)
-### FAQ 4.6: Why was arg count and/or type changed in main() in some older entries?
+### Why was arg count and/or type changed in main() in some older entries?
@@ -4139,7 +3759,7 @@ Jump to: [top](#)
-### FAQ 4.7: Why were some filenames changed?
+### Why were some filenames changed?
The reasons this was done varies. One of the earliest changes was making the old
@@ -4171,7 +3791,7 @@ Jump to: [top](#)
-### FAQ 4.8: Why were files added to, removed from or changed in some entries?
+### Why were files added to, removed from or changed in some entries?
@@ -4206,7 +3826,7 @@ Jump to: [top](#)
-### FAQ 4.9:- What is the original source file?
+###- What is the original source file?
@@ -4255,8 +3875,8 @@ for more information and make rules relating to "**original source file**" diffe
Jump to: [top](#)
-
-## Section 5: Helping the IOCCC
+
+## Section 4: Helping the IOCCC
Jump to: [top](#)
@@ -4264,7 +3884,7 @@ Jump to: [top](#)
-### FAQ 5.0: How may I help the IOCCC?
+### How can I help the IOCCC?
@@ -4291,7 +3911,7 @@ Jump to: [top](#)
-### FAQ 5.1: How do I report a bug in an IOCCC entry?
+### How do I report a bug in an IOCCC entry?
@@ -4321,7 +3941,7 @@ Jump to: [top](#)
-### FAQ 5.2: How may I submit a fix to an IOCCC entry?
+### How can I submit a fix to an IOCCC entry?
@@ -4372,7 +3992,7 @@ Jump to: [top](#)
-### FAQ 5.3: How may I report an IOCCC website problem?
+### How can I report an IOCCC website problem?
@@ -4402,7 +4022,7 @@ Jump to: [top](#)
-### FAQ 5.4: How may I submit a fix to the IOCCC website?
+### How can I submit a fix to the IOCCC website?
For IOCCC website problems that relate to a particular IOCCC entry, please
@@ -4486,7 +4106,7 @@ for information on opening up an IOCCC issue.
You may correct or update IOCCC author information by submitting a
@@ -4611,7 +4231,7 @@ for information about how to change author location codes.
-## FAQ 5.6: What should I do if I find a broken or wrong web link?
+## What should I do if I find a broken or wrong web link?
We would appreciate if you try to fix the broken (the link goes nowhere) or wrong
@@ -4667,7 +4287,7 @@ Jump to: [top](#)
-### FAQ 5.7: How may I support the IOCCC?
+### How can I support the IOCCC?
@@ -4693,7 +4313,7 @@ Jump to: [top](#)
-### FAQ 5.8: I deobfuscated some entry code, may I contribute the source?
+### I deobfuscated some entry code, may I contribute the source?
@@ -4786,8 +4406,8 @@ that be prove helpful.
Jump to: [top](#)
-
-## Section 6: Miscellaneous IOCCC
+
+## Section 5: Miscellaneous IOCCC
Jump to: [top](#)
@@ -4795,7 +4415,7 @@ Jump to: [top](#)
-### FAQ 6.0: How did an entry that breaks the size rule 2 win the IOCCC?
+### How did an entry that breaks the size rule 2 win the IOCCC?
@@ -4818,7 +4438,7 @@ Jump to: [top](#)
-### FAQ 6.1: Is there a list of known bugs and (mis)features of IOCCC entries?
+### Is there a list of known bugs and (mis)features of IOCCC entries?
@@ -4836,7 +4456,7 @@ Jump to: [top](#)
-### FAQ 6.2: May I mirror the IOCCC website?
+### May I mirror the IOCCC website?
@@ -4871,7 +4491,7 @@ Jump to: [top](#)
-### FAQ 6.3: May I use parts of the IOCCC in an article, book, newsletter, or instructional material?
+### May I use parts of the IOCCC in an article, book, newsletter, or instructional material?
@@ -4897,7 +4517,7 @@ Jump to: [top](#)
-### FAQ 6.4: Why do you sometimes use the first person plural?
+### Why do you sometimes use the first person plural?
@@ -4943,7 +4563,7 @@ Jump to: [top](#)
An `author_handle` is string that refers to a given author and is unique to the
@@ -5025,7 +4645,7 @@ Jump to: [top](#)
@@ -5552,7 +5172,7 @@ Jump to: [top](#)
-### FAQ 6.7: What is an `entry_id`?
+### What is an `entry_id`?
An `entry_id` is a string that identifies a winning entry of the IOCCC.
@@ -5580,7 +5200,7 @@ Jump to: [top](#)
-### FAQ 6.8: What is the purpose of the `.top`, `.allyear`, `.year` and `.path` files?
+### What is the purpose of the `.top`, `.allyear`, `.year` and `.path` files?
@@ -5609,7 +5229,7 @@ Jump to: [top](#)
-### FAQ 6.9: What is the current meaning of the IOCCC terms Author, Entry, and Submission?
+### What is the current meaning of the IOCCC terms Author, Entry, and Submission?
The IOCCC is now attempting to use the following terms:
@@ -5673,7 +5293,7 @@ Jump to: [top](#)
-### FAQ 6.10: How does someone make a change to a file and submit that change as a GitHub pull request?
+### How do I make a pull request to the GitHub repo?
@@ -5927,7 +5547,7 @@ Jump to: [top](#)
-### FAQ 6.11: Am I allowed to use IOCCC content?
+### Am I allowed to use IOCCC content?
@@ -5963,7 +5583,7 @@ Jump to: [top](#)
-### FAQ 6.12: What is Mastodon and why does IOCCC use it?
+### What is Mastodon and why does IOCCC use it?
The [IOCCC uses Mastodon](https://fosstodon.org/@ioccc) for news updates,
@@ -6002,7 +5622,7 @@ Jump to: [top](#)
If you are an _author_ of a winning _entry_, you may find your own _author_handle_
@@ -6047,7 +5667,7 @@ Jump to: [top](#)
-### FAQ 6.14: How do I set certain tabstops for viewing source code in vi(m)?
+### How do I set certain tabstops for viewing source code in vi(m)?
Sometimes an author will state that for best viewing purposes you should have
@@ -6212,7 +5832,7 @@ Jump to: [top](#)
-### FAQ 6.17: What is a `.entry.json` file and how is it used?
+### What is a `.entry.json` file and how is it used?
**TL:DR**: The contents of this JSON file contain information about each winning
@@ -6727,7 +6347,7 @@ Jump to: [top](#)
-### FAQ 6.18: I do not understand the IOCCC, can you explain it to me?
+### I do not understand the IOCCC, can you explain it to me?
The IOCCC stands for the International Obfuscated C Code Contest.
@@ -6776,6 +6396,415 @@ and inexplicable.
Share and enjoy! ☺️
+
+
+## Section 6: History of the IOCCC
+
+
+
+Jump to: [top](#)
+
+
+
+
+
+### How did the IOCCC get started?
+
+
+
+
+**It was a dark and stormy night...**
+
+OK, let's go back to 1984, not 1830: one day (1984 March 23 to be exact), Larry Bassel
+and I (Landon Curt Noll) were working for National Semiconductor's Genix porting
+group, and we were both in our offices trying to fix some very broken code.
+
+Larry had been trying to fix a bug in the classic Bourne shell (C code `#define`d
+to death to sort of look like Algol) and I had been working on the `finger(1)`
+program from early BSD (a bug ridden `finger` implementation to be sure).
+
+We happened to both wander (at the same time) out to the hallway
+in Building 7C to clear our heads.
+
+We began to compare notes: '_You won't believe the code I am trying to fix_'.
+
+And: '_Well you cannot imagine the brain damage level of the code I'm trying to
+fix'_.
+
+As well as: '_It's more than bad code, the author really had to try to make it
+this bad!_
+
+After a few minutes we wandered back into my office where I posted a
+[flame to
+net.lang.c](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=789%40nsc.UUCP&rnum=3&filter=0")
+inviting people to try and out obfuscate the UN\*X source code we had just been working on.
+
+BTW: I (Landon Curt Noll) had to post this [typo
+correction](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=795%40nsc.UUCP&rnum=10&filter=0).
+Thus began the tradition of putting typos in the contest rules and guidelines
+... to make them more obfuscated of course! :-)
+
+BTW: This posting was made back in the days when AT&T was the evil giant.
+Now, Microsoft makes AT&T look mild and kind in comparison. :-( (IMHO) ).
+
+BTW: See the story about the '[Bill Gates](1993/cmills/index.html)' award. :-)
+
+OK, back to the story.
+
+We (Larry and I) received a number of entries by email.
+When we began to receive messages from outside of the US, Larry and I
+decided to include International in the name.
+
+The
+[1st IOCCC entries](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=837%40nsc.UUCP&rnum=2&filter=0)
+were posted on 17 April 1984.
+
+There were 4 entries that won in 1984:
+
+1. [(dis)honorable mention](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=842%40nsc.UUCP&rnum=8&filter=0)
+2. [3rd place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=843%40nsc.UUCP&rnum=7&filter=0)
+3. [2nd place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=844%40nsc.UUCP&rnum=6&filter=0)
+4. [1st place](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=845%40nsc.UUCP&rnum=5&filter=0)
+
+BTW: The (dis)honorable mention wished to remain anonymous.
+While many have asked who it was, we have continued to follow the
+author's wish to remain anonymous.
+
+A few years ago, we asked the author if they still wanted to remain anonymous.
+They said: '_Yes, I want to keep my anonymity. But you can tell them that I am well known for my connection to the
+C language_'. It was not until 2001 that another [anonymous
+entry](2001/anonymous/index.html) received an award.
+
+BTW: The [1984/mullender](1984/mullender/index.html) remains one of my (Landon Curt Noll) all time favorites.
+
+The name used in the posting of the [1st winning IOCCC
+entry](http://groups.google.com/groups?q=Obfuscated&hl=en&lr=&ie=UTF-8&as_drrb=b&as_mind=1&as_minm=1&as_miny=1983&as_maxd=18&as_maxm=4&as_maxy=1984&selm=837%40nsc.UUCP&rnum=2&filter=0)
+posting was **I**nternational **O**bfuscated **C** **C**ode **C**ontest or
+**IOCCC** for short.
+
+The posting said '_1st annual_', so in 1985 we held the [2nd IOCCC contest](years.html#1985)
+and the tradition continues as the longest running contest on the Internet.
+
+P.S. Part of the inspiration for making the IOCCC a contest goes to the
+[Bulwer-Lytton fiction contest](http://www.bulwer-lytton.com/).
+
+Jump to: [top](#)
+
+
+
+### Why are some years missing IOCCC entries?
+
+
+Some years, such as 1997, 1999, 2002-2003, 2007-2010, 2016-2017, 2021-2023, no IOCCC was held.
+
+While we try to hold the IOCCC every year, sometime the other demands on the IOCCC judges
+do not permit us to hold a new IOCCC.
+
+The pause during the 2021-2023 period was due to the IOCCC judges developing tools to
+make it much more likely for the IOCCC to be held on a yearly basis later on.
+
+Jump to: [top](#)
+
+
+
+
+### What is the history of the IOCCC website?
+
+
+
+#### In the beginning of www.ioccc.org
+
+The long history of the [official IOCCC website](https://www.ioccc.org) can be
+viewed at the [Internet Wayback Machine Wayback Machine](https://web.archive.org).
+
+One can [view several thousand snapshots showing how the IOCCC website has
+evolved](https://web.archive.org/web/20230000000000*/www.ioccc.org) going back
+as far as [1998 Dec 12
+www.ioccc.org](https://web.archive.org/web/19981212030016/https://www.ioccc.org/).
+
+On 2020 Dec 31, the IOCCC source tree was moved to the [IOCCC winner
+repo](https://web.archive.org/web/20210101211346/https://www.ioccc.org/) on
+[GitHub](https://github.com). From this point on, the [official IOCCC web
+site](https://www.ioccc.org) became a [GitHub Pages](https://pages.github.com)
+website.
+
+#### 2020 Dec 28 bzip2 compressed tarball archive
+
+Furthermore, a bzip2 compressed tarball containing the released
+IOCCC entry source code may be found under the
+[archive/historic](archive/historic/index.html) directory. The file
+[archive-all.tar.bz2](archive/historic/archive-all.tar.bz2) contains
+all years and the individual years are in the form
+`archive/historic/archive-YYYY.tar.bz2`.
+
+These files were obtained from the [Internet Wayback
+Machine](https://web.archive.org) from the [snapshot of the website
+on 2020 Dec
+28](https://web.archive.org/web/20201228005211/https://www.ioccc.org/).
+See [archive/historic/index.html](archive/historic/index.html) for
+details about these bzip2 compressed tarballs.
+
+
+#### 2022 Dec 29 Official IOCCC winner repo
+
+The [Official IOCCC winner repo](https://github.com/ioccc-src/winner)
+was [created on 2020 Dec
+29](https://github.com/ioccc-src/winner/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb).
+
+
+#### 2020 Dec 30 IOCCC content uploaded to GitHub
+
+An [IOCCC judge](https://www.ioccc.org/judges.html) formed a local
+directory [git](https://git-scm.com) repo on **Tue Dec 29 23:48:30
+2020 -0800** via [commit
+28efc67f5dd692a3544708bf7fa26286adb82dfb](https://github.com/ioccc-src/winner/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb)
+and then on **Wed Dec 30 16:57:03 2020 -0800** added a preview of
+1984-2019 via [commit
+c0663537cb88d39b74285a930ff1a668c6d5968b](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b).
+
+On 2020 Dec 30, with [commit
+c0663537cb88d39b74285a930ff1a668c6d5968b](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b),
+the [official IOCCC website of 2022 Dec
+29](https://web.archive.org/web/20221231001721/https://www.ioccc.org/) was
+uploaded into the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner).
+
+
+#### 2020 IOCCC winning entries released using git via GitHub
+
+The [winning
+entries](https://github.com/ioccc-src/winner/commit/9d61fc0fb4a3245afb1435458cfb597fad0e8e6a)
+of the [IOCCC 2020](years.html#2020),
+after a far too long of a delay
+(due in part to a [former IOCCC judge whose resignation was noted on
+2021 Jan 04](https://github.com/ioccc-src/winner/commit/c94fc84c35dc83e3eb9900720b95917a15c27afe) commit)
+from their initial [2020 Jul 25
+announcement](https://web.archive.org/web/20200726232505/http://www.ioccc.org:80/index.html),
+were added by an [IOCCC judge](https://www.ioccc.org/judges.html)
+to their local [git](https://git-scm.com) repository and then were
+merged into the [Official IOCCC winner repo on 2020 Dec
+31](https://github.com/ioccc-src/winner/commit/b1638ff0012964d79ab1c44aa815d3f824f35b6c).
+
+These [2020 IOCCC winning entries](years.html#2020),
+as shown in the [Internet Wayback Machine](https://web.archive.org)
+[snapshot of 2021 Jan 02](https://web.archive.org/web/20210102042216/www.ioccc.org/years.html)
+were the first IOCCC entries to have been released via
+[git](https://git-scm.com) and [GitHub](https://github.com).
+
+
+#### 2020 Dec 30 thru 202y MMM DD - Work on the temp-test-ioccc GitHub repo
+
+Starting on [2020 Dec
+30](https://github.com/ioccc-src/winner/commit/2f20ae8451ada03f4601ac727d10e1d8630861a8)
+edits to the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner) began.
+
+The local [git](https://git-scm.com) repository of an [IOCCC
+judge](https://www.ioccc.org/judges.html) was [edited starting Wed
+Dec 30 16:57:03 2020
+-0800](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b)
+and was occasionally committed to the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner).
+
+The [first accepted pull request](https://github.com/ioccc-src/winner/pull/2) to
+the [Official IOCCC winner repo](https://github.com/ioccc-src/winner) was made
+by [Yusuke Endoh](https://www.ioccc.org/winners.html#Yusuke_Endoh) on [2021 Jan
+5](https://github.com/ioccc-src/winner/commit/84c62c4cbf56ac1351ea91e5019f51103615fda2).
+
+
+Between [Wed Dec 30 16:57:03 2020
+-0800](https://github.com/ioccc-src/winner/commit/c0663537cb88d39b74285a930ff1a668c6d5968b)
+and [Sat Jan 29 21:56:53 2022
+-0800](https://github.com/ioccc-src/winner/commit/098a3e7e04d43e480ecc4b5482c83274e1434002),
+an [IOCCC judge](https://www.ioccc.org/judges.html) made edits to
+their local repository with occasional pushes to the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner) and the [Official
+www.ioccc.org website](https://www.ioccc.org/index.html). After
+that time and until the **Great Fork Merge**, very few changes
+were made to the [Official IOCCC winner
+repo](https://github.com/ioccc-src/winner) and the [Official
+www.ioccc.org website](https://www.ioccc.org/index.html) most of
+which were news updates.
+
+While the [temp-test-ioccc
+repo](https://github.com/ioccc-src/temp-test-ioccc) has history
+going back to [2020 Dec
+29](https://github.com/ioccc-src/temp-test-ioccc/commit/28efc67f5dd692a3544708bf7fa26286adb82dfb),
+the repo was forked on **Sun Sep 18 17:30:00 2022 -0700**. The
+first [push into the temp-test-ioccc
+repo](https://github.com/ioccc-src/temp-test-ioccc/commit/edbc3089e1b755d85a020af7975bbc7df3737a5f)
+occurred on Sun Sep 18 11:15:49 2022 -0700.
+
+At this same time, the [temp-test-ioccc website](https://ioccc-src.github.io/temp-test-ioccc/) went live.
+
+Edits were made by an [IOCCC judge](https://www.ioccc.org/judges.html)
+to their local [git](https://git-scm.com) repository and [were pushed into the temp-test-ioccc
+repo](https://github.com/ioccc-src/temp-test-ioccc/commit/2f20ae8451ada03f4601ac727d10e1d8630861a8)
+and to the [temp-test-ioccc website](https://ioccc-src.github.io/temp-test-ioccc/).
+
+The [first accepted pull request](https://github.com/ioccc-src/temp-test-ioccc/pull/15)
+made directly to the [temp-test-ioccc
+repo](https://github.com/ioccc-src/temp-test-ioccc) on
+[Wed Feb 22 05:44:55 2023 -0800 with commit
+11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec](https://github.com/ioccc-src/temp-test-ioccc/commit/11bb36ac8ce790f32a9a3e5d2131ee12820fb8ec)
+by [Cody Boone
+Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson).
+
+A [decision was made by the
+IOCCC](https://github.com/ioccc-src/temp-test-ioccc/discussions/1918) to
+mostly use frequent commits to individual components of the IOCCC,
+rather than to use occasional site wide massive updates in order
+to improve the tractability of changes made to components of the
+IOCCC such as IOCCC entries although occasionally site wide updates
+were performed in order to address an issue common to many IOCCC
+entries. And while some people prefer infrequent updates to a repo
+the [IOCCC judges](https://www.ioccc.org/judges.html) believe
+the ability to trace changes with commit messages is important.
+
+Changes to the IOCCC content included things such as:
+
+* Moving IOCCC entries into their own separate directories.
+* Establishing a detailed manifest for an IOCCC winning entries.
+* Fixing lots and lots of typos.
+* Fixing Makefiles and code to allow for nearly all winning entries to be
+compiled with/in modern systems.
+* Fixing Makefiles and code to allow for nearly all winning entries to run
+with/in modern systems.
+* Reworking the Makefiles to use a consistent set of rules.
+* Reworking the Makefiles specific to the gcc and clang C compilers.
+* Replacing the various hint files with a index.html markdown (from README.md
+files) that is more consistent across IOCCC years.
+* Generating HTML content from markdown files and JSON data files via a [set of
+tools and scripts](bin/index.html).
+* Setting up a system whereby authors of IOCCC entries may update their own
+contact information via a [GitHub pull
+request](https://github.com/ioccc-src/winner/pulls).
+* Setting up to generate the top level [years.html](years.html) file via the
+[gen-years.sh](%%REPO_URL%%/bin/gen-years.sh) tool.
+* Setting up to generate the top level [authors.html file](authors.html), renamed
+from `winners.html`, via the [gen-authors.sh](%%REPO_URL%%/bin/gen-authors.sh) tool.
+* Making use of a new and improved [IOCCC CSS](%%REPO_URL%%/ioccc.css) for website consistency
+* Etc.
+
+
+
+#### 202y mm dd The Great Fork Merge
+
+
+As of 2024 Sep 1 [temp-test-ioccc
+repo](https://github.com/ioccc-src/temp-test-ioccc)
+there were [5858 commits ahead](https://github.com/ioccc-src/winner/compare/master...ioccc-src:temp-test-ioccc:master)
+of the [IOCCC winner repo](https://github.com/ioccc-src/winner).
+
+On 202y mm dd, the temporary repo was merged back into the [IOCCC winner
+repo](https://github.com/ioccc-src/winner) resulting in many, many substantial improvements
+to the [official IOCCC website](https://www.ioccc.org).
+
+Jump to: [top](#)
+
+
+
+
+### How has the IOCCC size limit rule changed over the years?
+
+
+
+The IOCCC size rule has changed over the years.
+
+In later years, Rule 2 was split into two parts. These two parts of Rule 2 are:
+
+* Rule 2a: Overall size limit of "prog.c"
+* Rule 2b: Size of "prog.c", w/o counting certain types of characters
+
+
+#### IOCCC 1984-1985
+
+
+**NOTE**: The size rule was actually rule 1.
+
+* Rule 2a: 512
+* Rule 2b: n/a
+
+
+#### IOCCC 1986-1987
+
+
+**NOTE**: The size rule was actually rule 1.
+
+* Rule 2a: 1024
+* Rule 2b: n/a
+
+
+#### IOCCC 1988-1991
+
+
+**NOTE**: The size rule was actually rule 1.
+
+* Rule 2a: 1536
+* Rule 2b: n/a
+
+
+### IOCCC 1992-2000
+
+
+* Rule 2a: 3217
+* Rule 2b: 1536
+
+
+### IOCCC: 2001-2012
+
+
+* Rule 2a: 4096
+* Rule 2b: 2048
+
+
+### IOCCC 2013-2020
+
+
+* Rule 2a: 4096
+* Rule 2b: 2053
+
+
+### IOCCC 2024-date
+
+
+* Rule 2a: 4993
+* Rule 2b: 2503
+
+Jump to: [top](#)
+
+
+
+### What is the **Great Fork Merge**?
+
+
+The **Great Fork Merge** was when thousands of changes that had been applied to the
+[temp-test-ioccc repo](https://github.com/ioccc-src/temp-test-ioccc) was applied
+to the [Official IOCCC winner repo](https://github.com/ioccc-src/winner) causing the
+[Official IOCCC website](index.html) to be updated into its present form.
+
+See the
+FAQ on "[Great Fork Merge Date](#great_fork_merge_date)"
+for more information.
+
+Jump to: [top](#)
+
+
+
+
+### What is an IOCCC BOF?
+
+
+
+The term **IOCCC BOF** stood for **International Obfuscated C Code
+Contest Birds Of a Feather**. It was a special session held at the
+general [USENIX conference](https://www.usenix.org/conferences), usually
+immediately after the BSD BOF, where the winners of a new IOCCC were
+announced in the early years of the IOCCC.
+
+Jump to: [top](#)
+
+
diff --git a/next/guidelines.html b/next/guidelines.html
index 80f3fd60e..783c75a71 100644
--- a/next/guidelines.html
+++ b/next/guidelines.html
@@ -396,10 +396,12 @@ They are are provided as a VERY TENTATIVE hint at what
MIGHT be used in the next IOCCC. In some cases they might
even be a copy of the guidelines from the previous IOCCC.
See our
-FAQ on “rules, guidelines, tools feedback”.
+FAQ on “rules, guidelines, tools feedback”
as well as our
FAQ on “asking questions”
-about these guidelines.
+about these guidelines. You might also find the
+FAQ in general useful, especially the
+FAQ section “How to enter: the bare minimum you need to know”.
The IOCCC is closed
The IOCCC is NOT accepting new submissions at this time. See the
IOCCC winning entries page for the entries that have won the
@@ -424,7 +426,7 @@ writing by contacting the judges.
IOCCC Guidelines version
IMPORTANT: Be SURE to read the IOCCC rules.
diff --git a/next/guidelines.md b/next/guidelines.md
index bb00671fc..9033e14e6 100644
--- a/next/guidelines.md
+++ b/next/guidelines.md
@@ -9,10 +9,12 @@ MIGHT** be used in the next IOCCC. In some cases they might
even be a copy of the guidelines from the previous IOCCC.
See our
-FAQ on "[rules, guidelines, tools feedback](../faq.html#feedback)".
+FAQ on "[rules, guidelines, tools feedback](../faq.html#feedback)"
as well as our
FAQ on "[asking questions](../faq.html#question)"
-about these guidelines.
+about these guidelines. You might also find the
+FAQ in general useful, especially the
+[FAQ section "How to enter: the bare minimum you need to know"](../faq.html#enter).
# The IOCCC is closed
@@ -48,7 +50,7 @@ writing by [contacting the judges](../contact.html).
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
diff --git a/next/rules.html b/next/rules.html
index 2e77232d8..37bc3dd2a 100644
--- a/next/rules.html
+++ b/next/rules.html
@@ -396,10 +396,12 @@ They are are provided as a VERY TENTATIVE hint at what
MIGHT be used in the next IOCCC. In some cases they might
even be a copy of the rules from the previous IOCCC.
See our
-FAQ on “rules, guidelines, tools feedback”.
+FAQ on “rules, guidelines, tools feedback”
as well as our
FAQ on “about asking questions”
-about these rules.
+about these rules. You might also find the
+FAQ in general useful, especially the
+FAQ section “How to enter: the bare minimum you need to know”.
The IOCCC is closed
The IOCCC is NOT accepting new submissions at this time. See the
IOCCC winning entries page for the entries that have won the
@@ -424,7 +426,7 @@ writing by contacting the judges.
IOCCC Rules version
IMPORTANT: Be sure to read the IOCCC guidelines.
diff --git a/next/rules.md b/next/rules.md
index af5ae7c71..aa39d952f 100644
--- a/next/rules.md
+++ b/next/rules.md
@@ -9,10 +9,14 @@ MIGHT** be used in the next IOCCC. In some cases they might
even be a copy of the rules from the previous IOCCC.
See our
-FAQ on "[rules, guidelines, tools feedback](#feedback)".
+FAQ on "[rules, guidelines, tools feedback](#feedback)"
as well as our
FAQ on "[about asking questions](../faq.html#question)"
-about these rules.
+about these rules. You might also find the
+FAQ in general useful, especially the
+[FAQ section "How to enter: the bare minimum you need to know"](../faq.html#enter).
+
+
# The IOCCC is closed
@@ -48,7 +52,7 @@ writing by [contacting the judges](../contact.html).
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
FAQ 0.5: How may I comment or make a suggestion on IOCCC rules, guidelines and tools?
+How can I comment or make a suggestion on IOCCC rules, guidelines and tools?