Grants:IEG/MediawikiFS

From Meta, a Wikimedia project coordination wiki

status: not selected

Individual Engagement Grants
Individual Engagement Grants
Review grant submissions
review
grant submissions
Visit IdeaLab submissions
visit
IdeaLab submissions
eligibility and selection criteria

project:


project contact:

Vedmaka, god.vedmaka(_AT_)gmail.com, post@mediawikifs.com

participants:


grantees: Alexey Klimovich


summary:

Create tool for representing any mediawiki installation contents as mounted local drive (virtual file system) with view/create/edit (via Mediawiki API) support and basic IDE utilizing tool advantages.

engagement target:

MediaWiki

strategic priority:

Improving Quality

total amount requested:

5000 USD


2013 round 2

mediawikiFS — virtual user-mode file system for mediawiki


Project idea[edit]

This proposal affects the Mediawiki engine that powers the wikis of the Wikimedia Foundation.

Problem[edit]

Working close with Mediawiki engine and gearing many wikis on it i figured out a problem:

  • Part of Mediawiki functions is server-side, this means it should be edited/developed from IDE by modifying php-code.
    • For example: changing LocalSettings, creating extensions to bring some project-specified customizations.
  • Another part (primary structure) is client-side, this means it should be edited from browser by logging in as editor on site.
    • For example: creating/editing of categories, templates, semantic forms, etc.

This factors is breaking development process consistency.

Especially, this is important for Semantic Mediawiki / Semantic Forms users.

Solution[edit]

What if we can make process of developing site with Mediawiki more consistent?

The idea and goal of that proposition is to give mediawiki users and developers tool to help them in managing mediawiki contents and structure. Program which can represent mediawiki contents (pages, categories, templates, etc) in OS native format: files and folders mounted as local driver (virtual file system) and easily can be viewed and edited with any text editor[1] or IDE[2]. Also, this way (virtual file system) have a lot of other very interesting ways to use.

Project already have very early working proof-of-concepthttp://mediawikifs.com

Feel free to download and test it (mount demonstration wiki).

Screenshots[edit]

Mediawiki FS workflow (working via Mediawiki API):

How mediawiki FS works

For example: on this screenshot Mediawiki installation at wiki.mediawikifs.com mounted as /mnt/mw and main page editing via VIM.

Editing remote mediawiki page as file in VIM

on this screenshot Mediawiki installation at wiki.mediawikifs.com mounted as local drive R:\ and main page editing via text editor.

Editing remote mediawiki page as file

Please pay attention to other screenshots at right side of page.

MediawikiFS prototype window
MediawikiFS prototype window
MediawikiFS linux preview
MediawikiFS linux preview 1
MediawikiFS editing page in SublimeText
MediawikiFS editing page in SublimeText
MediawikiFS mounted
MediawikiFS mounted
MediawikiFS folder structure
MediawikiFS folder structure
MediawikiFS integration with PhpStorm
MediawikiFS integration with PhpStorm
MediawikiFS linux preview
MediawikiFS linux preview 2
MediawikiFS linux preview
MediawikiFS linux preview 3

Project goals[edit]

Main goal of this project is to make possible great idea of Mediawiki IDE, with syntax highlighting and autocompletion. Very simple and effective way to create new wikis and manage existing ones.

Main step in this idea realization is to create tool named MediawikiFS which can represent mediawiki site content as file system with ability to manipulate mediawiki contents (pages) like files and folders. Mediawiki pages can be attached as virtual disk and viewed/edited/created/deleted from any IDE, any favorite text editor.

Mediawiki IDE based on mediawikifs and SublimeText


Mediawiki IDE based on mediawikifs and PhpStorm

Such combination of MediawikiFS concept and Mediawiki IDE will provide cool advantages:

  • Simple overview over wiki contents.
  • Browse your wiki pages like folders and files.
  • Edit pages with syntax highlight and autocompletion.
  • Export pages from one wiki and import to another with simple drag&drop.
  • Create pages backup? Simple archive them.
  • Upload files and images to Mediawiki with drag&drop.
  • Use external tools for bulk pages, for example:
    • Search and replace
    • Collect some statistical information/patterns
    • Backup articles texts
    • Create automatic pages sync/replication via rsync in Linux
  • Flexibility - do with wiki page anything you can do with files.

Part 2: The Project Plan[edit]

Project plan[edit]

Scope:[edit]

