APL Wiki:Content guidelines: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Line 5: Line 5:
== What is APL? ==
== What is APL? ==


The APL Wiki is focused on APL, which is somewhat problematic because APL has no agreed-upon definition. We might say in a strict sense that APL, or "an APL", is a programming language that encodes [[Iverson notation]] in a text-based and machine-executable form, using the conventions established by the first such language, [[APL\360]]. However, because the APL Wiki should serve even remote corners of the APL world, we would like to take a broader definition of APL that also includes developed later that some people consider part of APL and some don't. Other definitions of APL or APL features might include:
The APL Wiki is focused on APL, which is somewhat problematic because APL has no agreed-upon definition. We might say in a strict sense that APL, or "an APL", is a programming language that encodes [[Iverson notation]] in a text-based and machine-executable form, using the conventions established by the first such language to be broadly available, [[APL\360]]. However, because the APL Wiki should serve even remote corners of the APL world, we would like to take a broader definition of APL that also includes later developments that some people consider part of APL and some don't. Other definitions of APL or APL features might include:
* The original [[IBM]] implementation of APL, [[APL\360]]
* The original [[IBM]] implementation of APL, [[APL\360]]
* [[Ken Iverson]]'s ideas of what APL should look like, realised in [[APL\360]], [[SHARP APL]], [[Rationalized APL]], [[A Dictionary of APL]], and [[J]]
* [[Ken Iverson]]'s ideas of what APL should look like, realised in [[APL\360]], [[SHARP APL]], [[Rationalized APL]], [[A Dictionary of APL]], and [[J]]

Revision as of 10:00, 7 May 2020

APL Wiki's content policy is based on Wikipedia's. In general, Wikipedia's content policies and content guidelines are a good place to start if you're not sure what material belongs on the APL Wiki.

We do some things differently in order to support APL Wiki's focus on APL.

What is APL?

The APL Wiki is focused on APL, which is somewhat problematic because APL has no agreed-upon definition. We might say in a strict sense that APL, or "an APL", is a programming language that encodes Iverson notation in a text-based and machine-executable form, using the conventions established by the first such language to be broadly available, APL\360. However, because the APL Wiki should serve even remote corners of the APL world, we would like to take a broader definition of APL that also includes later developments that some people consider part of APL and some don't. Other definitions of APL or APL features might include:

The APL Wiki takes no position on what can be called "APL", and this question is not important to its content (when in doubt, a controversial APL such as J may be called a "language" rather than an "APL" or "dialect"). Instead, an editor should consider the task of balancing how central a concept is to APL against its prominence and placement in the APL Wiki. See #Due weight below.

Notability

APL notability is not Wikipedia notability. While the APL Wiki adopts many of Wikipedia's notability guidelines, the concept of notability itself should not be shared between the two sites: then they would need to have the same content! While Wikipedia documents topics of general interest, the APL Wiki documents a specific interest: APL, and topics of interest to APLers.

Article notability

The APL Wiki is interested in documenting several things, which are considered inherently notable:

  • The APL language and array language family (e.g. Transpose)
  • Influences on APL's development (e.g. John Scholes)
  • The community of APL users (e.g. FinnAPL)
  • Applications of APL to interesting topics (not information about these applications but the applications themselves; e.g. Fast Fourier transform)

In general, being an APL user or knowing APL is not notable. To be interesting to an APLer, a user needs to have contributed to APL or the APL community in some way. So SimCorp, despite being notable enough for Wikipedia and a major user of APL, is probably not APL notable.

Because we consider some topics inherently notable, it is possible for a topic to be notable but not verifiable. If there is truly no verifiable information about a topic then it has no place on the APL Wiki, but our verifiability guidelines are more flexible than Wikipedia's and even material which is difficult to verify may be allowed. See #Verifiability.

Content notability

In general, only the APL-related aspects of a topic are notable. IBM has done a lot of things, but only its effects on APL or on APL developers belong in its APL Wiki article. Anything about IBM which is more generally notable by Wikipedia's standards should be on Wikipedia! This constraint is relaxed somewhat for articles on topics which are not found on Wikipedia. Keep the article focused on APL but it is fine to include expanded biographical or historical information for such topics. Relationships between two topics covered in the APL Wiki, even if they are not because of APL, should be included as well.

Due weight

Because the definition of APL is not rigorous (a particular language may be more or less APL-like), the notability guidelines above can be interpreted more strictly or more loosely. To determine whether content belongs on the APL Wiki at all, a loose interpretation is better. For determining how content is presented, however, editors should consider not just whether a topic is related to APL but how closely related, or central to APL, it is. Even a recent and niche development like Reverse Compose has a place in the Wiki, but most information about the primitive should remain on its own page and mentions on more central pages should be qualified in order to make it clear the primitive is not available in most APLs. In contrast, a topic like Outer Product can be mentioned anywhere, and omitting it from related articles like Inner Product or Each would be a mistake in emphasis.

To be central to the concept of APL, a language needs adherence to APL principles and prominence in terms of its user base or in the APL community. This is a modification of Wikipedia's due and undue weight policy, which relies on prominence alone. Adherence is measured roughly by the definitions in #What is APL?: languages that satisfy more of these definitions, and more closely, adhere better to the concept of APL. Prominence is determined by how many people use a language, how many of these are part of the APL community, and how strong an influence the language has had on the development of APL.

Keep in mind that many APL users are not very visible to the outside world and don't publish anything about their usage (especially after the decline of the APL conference). For example, you are unlikely to see recent material about APL2, but it is still widely used, and it's reasonable to think these users will look to the APL Wiki as a resource. As an editor you aren't expected to know every prominent language in order to contribute, but please think twice before removing material about a language you don't think is prominent. Evidence that the language is still in use might include major companies using it, active support forums, or significant development on the language indicating that it makes enough revenue to support this development. Significant historical use is also a sign, as usage of a particular APL rarely dies out quickly.

A language can be prominent even if it is very rarely used, or in extreme cases never implemented. This is the case for research languages that are important in developing features later picked up by more prominent APLs. For example, A Dictionary of APL, while only an incomplete description of how one APL might work, strongly influenced J and subsequently Dyalog APL. Extended Dyalog APL, used infrequently in the code golf community, has also had a significant influence on Dyalog APL. The APL Wiki should include information about these languages because they will likely continue to influence APL's direction in the future. However, it's also important to make sure that this information, which is of theoretical interest, doesn't interfere with practical content. It should generally be placed lower in articles or sections of articles, and the text should make it clear that this material probably doesn't apply to the reader's APL of choice, usually by specifying which language or languages it is taken from.

Verifiability

We make use of Wikipedia's definition verifiability, but expand the definition somewhat to allow some kinds of material that would otherwise remain undocumented.

The results of evaluating an expression in any array language, even one which is not readily available to the public, are automatically considered verifiable. Please actually perform this evaluation if you are relying on this rule! Results are also considered verifiable if they may be clearly derived from the language's published documentation.

Mathematical statements about APL with proof are considered to be verifiable. If you derive a new relation between APL primitives, and can prove it to a capable APLer, then feel free to put it on the wiki. Make sure you are clear about exactly which functions you are using, including distinguising between variations on APL primitives and noting any modifications or restrictions need to be made for the proven statement to hold.