{
  localUrl: '../page/24j.html',
  arbitalUrl: 'https://arbital.com/p/24j',
  rawJsonUrl: '../raw/24j.json',
  likeableId: '1078',
  likeableType: 'page',
  myLikeValue: '0',
  likeCount: '0',
  dislikeCount: '0',
  likeScore: '0',
  individualLikes: [],
  pageId: '24j',
  edit: '5',
  editSummary: '',
  prevEdit: '4',
  currentEdit: '5',
  wasPublished: 'true',
  type: 'comment',
  title: '"(This part was written firs..."',
  clickbait: '',
  textLength: '3586',
  alias: '24j',
  externalUrl: '',
  sortChildrenBy: 'recentFirst',
  hasVote: 'false',
  voteType: '',
  votesAnonymous: 'false',
  editCreatorId: 'EricBruylant',
  editCreatedAt: '2016-02-27 14:19:38',
  pageCreatorId: 'EricBruylant',
  pageCreatedAt: '2016-02-27 14:06:28',
  seeDomainId: '0',
  editDomainId: 'PaulChristiano',
  submitToDomainId: '0',
  isAutosave: 'false',
  isSnapshot: 'false',
  isLiveEdit: 'true',
  isMinorEdit: 'false',
  indirectTeacher: 'false',
  todoCount: '0',
  isEditorComment: 'false',
  isApprovedComment: 'true',
  isResolved: 'false',
  snapshotText: '',
  anchorContext: '',
  anchorText: '',
  anchorOffset: '0',
  mergedInto: '',
  isDeleted: 'false',
  viewCount: '185',
  text: '(This part was written first, but the conclusion/outline seemed more valuable than this background thought) I realized why I'm struggling to come up with good ideas for this one: I only really know much about MW's system.\n\nSo, did a bit of research into how it's done on other software. They mostly do similar things, and all major wiki software includes some form of templating, but many have different takes on the core idea (e.g. [Cofluence](https://www.youtube.com/watch?v=WaUVBnxJJkY) is clearly optimized for non-technical users).\n\nMisc thoughts/findings:\n\n* Some wikis have non-global templates.\n  * This seems mostly bad. It would allow short domain specific templates, but having the same text display differently seems like a much worse problem\n  * However, it does bring up the question of how to handle templates between subdomains. Probably allow templates from the main arbital repository to be called from private groups, with slightly different syntax (a ! at the start of the name or something)?\n* Templates are generally stored separately from pages, but often use the same edit interface.\n* Most wikis allow multiple layers of transclusion.\n  * This can be very useful for maintaining consistency and ease of template creation, but can also lead to unreadable mazes with 8 layers of template which are inefficient to unpack every time a page is served (MW gets around this through extensive caching).\n  * \n* There are several different attempts to make templates more user friendly. The main approach is having a flexible form which allows you to input variables, rather than doing it directly as text.\n  * The variables are usually stored in page text, but they could be stored separately.\n  * In text has the advantage of being editable from the normal edit window, but the disadvantage of having a lot of scary visual clutter at the top of edit windows (a lot of users would get put off by [this](https://en.wikipedia.org/w/index.php?title=London&action=edit), for example).\n  * Separately has the advantage of having structured information stored in a form which invites complex searching and analysis, and would work by having templates show up differently in the edit window, with the option to click on them to edit their variables via popup form.\n  * I suspect separate storage is significantly better, but requires extra UI work. Wikimedia's use of [Wikidata](https://www.wikidata.org/wiki/Wikidata:Introduction) rather than adoption of [SMW](https://www.semantic-mediawiki.org/wiki/Help:Introduction_to_Semantic_MediaWiki) and their creation of the [TemplateData](https://www.mediawiki.org/wiki/Extension:TemplateData) extension both feel like attempts at approximating the advantages of it, patching over a bad design decision which got baked in.\n\nSome other links:\n\n* [An advanced example of Semantic Mediawiki's edit with form](https://wikiapiary.com/w/index.php?title=Effective_Altruism_Wiki&action=formedit) ([form definition](https://wikiapiary.com/w/index.php?title=Form:Website&action=edit)).\n* [Basic SMW form](https://wikiapiary.com/w/index.php?title=Farm:Wikimedia&action=formedit) ([form definition](https://wikiapiary.com/w/index.php?title=Form:Farm&action=edit))\n* [An informative discussion about whether Wikimedia should add StringFunctions](https://phabricator.wikimedia.org/T8455)\n* [FOSS Wiki Template docs](http://foswiki.org/System/TemplateTopics)\n* [XWiki](https://www.xwiki.org/xwiki/bin/view/FAQ/How+can+I+create+a+new+page+based+on+a+form) [Docs](https://www.xwiki.org/xwiki/bin/view/FAQ/How+can+I+create+a+new+page+based+on+a+form)',
  metaText: '',
  isTextLoaded: 'true',
  isSubscribedToDiscussion: 'false',
  isSubscribedToUser: 'false',
  isSubscribedAsMaintainer: 'false',
  discussionSubscriberCount: '0',
  maintainerCount: '0',
  userSubscriberCount: '0',
  lastVisit: '2016-02-27 22:41:46',
  hasDraft: 'false',
  votes: [],
  voteSummary: 'null',
  muVoteSummary: '0',
  voteScaling: '0',
  currentUserVote: '-2',
  voteCount: '0',
  lockedVoteType: '',
  maxEditEver: '0',
  redLinkCount: '0',
  lockedBy: '',
  lockedUntil: '',
  nextPageId: '',
  prevPageId: '',
  usedAsMastery: 'false',
  proposalEditNum: '0',
  permissions: {
    edit: {
      has: 'false',
      reason: 'You don't have domain permission to edit this page'
    },
    proposeEdit: {
      has: 'true',
      reason: ''
    },
    delete: {
      has: 'false',
      reason: 'You don't have domain permission to delete this page'
    },
    comment: {
      has: 'false',
      reason: 'You can't comment in this domain because you are not a member'
    },
    proposeComment: {
      has: 'true',
      reason: ''
    }
  },
  summaries: {},
  creatorIds: [
    'EricBruylant'
  ],
  childIds: [],
  parentIds: [
    'arbital_community_input',
    '20h'
  ],
  commentIds: [],
  questionIds: [],
  tagIds: [],
  relatedIds: [],
  markIds: [],
  explanations: [],
  learnMore: [],
  requirements: [],
  subjects: [],
  lenses: [],
  lensParentId: '',
  pathPages: [],
  learnMoreTaughtMap: {},
  learnMoreCoveredMap: {},
  learnMoreRequiredMap: {},
  editHistory: {},
  domainSubmissions: {},
  answers: [],
  answerCount: '0',
  commentCount: '0',
  newCommentCount: '0',
  linkedMarkCount: '0',
  changeLogs: [
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7971',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '5',
      type: 'newEdit',
      createdAt: '2016-02-27 14:19:38',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7970',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '4',
      type: 'newEdit',
      createdAt: '2016-02-27 14:19:07',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7969',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '3',
      type: 'newEdit',
      createdAt: '2016-02-27 14:16:46',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7965',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '2',
      type: 'newEdit',
      createdAt: '2016-02-27 14:07:03',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7964',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '1',
      type: 'newEdit',
      createdAt: '2016-02-27 14:06:28',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7963',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '0',
      type: 'newParent',
      createdAt: '2016-02-27 14:06:06',
      auxPageId: '20h',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '7961',
      pageId: '24j',
      userId: 'EricBruylant',
      edit: '0',
      type: 'newParent',
      createdAt: '2016-02-27 14:06:05',
      auxPageId: 'arbital_community_input',
      oldSettingsValue: '',
      newSettingsValue: ''
    }
  ],
  feedSubmissions: [],
  searchStrings: {},
  hasChildren: 'false',
  hasParents: 'true',
  redAliases: {},
  improvementTagIds: [],
  nonMetaTagIds: [],
  todos: [],
  slowDownMap: 'null',
  speedUpMap: 'null',
  arcPageIds: 'null',
  contentRequests: {}
}