Dwarf Fortress Wiki:Magmawiki

From Dwarf Fortress Wiki
Jump to navigation Jump to search

magmawiki is the project to replace the mediaWiki engine.

Source code is hosted on Github.

IRC channel for software development (NOT dwarf fortress questions / discussions, check here for those channels!) is #magmawiki on freenode.org

Discussion of the magmawiki project on the forums is here

Versioning[edit]

0 . 0 . 17 . 0 . 246
Major version number.
Level of magma (0-6/7), new major version when it reaches 7.
Minor feature version.
Bug/security fixes on current "major.magma.minor" version combo.
Number of expletives uttered during development.

Conceptual screenshots / sketches[edit]

Screen shot 2010-05-11 at 5.08.20 PM.png loginbox design (modal dialogs) THE FONT SIZE IS BUGGING ME AUGH THE PAIN

Planned Versions[edit]

Version 0.1 Features[edit]

  

  • Header
    • Tabs
      • Article Actions (Read / Edit / History)
      • Talk
      • Menu
      • Favorite
      • Special tabs
    • User Bar
  • Articles
    • Optimistic Locking
    • Actions
      • Create (New)
      • Read (Show)
        • Parser (Mediawiki)
          • Article Links
      • Update (Edit)
    • Named URIs (slugs)
      • Immutable until page move (NYI)
      • Mutable titles, as long as same slug is generated
    • Revisions
      • Counter cache
      • History
      • Differences view
  • Missing unit tests
  • Users
    • Account creation
    • Login / Logout (sessions)
    • Account management
      • Localization options
      • Change password
      • Change email
    • IP Tracking
    • Revision / Article edit tied to user
  • Localization backend stuff

Version 0.2 Features[edit]

  

  • Articles
    • Actions
      • Delete
    • Optimistic Locking Merges (I don't remember what I meant by this page merge screen for changes when changes are blocked by optimistic locking)
    • Page moves
    • Namespaces
    • Page level protection
    • Redirects
  • Users
    • Captcha
    • User Permissions
    • User Permission Levels
  • Search
    • Basic article name search

Version 0.3 Features[edit]

  

  • Articles
    • Parser (Textile / Markdown?)
    • Templates
      • Mediawiki
      • Python
    • Subpages
    • Fulltext search

Version 0.4 Features[edit]

  

  • Articles
    • Live edit preview
    • Mediawiki Import functionality
    • Sandboxes
      • Sandbox merging

Points of discussion[edit]

  • Mass deletion of a users contribs (perhaps ranges and checkbox methods?)
  • Talk forums -- see this page
  • Article ratings
  • Line / Word comments (post it notes / discussion thread reference points?)
  • Alternative url implementations (RESTful state w/o /[new, edit, create, etc])
  • Side by side rendering
[09:17am] epitron: side-by-side markup/rendered-html
[09:17am] epitron: you click "preview" and it re-renders it
[09:18am] epitron: and if you scroll, it scrolls both windows in synch
[09:18am] epitron: like the way MELD does
[09:18am] locriani: that's good
[09:18am] epitron: the preview will scroll a lot less sometimes
[09:18am] epitron: like for your version number table monstrousity
[09:18am] locriani: and the cursor position in the markup window
[09:18am] locriani: or in the html window
[09:18am] locriani: will highlight the appropriate element in the other window
[09:18am] epitron: yeah!
[09:18am] epitron: cursor position would be harder
[09:18am] epitron: but it would be slick
  • AUGH PASSWORDS (Mediawiki: ":B:"+ salt (31 bit, hex between 0 and 7fff ffff inclusive) + ":" + md5(salt + "-" + md5(password)) )
  • file uploads, html5 display methods, etc (video, <canvas> tags, media, acceptable formats, etc)
  • Document management stuffs
  • Inline-comments
12:00 <@epitron> i think i just solved the marking problem
12:01 <@epitron> 1) the match is saved as plaintext with an integer
12:02 <@epitron>   1.a) the integer represents which occurance of that match you've marked
12:02 <@epitron> 2) html can be stripped to find the same position in the markup doc
12:03 <@epitron> 3) to deal with new edits, the integer can increment when a diff
                 contains the plaintext match
12:03 <@epitron> (a diff before the marked area)
12:03 <@epitron> (we can ignore diffs afterwards)
12:03 <@epitron> sound good?
12:04 <@epitron> it gets around the round-tripping problem by reducing everything to
                 good old plaintext :D
12:04 <@epitron> i believe that's a reliable 1:1 mapping
12:05 <@epitron> just gotta normalize it by doing gsub(/\s+/, ' ')
13:27 <@epitron> the only piece remaining is how to persist the inline comments across
                 revisions
13:28 <@epitron> the marked area will be active on a revision up until it's overwritten
13:29 <@epitron> (there's a little edge case where a marking is overwritten, then a
                 few revisions down the road you revert back to an earlier copy with
                 the marking... it should be re-connected to that document)
13:29 <@epitron> s/document/revision/

Considered Features[edit]

Items are color coded. Green means very important, yellow means fairly important, and red means near feature, but we need to get the other stuff done first.

  • Categories
  • Templates
  • Talk forums (could temporarily use article system as stop-gap)
  • User accounts
    • Permission levels
    • Blocking
    • Per-user JS
    • Per-user CSS
  • Search
  • Articles
    • History
    • Diff view
    • Redirects
    • Per-page JS
    • Per-page CSS
  • Namespaces
    • Aliases
  • User Preferences
    • Default search namespace
    • Change password (if there are users)
    • Signature? (with forums not really needed)
  • Maintenance
    • API for bots
    • Disabling edits to large categories of pages
    • Automated spam filtering