Skip to content
jgonggrijp edited this page Mar 24, 2013 · 4 revisions

"Philosophy" here means something like why do we do this, what is our purpose, what do we stand for, how do we prefer things to be. Obviously this is something that you could keep on rambling about for many pages, but the following quote from the forum post that started it all seems to have captured it well (do take note of the comments below):

THE GOAL
  • To have an enjoyable time collaborating with fellow xkcdians on an ongoing coding project.
  • To write code that is interesting or amusing for others to read, or both.
  • To write programs that give you a fuzzy "xkcd feeling" when used, because they produce amusing, interesting or touching output (or a combination).
  • To make a cozy, messy web of programs that may sometimes call other programs, possibly in unanticipated ways.
  • To go crazy.
THE MEANS
  • A publicly hosted repository that people can easily get write access to. For example on GitHub.
  • A permissive license that applies to all parts of the project. Perhaps a variant of the MIT license with some alternative formulations to make it more xkcd-like.
  • Platform neutrality: terminal only, programs interoperate with exit statuses, pipes and file redirection. This is kind of unixy but it works fine on Windows as long as you keep it simple.
  • Many small though not necessarily independent programs, rather than one monolithic thing. This makes it easier for people with little time or short attention spans to join in, while still allowing for collaboration.
  • All (free of charge) programming languages are welcome and encouraged. The more diverse the better.
  • An open-minded attitude: all ideas are interesting. There are no limits on what a program may do, except that it must not be malware.
  • A more-or-less fixed, simple directory structure so things can be found and automated.
  • A common build system so all compiled stuff can be installed in one go, for example with CMake.

Some comments.

  • This is philosophy, not rules.
  • It's just the initial proposal by Julian, not established consensus. However, generally participants seem to find most or all of these points agreeable.
  • It's more about the process than about the result.
  • It's OK if you prefer to keep both feet firmly on the ground (rather than going crazy).
  • "Terminal only" certainly isn't a requirement, as long as you remember that it is easier to make platform-neutral. Platform-neutrality in itself should be considered a soft requirement.
  • "Exit statuses, pipes and file redirection" (a.k.a. plumbing) isn't actually that unixy, most operating systems including Windows do it.
  • Apart from programming languages and ideas, we're also open to people. Anyone is welcome.

See also

Clone this wiki locally