Rosetta Code:Policy

From Rosetta Code
This page is a draft. Really. I'm just trying to write down the policies that everyone's been following so that we have somewhere to point people to when they ask about the rules. The first sentence is the whole core of it; only read the rest if you want to get into detail and to help figure out what that detail means in practice. I may have these wrong…

It is policy on Rosetta Code that pages be on topic and edited in a way that is respectful of others' contributions.

Page Topics

Pages should be on the topic of one of these:

  • Pages be directly linked with RC's stated goal of providing wide ranging programming chrestomathy.
    • Any genuine programming language is welcome; each is strongly encouraged to have a language category page to gather links to the tasks implemented in that language.
    • Any suitable library may be used for a solution to a task.
    • Solutions to tasks should be idiomatic. That is, they should represent how the user community of that programming language would wish to see the task be solved by a new, low-experience, or experienced-in-another-language programmer. Additional comments are often useful. Note that:
      • Using a suitable library or framework can often be an idiomatic way to achieve a task, and so is welcomed.
      • Multiple solutions of a task in one language may be welcome provided they are substantively different from each other.
      • Showing output from the task solution, provided it is not excessively long, is usually welcome and often a required part of the solution; check the task description to be sure.
      • Implementations that are links to code elsewhere are discouraged as there is no guarantee that those links will remain valid. (Curation is hard enough right now!)
    • Tasks should be unique — we don't need duplicates! — and should be challenges that are practical to achieve in multiple programming languages. It is recommended that they be things that can be achieved in at most a page or two of code, as more complex tasks attract far fewer solutions. (Tasks usually start as {{draft task}}s, and graduate to being {{task}}s once they have four implementations in different languages, preferably with at least two of those implementations being completely independently done from the task specification.)
      • Tasks should not compare performance of solutions in different languages, as it is exceptionally difficult to do that fairly and meaningfully. (For one thing, the speed of everyone's hardware varies wildly, as does the nature of the other things on their system.)
      • Tasks should not encourage very short solutions (“Code Golf”) as these are usually not idiomatic. This is explicitly outside the RC remit; it is a non-goal.
      • Tasks should not cause performance or security problems on any service. That's just not nice!
  • Pages be appropriate meta-pages (e.g., a category of language implementations, a property description, a talk page that discusses issues relating with the associated main page, a template for making it easier to contribute).
  • Pages be user pages for contributing users (current or historic) and not be used for purposes other than those related to RC content.
    • This may include some promotion of a programming language or library where those would themselves be appropriate topics for RC, but blatant promotion should be restricted to user pages and to promotion of things which are relevant to this site.
    • This may include sub-pages used for experimentation leading to development of a new task or solution to a task, but these should be kept as child pages of the user page of the user working on them.
  • Politics, medicine, and financial products are all examples of topics which are always off-topic on all pages, especially when accompanied by links to external sites. This site has a clear goal, and that goal is not being an omnium gatherum of random web links.

Off-topic contributions will be considered reason for immediate removal of the content (by the administrative team using an appropriate mechanism such as rolling back the content or deleting the page) and banning the user creating that content.


Pages that are the titles of tasks (and draft tasks) should always have the first letter in their name capitalized (this might even be enforced by Media Wiki) and other words should not be capitalized except if they are proper nouns or abbreviations, which should always be capitalized. Thus, “Start from a main routine” (only the first letter is capitalized), “Conway's Game of Life” (“Game of Life” is capitalized that way on Wikipedia, and “Conway” would be as well, but that's capitalized because of the first letter rule) and “URL encoding” (“URL” is an abbreviation). Where an abbreviation is done in a non-standard way by convention, the correct form (that is, the form used by the people who originally defined it) should be used.

Language and library pages should use the name of the language/library as their name (but see below also).

Other pages ought to also conform to these rules, but enforcement might not be as rapid there. (The Village Pump is always capitalized like that.)

Respectful Editing

Deletion of content (especially of “unrelated” content) other than for reasons linked with the above policies will result in a suitable page rollback and may result in a ban. Typically, first bans for such activity will be for short periods of time to allow the administrative team to contact the user and ask them to be respectful of others' contributions. Repeated and/or willful disrespectful edits will lead to extended bans.

Substantive edits of a user page should not normally be done (correcting a broken link or template would typically not be considered substantive). Note that user pages created for the purpose of spamming are exempted from this. Other users are encouraged to flag such spam pages for deletion by administrators with a {{remove}} and delete the links themselves as such links are used to add Rosetta Code credibility to dubious sites. (As well as loosing RC credibility in the eyes of sites such as wikipedia).

Other Matters

Pages should normally be in English, as the user community served is principally English-speaking. This is not because we wish to exclude other languages, but rather because this is by far the most common language used by programmers world-wide. If you wish to contribute in another human language, make your contribution and contact us so we can help. (For example, it might be that we will work together to get a good translation of the contribution and to help someone set up a version of RC in another language. We'll approach this on a case-by-case basis.)

User pages may be in the owning user's preferred (human) language.

By contributing, you agree to allow the contribution to be distributed under the GFDL and that you are permitted to allow that. You may use the contributions of others under the terms of that license. (Note that you can use your own contributions elsewhere as you see fit; granting a license to RC and its readers does not change that.) You do not have the right to have nobody ever edit your contributions; this is a wiki, not your private blog or local source repository.


We aim to have the site accessible by schools and colleges, some of which have automatic monitors which may ban pages or sites with profanity so profanity should be avoided. Our policy on the Brainf*!k language for example is to never use its name in full. (Yes, there is an esoteric programming language with that name.)


If you can't be friendly, at least be civil. Community matters!