Scope and activities[edit]

I will spend time on developing MediawikiFS and Mediawiki IDE projects.

Result of the project will be:

  • Two versions of MediawikiFS application, allowing users to mount any mediawiki installation as local drive (with authentication support):
    • Windows application on C# language with user interface (WPF/Windows Forms for Windows)
    • Linux version based on fuse-python library (CLI script)
  • Sublime Text and Jetbrains PhpStorm highlight and autocompletion files.
  • Screencast guide.
  • User-documentation.

Tools, technologies, and techniques[edit]

  • Fuse-python library for linux
  • Jetbrains PyCharm
  • Visual Studio 2013
  • Dokan library
  • NSIS installation scripts
  • C# programming language
  • Python programming language
  • Mediawiki API

Budget:[edit]

Total amount requested[edit]

5000$ (or equivalent in Russian Roubles).

Budget breakdown[edit]

Budget will be used to pay for my time spent on coding and testing program. There is budget to roadmap mapping (approx. one month per version):

  • Pre-alpha version (preview) — 1000$
    • Virtual disk/folder can be mounted to system.
    • Single server supported.
    • Mediawiki pages from NS_MAIN namespace can be listed in directory.
    • Contents of pages can be viewed (read-only mode)
    • Every page have right size and edit time fetched.
    • Console interface.
  • Alpha 1 — 1000$
    • Contents of pages can be edited and saved.
    • Display pages from NS_TEMPLATE, SF_NS_FORM, NS_CATEGORY and NS_PROJECT namespaces.
    • Possibly support NS_FILES namespace.
    • New pages can be created.
    • Revision conflict check.
    • Mediawiki authentication supported.
  • Alpha 2 (performance) — 1000$
    • Introduce caching mechanism (Reduce latency, big deal)
    • Optimize api/http calls (bulk procedures, big deal)
    • General program optimization.
  • Beta 1 — 1000$
    • Multiple concurrent servers support (user can mount many mediawikis at time).
    • Introduce user options.
    • Write highlight and autocompletion files for Sublime Text and PhpStorm
  • RC 1 (UI) — 1000$
    • Migrate from CLI to WPF/Windows Forms (for Win version).
    • Design and program user friendly interface (for Win version).
    • Create NSIS installer package (for Win version).
    • Create python installer package (for Linux version).
    • Write documentation.
    • Record screencast.

Intended impact:[edit]

Target audience[edit]

  • Primary audience are Mediawiki developers/administrators, who wants create project structure in favorite IDE.
  • Mediawiki users, who working with Semantic Mediawiki extensions (Semantic Mediawiki+Semantic Forms) and have hard times maintain project structure (Forms, Semantic Properties, Templates).
  • Everyone else, who using Mediawiki and want it contents can be handled as files.

Fit with strategy[edit]

  • Primary fit is making developing/maintaining site based on Mediawiki is more consistent and faster.
  • Improving quality by allowing Mediawiki users and developers to edit/view/create wiki contents in favorite text-editor or IDE.
  • Speed up project structure creation/maintaining.

Sustainability[edit]

  • MediawikiFS can be improved to support a lot of interesting features:
    • Versioning support (pages history)
    • easy file uploads in wiki
    • user offline edit pages, then synchronize when user back online (dropbox way)

Measures of success[edit]

  • Number of MediawikiFS downloads/installs.
  • Number of Mediawiki installations using MWFS ( if user opt-in to track this )
  • Community feedback and attraction.

Participant(s)[edit]

Discussion[edit]

Community Notification:[edit]

  • WikiMedia General mailing list (nabble link)
  • Semantic mediawiki user mailing list (nabble link)
  • Semantic mediawiki developer mailing list (nabble link)
  • Facebook Mediawiki developers group (link)

Endorsements:[edit]

Do you think this project should be selected for an Individual Engagement Grant? Please add your name and rationale for endorsing this project in the list below. Other feedback, questions or concerns from community members are also highly valued, but please post them on the talk page of this proposal.

  • Community member: add your name and rationale here.
  • This sounds like a great idea. MediaWiki pages as flat files would make them far more accessible for external editing, and if other features you plan for are implemented, I think this program has a lot of potential. Arcane21 (talk) 01:03, 21 September 2013 (UTC)Arcane21
  • This would make for much more efficient editing and management of a wiki (or groups of wikis). --Rob Kam (talk) 12:08, 27 September 2013 (UTC)