User:Dantman/GE Extended/Technical Overlay

Information was requested on the technical setup for wiki in the WGEP so this overlays technical information for the different types of wiki in the project such as their SITENAMEs' subdomains, interwiki, etc... And also shows how the wiki relate to each other in a technical sense.


 * Please note: In addition to all this all the subpages of User:Dantman/GE Extended detail things such as Hacks, and extensions for the project. Though also note that a number of them are not yet complete.

=Technical Legend=
 * SITENAME/Project Namespace: Refers to the SITENAME which is also the Project namespace for that wiki.
 * Title: Refers to the name that people refer to the wiki by, Anime:Template:GENetwork outputs this info for templates, etc... to use. Because all Wikia use the same SITENAME as their Project namespace, is used to output the name of the site into things like templates instead of  Though unfortunately this doesn't work with most MediaWiki messages.
 * Domain: This refers to the name the wiki would be given, which is the subdomain of the wiki. It's given in full url from http://???.wikia.com
 * Interwiki: Because the links link to more than just normal things, each top-level wiki (Not necessarily lower-level wiki) has a special interwiki link added to the interwiki map. Before the GENetwork is installed that link just points to the wiki like how Anime: ends up at http://en.anime.wikia.com/wiki/$1
 * Altered interwiki: This refers to the change made to the interwiki link after the GENetwork extension is installed. The alteration of this interwiki is due to the fact that the GENetwork extension uses a special prefix. On Animepedia this is Anime: so Anime:SOMETHING on a normal wiki would link to http://en.anime.wikia.com/wiki/Anime:SOMETHING and the GENetwork extension would then handle it. If it's got something to do with a world you could end up at http://naruto.wikia.com/wiki/ETHING or if it has nothing to do with an existing world the Anime: would just be stripped and you'd be at http://en.anime.wikia.com/wiki/SOMETHING so even though Anime: is added to the interwiki, Anime:Main Page will still link to the same location in the end while Anime:Naruto:Naruto Uzumaki suddenly links to w:c:Naruto:Naruto Uzumaki.

=Classes= There are 2 main classes of wiki in the project:
 * Top-Level
 * Top-level wiki document on a subject section in general, this being Graphical Entertainment, Anime, Manga, Cartoons, or Comics.


 * These wiki use a subpage structure to document on series.
 * This means that Full Metal Panic's article on Full Metal Panic! would be at FMP/Full Metal Panic!.
 * This allows series to be documented on as if they were their own mini-wiki without clashing with the names in other series.
 * The basepage of a series (eg: FMP) is a World Page which dynamically lists the content pages on the series.
 * These wikis' numbers are limited to the topics that the project covers plus one for the top of the project itself. This means that when covering Anime, Manga, Cartoons, and Comics there is a total of 5 top-level wiki in the project.
 * Because they are limited they can have extensions added to them for the project without worry of the need to install things on a large number of wiki.
 * The GENetwork extension allows redirecting in special ways for the project. Anime:Naruto would link to Anime:Naruto but Anime:Naruto: would link to w:c:Naruto: and Anime:Naruto:Naruto Uzumaki would link to w:c:Naruto:Naruto Uzumaki. Conversely, Anime:Nanoha would link to Anime:Nanoha while Anime:Nanoha: would link to Anime:Nanoha and Anime:Nanoha:Nanoha Takamichi would link to Anime:Nanoha/Nanoha Takamichi.
 * Because pages are subpages of a world page, if that world name was changed moving all the pages could prove an issue. This is why MovepageEx allows for all Subpages, and Talkpages(With subs) to be moved with an article to a new name.
 * DataTables allows things such as episode lists to be saved to a table like structure. This information can automatically be outputed into pages such as the /Episodes subpage of a world and also used to generate the Episode nav, which otherwise 4 pages would need to be edited to change a episode title.
 * Some modifications allow that Nanoha/Nanoha Takamichi title to look like Nanoha > Nanoha Takamichi.
 * The GENetwork also autoprotects /Tech/Admin subpages and uses /Tech/Admin/common.css and /Tech/Admin/skinname.css subpages to create styles which are specific to a world. In a way letting a world appear much like it's own Mini-Wiki.
 * General Interwiki links are used in place of the w:c:subdomain syntax. Animepedia already has the Anime: interwiki link, and Manga: for the Manga Wiki. These are used because using them will not only link to these wiki when the GENetwork extension is setup.
 * Lower-Level
 * Lower-level wiki document on an entire specific series, this being something like Anime, Manga, Games, etc... in Naruto.

