Mylyn/Rich Editor For Wiki Markup
Rich Editor For Wiki Markup
This page contains the project proposal created by [Harshana Martin] for the idea of "Rich Editor For Wiki Markup" from the [GSoc 2010 idea list]. I am extreamly happy to have comments from the viewers.
Mylyn WikiText project provides extensible framework and tools for parsing, editing and presenting lightweight markup. As an important component of the WikiText project, Wiki Text Editor provides the ability to create and edit wiki files written in several wiki markup languages such as MediaWiki, Textile, Confluence, TracWiki and TWiki. But the problem with the existing wiki text editor is, users need to have knowledge about these wiki mark-ups or they have to use the cheat sheets when they are using the editor. This makes the existing wiki text editor less user friendly and less usable. This project aims to provide a Rich Wiki Text editor such as WYSIWYG editor which can parse multiple wiki markup languages and HTML so that the wiki text editor users do not need to have a prior knowledge about the wiki language mark-ups. The stake holders of the project will be software developers as well as other users who need to create wiki files.
Eclipse Mylyn is the Application Lifecycle Management (ALM) framework for Eclipse and it provides task management tools for Eclipse, A task focused interface and a set of Agile, ALM and developer collaboration tools. Mylyn is consists of set of sub projects such as Tasks, Context, SCM, Build, Docs and etc. Mylyn WikiText project is placed under the Docs sub project.
Mylyn WikiText project provides extensible framework and tools for parsing, editing and presenting lightweight markup. WikiText project allows its users to create wiki files in several wikitext languages such as MediaWiki, Textile, Confluence, TracWiki and TWiki and it provides facility to convert these wiki files to several file types such as HTML, Eclipse Help, DocBook, DITA and XSL-FO and PDF.
Mylyn WikiText provides an editor for editing markup languages within Eclipse, and integrates with the Mylyn task editor causing it to be markup aware. This wiki text editor is consists of 2 views as source view where we edit the source using wiki mark-ups and the preview view which shows the preview of the currently editing wiki file.
As mentioned above, wiki text editor source view is the place where user can edit wiki files. When user editing a wiki file, he/she has to use the wiki text language mark-ups within the editor to do the formatting. As an example if the user needs to mark the heading he/she has to write as “h1. This is an example heading” and the result in the preview will be as “This is an example heading” and if user need to creating numbering he/she has to do it as following.
- Number 1
- Number 1.1
- Number 2
and the preview will be as
1 1. Number 1.1
2. Number 2
So in this case I have created a textile wiki file and I have used textile wiki mark-ups in the source view to create this sample wiki document. But this is not going to be very much user friendly as it requires entering the wiki mark-ups to create and edit this wiki page. So the wiki text editor user will spend more time searching for the correct wiki mark-ups in the cheat sheet or in some other reference and he/she will spend less time in creating and editing the actual document. This will lead to a productivity decrement of the Wiki text user as well as will make user very much uncomfortable when using it. So that’s why wiki text project needs a new rich wiki text editor such as WYSIWYG editor as an alternative for the current wiki text editor so that users are able to create wiki documents without using actual wiki mark-ups of their wiki markup language. This will allows users to work in a very familiar and user friendly editor and mean while they will be able to see the preview as current editing document in the preview view. This new rich test editor will still allow users to fall back to the current wiki text editor which uses wiki mark-ups to edit the document in cases the user needs to do some advanced wiki formatting, etc. This might be useful for the users who are already familiar with wiki mark-ups and prefer to use them in creating and editing the documents. This is a common practice among experienced HTML designers and wiki writers.
WikiText component works by parsing the mark-ups using the Regular Expressions specific to the markup language and then converting the mark-ups to HTML or other formats by selecting a specific DocumentBuilder implementation. As an example if we create the wiki file using Textile markup language and we want to convert it to a HTML file format then the instances of the MarkupParser class in the org.eclipse.mylyn.wikitext.core.parser package will be instantiated with the markupLanguage attribute with the Textile language which is in the org.eclipse.mylyn.wikitext.textile.core.TextileLanguage class and the builder attribute with the HtmlDocumentBuilder which is in the org.eclipse.mylyn.wikitext.core.parser.builder package. MarkupParser class has method parseToHtml() method and it is used to convert the wiki text to HTML output.
In this project the aim is to implement a WYSIWYG editor which can be used create,edit and parse wiki files of multiple markup language types such as MediaWiki, Textile, Confluence, TracWiki and TWiki as well as non markup language HTML which posses the markup language features. This editor will work on a model such that the model is created by parsing the wiki mark-ups using DocumentBuilder and this will be a DOM model for the selected wiki mark-ups. Since Mylyn WikiText has set of parsers for markup languages, the editor can be used to any of them in this way. When saving and generating preview, the editor will run a markup specific emitter that would generate markup source from the DOM. In this way it would be relatively easy to support wiki markup and HTML with the same editor. If a non compatible construct or non compatible markup is detected, then the rich editor will fall back to the current WikiText editor.
So the project is consists of 2 major sections.
- Implementing the WYSIWYG editor UI.
- Implementing the editor backend including the DOM model, parsers, DocumentBuilder and integrating them with the existing system.
When I am carrying out the project I will do it in several steps.
- Studying the WikiText codebase closer and get a thorough understanding of how the things are happening right now with the existing editor.
- Identify the good features that I should adapt and the defects that I should fix and solve.
- Implementing the WYSIWYG editor UI with the exiting WikiText JFace Viewer.
- Implementing the DOM model, parsers, DocumentBuilders and integrating them with the WikiText project.
Project Scope is consists with few things.
- Implementing the WYSIWYG editor UI.
- Implementing the WYSIWYG editor backend tasks.
- Integerating the WYSIWYG UI with the Backend tasks.
- Integrating with the existing WikiText Project.
- A WYSIWYG rich Editor for WikiText project.
- Relevant documentations for the API, extension points.
|M1||May 3, 2010||Identify the good features that I should adapt and the defects that I should fix and solve.|
|M2||May 24, 2010||Studying the WikiText codebase closer and get a thorough understanding of how the things are happening right now with the existing editor.|
|M3||June 14, 2010||Implementing the WYSIWYG editor UI with the exiting WikiText JFace Viewer and Testing.|
|M4||June 30, 2010||Implementing the DOM based Model for parsing the wiki markups & Testing.|
|M5||July 19, 2010||Implementing/Improving DocumentBuilders for the new editor & Testing.|
|M6||july 26, 2010||Integrating the DOM model with the current wiki markup parsers with DocumentBuilders & Testing.|
|M7||August 2, 2010||Integrating the UI with the Backend coding & Testing.|
|M8||August 14, 2010||Integrating the WYSIWYG rich wiki text editor with the Mylyn WikiText project & Testing|
- Providing support for every feature current editor supports.
- Backward compatibility for the previous versions of the Mylyn and Mylyn WikiText.
- Implementing DOM model which supports wiki markup languages and HTML.