User:Anaminus/API Documentation Changes
The following sections contain proposed changes to Roblox API documentation (e.g. Class Reference, RBX.lua.Instance (Object), etc).
To discuss changes to these proposals, use the talk page.
Page Name Conventions
This section proposes changes to the naming of pages involving API documentation.
To distinguish and separate API documentation from other pages, a namespace called "API" (or other chosen name) should be added.
- Expand: Why do they need to be distinguished and separated?
The API namespace should have subpages enabled, so that member pages can utilize the feature.
Goals
- Move API pages out of the main namespace
- Disambiguate member pages
- Simplify naming conventions
Drawbacks
- Need to contact admin with access to wiki server
New naming conventions
- A class in the API namespace:
-
API:Instance
- removed weird RBX.lua prefix; title is distinguished by API namespace
- removed (Object) suffix; was never necessary
- easy to use with page name variables (i.e. {{BASEPAGENAME}}) for automated linking
- Members in the API namespace:
-
API:Instance/Clone API:Instance/Name API.Instance/Changed
- utilizes MediaWiki's subpages; more semantically correct; allows usage of page name variables (i.e. {{SUBPAGENAME}})
- removed (MemberType) suffix; title is disambiguated by API namespace and base page
- The first letter of subpages are case-sensitive (remove and Remove are different)
- Members that share the same name, but belong to different classes, are properly separated
Other information
LocalSettings.php: |
---|
# API namespace
define("NS_API", 200); #define NS_API variable at namespace index 200
define("NS_API_TALK", 201); #define NS_API_TALK variable for talk page
$wgExtraNamespaces[NS_API] = "API"; #add the API namespace as the name "API"
$wgExtraNamespaces[NS_API_TALK] = "API_talk"; #add the API talk namespace
$wgNamespacesWithSubpages[NS_API] = true; #enable subpages for API
$wgNamespacesWithSubpages[NS_API_TALK] = true; #enable subpages for API talk
|
Page Content Conventions
The following subsections contain proposed changes to the content of pages involving API documentation.
Each section describes a basic outline for content of these pages. If an outline is agreed upon, then the actual appearance and structure can be discussed.
Object pages
The current implementation of object pages scatters the object's information across multiple pages, then trancludes it all into the one page. This is done for the purpose of automating the display of class inheritance. That is, so the object's page displays the members of the classes it inherits from. Unfortunately, this model introduces complications. Not only does it make editing the object's information difficult for writers, it creates a large overhead of cascading page transclusions, increasing the page's load time and workload to the server.
Goals
- Unify an object's information onto one page.
- Make object pages more simple to create and edit.
- Reduce load time by minimizing transclusions.
Drawbacks
- No more automated class inheritance.
- This can be made up for by teaching users about inheritance.
- Overall structure of pages are no longer maintained by templates, which means that the structure of every page can no longer be changed with one edit.
- If a well-thought-out structure is used, making global changes shouldn't be necessary. Appearance can be handled by CSS, as it should be.
- Obviously, every page will have to be rewritten to conform to the new model.
Object page outline
- An info box, which contains information about the class that is common to all classes;
- the class's explorer icon
- the class this class inherits from
- whether the class is preliminary or deprecated
- whether the class can be created with Instance.new
- whether the class can be acquired with GetService
- a relevant image, if applicable (right now this exists as filler, not sure if it's any good to have)
- A list of the class's subclasses
- Tables containing the unique* members of the class, separated by member type (method, property, event, callback). Each table contains,
- a member icon, including whether it is protected or locked
- a member name, linking to the member's page
- a simple description; describing what it is without going into too much detail; ignores arguments, returns, types, parameters, etc, as they will be described on the member's page
- For each member type, a link to the superclass's members of the same type (emphasize inheritance)
- Noteworthy API differences, such as the class being structural
- Bugs, including member bugs
- Links to pages that are relevant to the class, such as tutorials
- If the class is apart of a series of similar classes, include those (probably as a navbox)
*Excludes inherited members. A strong indication of the class's superclass should be made
Mockup of possible layout: [1]
Member pages
While the current structure of member pages is fine, there is room for improvement. Part of simplifying the process of creating and editing pages is defining what the page should contain.
Goals
- Define a concrete outline for member pages
Member page outline
- An info box, containing information about the member. Such information can include:
- An icon, with protection/lock indication
- The member's type, arguments, parameters, etc
- The class the member belongs to
- Some kind of link to a page that explains the member's type (that is, method, property, event, etc)
- Also, it should be possible to transclude the info box into other pages (for tutorials and whatnot)
- A detailed description, covering all of the member's arguments, parameters, etc (where applicable)
- Examples; ideally, these should actually be useful
- Bugs related to the member
- Links to other relevant pages
General disambiguation
When members of different classes share the same name, how should they be disambiguated?
Example: The "Changed" member occurs in many classes. How should the Changed page be handled?
- Disambiguate: Page lists out all pages that need disambiguating
- Great for many pages that need disambiguating
- Annoying when there are only 2 or 3 pages
- Redirect: Page redirects to the most commonly used page, where disambiguation will occur
- Great for few pages
- Bad for many pages
- Mix of both: When there are only a few pages to disambiguate, use #2, when there are many, use #1
- Great for few pages
- Great for many pages