Examples of lower-level wiki in the project would be Narutopedia, InuYasha Wiki, and Ghost in the Shell Wiki.
 * Each of these wiki only document a series, they don't have anything to do with Anime, Manga, etc... in general.
 * These wiki link to top level wiki in the project for general info such as what Anime is.
 * Each of these wiki use the Sidebar to link back to the top-level wiki in the project and also their lists.
 * Because of how numerous they are in comparison to the top-level wiki effort is made to make as few extensions as possible which would need to be installed on them.

=Wiki Setup= =Top-Level=

Graphical Entertainment Wiki
It does not exist yet, but once the Animepedia stops being the only top-level wiki in the project it cannot be considered the ideal place to place all the shared content. Thus a new wiki is needed for content which is generic for all wiki in the project.
 * Some content may include:


 * Shared Templates (These are currently shared from the Animepedia using AutoTemplateBot)
 * Shared Images (These are currently mirrored from the Animepedia using ImageMirrorBot)
 * Shared UserBoxes (These are currently shared from the Animepedia using UserBoxBot)
 * Global Styles and Scripts (These are currently included into all WGEP wiki from the Animepedia's Anime-Common.css, Anime-Common.js, and Anime-Monobook.css)
 * Global Policies (The Fair use policy and global Copyrights, GFDL, etc... Information pages are currently located on the Animepedia)
 * Global Help (The Global help is currently on the Animepedia, it was created using WikiMedia's PD Help to start it off. Information in Wikia's standard help pages which are created on new wiki will soon be added to the Global WGEP help and linked to by wiki in the project)
 * Company info (Companies which make stuff such as Anime and Manga are not specific to one, thus a Company may make Anime and Manga and not have enough split to be considered good enough for one half to be on the Animepedia and the other elsewhere. So instead the topmost wiki in the project holds that kind of information)
 * Genre and Definitions (Terms such as Anime and Manga would be defined in the topmost wiki. In addition genre such as han'yo are not specific to one type of thing so they are in the global area as whell. Highly used definitions such as Shikigami and Shinigami are also defined in the global area)
 * Crossover lists (While the Animepedia lists anime, and the others would also list their respective stuff, the topmost wiki would list all series and have pages which list if they have Anime, Manga, etc... Versions which can be looked over.)

Technical

 * SITENAME/Project Namespace: Graphical Entertainment
 * Title: Graphical Entertainment Wiki
 * Domain: http://graphicalentertainment.wikia.com
 * Interwiki: GE:...
 * Altered interwiki: http://graphicalentertainment.wikia.com/wiki/GE:$1

Animepedia
The Animepedia already exists and is the current top-level wiki in the project. When the Graphical Entertainment Wiki is created all the shared content currently stored at the Animepedia will be moved there.

When it was adopted the Anime: SITENAME/Project Namespace was changed to Animepedia: this is because Anime: not only being an interwiki which would mean that Anime: doesn't work everywhere in the project (Shared templates try to use generic code to make them work everywhere), but other than that, Anime: is a prefix which will be required for use by the GENetwork extension.

Technical

 * SITENAME/Project Namespace: Animepedia
 * Title: Animepedia
 * Domain: http://en.anime.wikia.com
 * Interwiki: Anime:...
 * Altered interwiki: http://en.anime.wikia.com/wiki/Anime:$1

Manga Wiki(Mangapedia?)
The Manga( Wiki|pedia) is not part of the WGEP, but it is inactive (for over 3 months) and Manga is Phase 2 of the WGEP, therefore the adoption of this wiki is the very reason that the Graphical Entertainment Wiki would need to be created.

Currently the Manga Wiki states that it isn't for only Manga, but it documents Anime and Manga. Which in a way is counterintuitive because by stating that, and also saying that the old Anime Wiki could also document Manga means that you have two Wikia on exactly the same topic. This means that you have 2 wiki competing on Wikia itself, and the reason Duplicate requests are rejected and general wiki requests are rejected when they show up on Requests is for that very reason. Therefore upon adoption the Manga wiki would only document Manga. Also, being a top-level wiki just like the Animepedia it would be converted to a Subpage structure.

There's still a little debate on if techincal things should be changed; Currently the name that everyone calls it is the Manga Wiki similarly to how the Animepedia used to be the Anime Wiki. But the Manga Wiki's project namespace is MangaWiki while this doesn't conflict with the GENetwork needing Manga: as a prefix, it's a little confusing. Visually Manga Wiki should be used with a space in between, without that people could end up using Manga Wiki in the confusion and place something in the project namespace (Similarly to how the MMKB's Mega Mang Knowledge-base project namespace ends up making it unused and people use MMKB: and MMWiki: placing things in the (Main) namespace). However as Sitename for the wiki in the requests (A separate requests section has been setup for when someone wants the WGEP to start a wiki) states that the Wiki affix should be removed from the SITENAME/Project Namespace, which is why InuYasha Wiki uses InuYasha as a SITENAME/Project namespace. But that would turn MangaWiki into Manga Wiki into Manga and it would then conflict with the prefix the GENetwork needs. This is similar to the reason the Anime Wiki took on the name Animepedia. And going along with this it may be a good idea for the Manga Wiki to become the Mangapedia upon adoption. If this would be so, then it would fit in quite well if all the top-level wiki tried to use the -pedia affix with the exception of the Graphical Entertainment Wiki.

Technical

 * SITENAME/Project Namespace: ???
 * Title: ???
 * Domain: http://en.manga.wikia.com
 * Interwiki: Manga:...
 * Altered interwiki: http://en.manga.wikia.com/wiki/Manga:$1

=Lower-Level=

Narutopedia
The Narutopeda has been with the WGEP since the start, and is currently the most active wiki in the project. The fact that it is highly active is what leads it to be the basis for most WGEP policies and decissions. Of course, other wiki joining would bring them into the decission making equation fairly.

The wiki's title and Project namespace fits in properly with the guidelines at Sitename for the wiki because Naruto is the topic, it uses the -prefix affix to make Narutopedia and that is kept for the Project Namespace making it Narutopedia: which fits in with the guidelines.

Technical

 * SITENAME/Project Namespace: Narutopedia
 * Title: Narutopedia
 * Domain: http://naruto.wikia.com

InuYasha Wiki
The InuYasha Wiki has been with the WGEP since the start, unfortunately no actual community has built itself up there yet. Things are still shared there like normal, and in the case that people start to go there, more of it will be developed with the project properly. The project is currently waiting for the community to grow enough so that editors can spill into the wiki.

The wiki's title and Project namespace fits in properly with the guidelines at Sitename for the wiki because InuYasha is the topic, it uses the Wiki affix to make InuYasha Wiki and that is removed for the Project Namespace making it InuYasha: which fits in with the guidelines.

Technical

 * SITENAME/Project Namespace: InuYasha
 * Title: InuYasha Wiki
 * Domain: http://inuyasha.wikia.com

Ghost in the Shell Wiki
The Ghost in the Shell Wiki is a new addition to the project. It is a fresh wiki with no changes, so the fact that is is joining gives the opportunity to develop the tactics it will take to covert a fresh Wikia wiki, into a fresh WGEP Wikia wiki.

The current project namespace is Ghost in the Shell Wiki, though a request has been made to drop this to GITS. Though the WGEP is undecided on whether semi long anime names like this should be full name, no Wiki affix, or abbreviated name. If GITS is used, then if the Full Metal Alchemist Wiki joins it may be requested to change it's Project namespace to FMA.

A request has also been made to setup a proper portal at http://ghostintheshell.wikia.com which will make http://ghostintheshell.wikia.com/wiki/ direct to http://en.ghostintheshell.wikia.com/wiki/ just like how the anime portal is at http://anime.wikia.com and http://anime.wikia.com/wiki/ directs to http://en.anime.wikia.com/wiki/

Technical

 * SITENAME/Project Namespace: GITS
 * Title: Ghost in the Shell Wiki
 * Domain: http://en.ghostintheshell.wikia.com

=Content Sharing= A number of templates, images, styles, and scripts are shared; This is one of the few core things of the WGEP, the fact that all this backend stuff is handled in a global manor which means that new wiki to the project don't need to worry about this and instead can focus on content creation. Additionally it's made so that it's all done in a manor similar on all wiki, which means that it's quite easy for a user to start editing at a brand new wiki in the project with little effort. Also it sets a standard over wiki of similar subjects making a strong base on how to do things.

Currently a number of bots are used to share the shared content of the WGEP and also includes are used to share scripts and styles.
 * AutoTemplateBot shares templates.
 * ImageMirrorBot mirrors images (note that a MW1.10a glitch has stopped the ability for this to work anymore)
 * UserBoxBot shares UserBoxes so editors can use userboxes on all project wiki they go to.
 * CleanDelete bot deletes pages, this is just so that when a shared page is removed from one of the other bots the actual pages can be removed. This was used when Image:Forum new.gif was deleted of wiki due to the fact that the image is no longer needed because all code uses the shared image in the place of any local one.
 * All wiki's MediaWiki:Common.js, MediaWiki:Common.css, and MediaWiki:Monobook.css use includes to reference the global stuff.

However with all this, I have entertained a few ideas for shared content: Currently CSS is included using @include ""; in the .css areas, and because some browsers don't like the @include inside of another @include the includeCSS function is also used in the JavaScript to include this. However doing something like that means that a style is included twice... furthermore it could upset how things actually dominate. Perhaps at some point it may be better to start using the two global @include-s and the global s in the code of wiki instead of using this other stuff. It would also allow the global stuff to appear before the local stuff and would avoid things such as needing to use includeJSCode and escape all the JS you are using or place it in another page. Also, the WGEP uses a technique with the global stuff which lets stuff be split into multiple files, but all included into one without the issue of loading to many pages. But this requires &templates=expand to be added to whatever global includes are done.

Someone also mentioned the hypothetical thought of making some Wikia share a article database. I thought this would be pretty interesting, I also thought up some other things;
 * While before I would think that the truth is code only needs to be made to read and write to other databases (I did something like that with semi-shared permissions) if they were actually all thrown into the exact same table and a new column wiki was added and each wiki was given it's own numerical id, then the code was modified to read things by adding that id it would become possible to take say, a page from the Narutopedia, and use Anime: as a prefix to actually move a page from one wiki to another. And yet, even though they share the same database, and in fact table, they actually don't appear to be the same wiki. In fact, you could never visually tell that they came from the same location.
 * Additionally I thought of the files themselves. All the stuff in the includes/ is the same, the top-level wiki also use the same extensions/ as each other, and the lower-level wiki use the same extensions/ as each other, same with many other files.
 * If it was configured so that a /..web directory../wgep/ spot contained one wiki setup and all the VHosts which wiki in the WGEP used were instead directed to that directory a very interesting thing could be done:
 * Defining a map $wgDomainRedirects where the key is a domain, and it's value is where it would redirect to, extra names could be added and the first issue of some wiki with multiple domains could be addressed. In fact, not only that but something like:

$wgDomainRedirects['gits.wikia.com'] = 'en.ghostintheshell.wikia.com';
 * Would allow wiki to actually have aliases which only needed a vhost, and a single line of code. So long name wiki could also be referred to by short names.
 * If instead of making LocalSettings.php define a single wiki but use a series of tests, it would be possible to cause a set of wiki, to be defined to use one single set of code
 * $wgTopLevelWiki would define what wiki were top level wiki, and what weren't. Which would define what extensions should show up (They would all be installed in the shared extensions/ directory, but because you need LocalSettings.php to reference them anyways) so something like this:

$wgTopLevelWiki = array( 'graphicalentertainment.wikia.com', 'en.anime.wikia.com', 'en.manga.wikia.com' ); //Extensions //DynamicPageList extension require_once( "$IP/extensions/DynamicPageList2/DynamicPageList2.php" ); //LabeledSectionTransclusion extension require_once ( 'extensions/LabeledSectionTransclusion/lst.php' ); require_once ( 'extensions/LabeledSectionTransclusion/lsth.php' ); require_once ( 'extensions/LabeledSectionTransclusion/compat.php' ); //RightsControl extension require_once( "$IP/extensions/RightsControl/RightsControl.php" ); //DataTables require_once( "$IP/extensions/DataTables/DataTables.php" ); if( in_array( $domain, $wgTopLevelWiki ) ) {//Top-level //DataTables Special page for top-level wiki require_once( "$IP/extensions/DataTables/SpecialDataTables.php" ); //GENetwork require_once( "$IP/extensions/GENetwork/GENetwork.php" ); switch( $domain ) { case 'en.anime.wikia.com': $egGEPrefixes[] = 'Anime'; break; case 'en.manga.wikia.com': $egGEPrefixes[] = 'Manga'; break; default: $egGEPrefixes[] = 'GE'; break; }	//MovepageEx extension require_once( "extensions/SpecialMovepageEx.php" ); } else {//Lower-level }
 * Would make extensions differ between top and lower wiki.
 * Another bit of code would be setup to define the normal non-shared things:

switch( $domain ) { case 'graphicalentertainment.wikia.com': $wgSitename = 'Graphical Entertainment'; $wgWikiId = 1; break; case 'en.anime.wikia.com': $wgSitename = 'Animepedia'; $wgWikiId = 2; break; case 'en.manga.wikia.com': $wgSitename = 'Mangapedia'; $wgWikiId = 3; break; case 'naruto.wikia.com': $wgSitename = 'Narutopedia'; $wgWikiId = 6; break; case 'inuyasha.wikia.com': $wgSitename = 'InuYasha'; $wgWikiId = 7; break; case 'en.ghostintheshell.wikia.com': $wgSitename = 'GITS'; $wgWikiId = 8; break; default: header( "Location: http://notreal.wikia.com" ); break; }
 * Sharing the files at least like this not only could things be shared easier, but it would solve the whole issue of attempting to install extensions and do changes for dozens of wiki. Just a few lines of code and something is setup for all the wiki in the project.
 * Technically that's not the only thing you could do. Theoretically it's possible to make MediaWiki use the Database so thoroughly that you wouldn't even half to define anymore VHosts or add anymore Filesetups or edit LocalSettings.php's anymore other than possibly to create a new extension/structure base set to use.

I also thought of shared permissions. I know wikia does some sort of semi-sharing which lets the staff flag work everywhere but not the other flags. If ge-sysop and ge-bureaucrat flags were created with duplicates of the sysop and bureaucrat flags, but made to be shared. And since only WGEP wiki would recognize their existence, it would work as project wide permissions, but not global. Though I don't know how different my semi-shared permissions setup is from Wikia's. Perhaps even these could be allowed: $wgGroupPermissions['ge-bureaucrat']['rc-mk-bot' ] = true; $wgGroupPermissions['ge-bureaucrat']['rc-de-bot' ] = true; $wgGroupPermissions['ge-bureaucrat']['rc-de-sysop'] = true;

I've also thought of various other things such as using and Interimage: special namespace which works much like Image: except works in the form Interimage:ID:imagename.ext where ID is the short name of a wiki defined in the files. So Interimage:Naruto:Wiki.png would include the Narutopedia's logo into a page on another wiki in the WGEP. Furthermore, because they share the same database the imagelinks and whatlinks here could easily tell you what other wiki in the project use that image.